{"version":3,"file":"main.cadc59d54e6b2a5c511e.js","mappings":"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wGAAwG,2BAA2B,cAAc,uEAAuE,0BAA0B,mBAAmB,MAAM,yBAAyB,6LAA6L,0BAA0B,yGAAyG,0BAA0B,mBAAmB,KAAK,yCAAyC,4LAA4L,yCAAyC,8PAA8P,6BAA6B,sEAAsE,6CAA6C,4BAA4B,0BAA0B,mEAAmE,SAAS;AACnlD;AACA;;;;;;;;;ACHA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjVA;;;;;;;ACAA;;;;;;;ACAA","sources":["webpack://retail/./modules/angular-spinner/angular-spinner.js","webpack://retail/./src/app/app.js","webpack://retail/./src/bridge/bridgeConverter.tsx","webpack://retail/./src/react/FooBar.tsx","webpack://retail/./src/react/MetaFieldValues.tsx","webpack://retail/./src/react/MetaFields.tsx","webpack://retail/./src/react/product/colourChange.tsx","webpack://retail/./src/app/bridge/components.js","webpack://retail/./src/app/core/config/config.js","webpack://retail/./src/app/core/core.js","webpack://retail/./src/app/core/init/angularData.js","webpack://retail/./src/app/core/init/init.js","webpack://retail/./src/app/core/values/values.js","webpack://retail/./src/app/core/versionService.js","webpack://retail/./src/app/login/auth.api.js","webpack://retail/./src/app/login/login.module.js","webpack://retail/./src/app/main/analysis/analysis.api.js","webpack://retail/./src/app/main/analysis/analysis.module.js","webpack://retail/./src/app/main/analysis/pdfTemplate/pdfTemplate.js","webpack://retail/./src/app/main/analysis/reports/reports.js","webpack://retail/./src/app/main/analysis/userReports/userReport.component.js","webpack://retail/./src/app/main/analysis/userReports/userReports.js","webpack://retail/./src/app/main/base/accounts/account/account.js","webpack://retail/./src/app/main/base/accounts/accounts.api.js","webpack://retail/./src/app/main/base/accounts/accounts.module.js","webpack://retail/./src/app/main/base/articlecollections/articlecollection/articlecollection.js","webpack://retail/./src/app/main/base/articlecollections/articlecollections.api.js","webpack://retail/./src/app/main/base/articlecollections/articlecollections.module.js","webpack://retail/./src/app/main/base/articletypes/articletype/articletype.js","webpack://retail/./src/app/main/base/articletypes/articletypes.api.js","webpack://retail/./src/app/main/base/articletypes/articletypes.module.js","webpack://retail/./src/app/main/base/base.module.js","webpack://retail/./src/app/main/base/countries/countries.api.js","webpack://retail/./src/app/main/base/countries/countries.module.js","webpack://retail/./src/app/main/base/countries/country/country.js","webpack://retail/./src/app/main/base/currencies/currencies.api.js","webpack://retail/./src/app/main/base/currencies/currencies.module.js","webpack://retail/./src/app/main/base/currencies/currency/currency.js","webpack://retail/./src/app/main/base/customergroups/customergroup/customergroup.js","webpack://retail/./src/app/main/base/customergroups/customergroups.api.js","webpack://retail/./src/app/main/base/customergroups/customergroups.module.js","webpack://retail/./src/app/main/base/dashboard/dashboard.api.js","webpack://retail/./src/app/main/base/dashboard/dashboard.module.js","webpack://retail/./src/app/main/base/deliveryplanningtemplates/deliveryplanningtemplate/deliveryplanningtemplate.js","webpack://retail/./src/app/main/base/deliveryplanningtemplates/deliveryplanningtemplates.api.js","webpack://retail/./src/app/main/base/deliveryplanningtemplates/deliveryplanningtemplates.module.js","webpack://retail/./src/app/main/base/deliveryterms/deliveryterm/deliveryterm.js","webpack://retail/./src/app/main/base/deliveryterms/deliveryterms.api.js","webpack://retail/./src/app/main/base/deliveryterms/deliveryterms.module.js","webpack://retail/./src/app/main/base/invoicetypes/invoicetype/invoicetype.js","webpack://retail/./src/app/main/base/invoicetypes/invoicetypes.api.js","webpack://retail/./src/app/main/base/invoicetypes/invoicetypes.module.js","webpack://retail/./src/app/main/base/ordercollections/ordercollection/ordercollection.js","webpack://retail/./src/app/main/base/ordercollections/ordercollections.api.js","webpack://retail/./src/app/main/base/ordercollections/ordercollections.module.js","webpack://retail/./src/app/main/base/ordertypes/ordertype/ordertype.js","webpack://retail/./src/app/main/base/ordertypes/ordertypes.api.js","webpack://retail/./src/app/main/base/ordertypes/ordertypes.module.js","webpack://retail/./src/app/main/base/paymentterms/paymentterm/paymentterm.js","webpack://retail/./src/app/main/base/paymentterms/paymentterms.api.js","webpack://retail/./src/app/main/base/paymentterms/paymentterms.module.js","webpack://retail/./src/app/main/base/paymenttypes/paymenttype/paymenttype.js","webpack://retail/./src/app/main/base/paymenttypes/paymenttypes.api.js","webpack://retail/./src/app/main/base/paymenttypes/paymenttypes.module.js","webpack://retail/./src/app/main/base/returnreasons/returnreason/returnreason.js","webpack://retail/./src/app/main/base/returnreasons/returnreasons.api.js","webpack://retail/./src/app/main/base/returnreasons/returnreasons.module.js","webpack://retail/./src/app/main/base/shippingmethods/shippingmethod/shippingmethod.js","webpack://retail/./src/app/main/base/shippingmethods/shippingmethods.api.js","webpack://retail/./src/app/main/base/shippingmethods/shippingmethods.module.js","webpack://retail/./src/app/main/base/vats/vat/vat.js","webpack://retail/./src/app/main/base/vats/vats.api.js","webpack://retail/./src/app/main/base/vats/vats.module.js","webpack://retail/./src/app/main/budget/budget.module.js","webpack://retail/./src/app/main/budget/budgets.api.js","webpack://retail/./src/app/main/budget/budgets/budgets.js","webpack://retail/./src/app/main/budget/budgets/components/budgetImport.component.js","webpack://retail/./src/app/main/contacts/bulkoperation/bulkoperation.js","webpack://retail/./src/app/main/contacts/companies/companies.api.js","webpack://retail/./src/app/main/contacts/companies/companies.module.js","webpack://retail/./src/app/main/contacts/companies/company/company.js","webpack://retail/./src/app/main/contacts/components/addressform.component.js","webpack://retail/./src/app/main/contacts/components/contactinfoform.component.js","webpack://retail/./src/app/main/contacts/components/newaddressform.component.js","webpack://retail/./src/app/main/contacts/components/newcontactinfoform.component.js","webpack://retail/./src/app/main/contacts/contacts.js","webpack://retail/./src/app/main/contacts/locations/location/location.js","webpack://retail/./src/app/main/contacts/locations/locations.api.js","webpack://retail/./src/app/main/contacts/locations/locations.module.js","webpack://retail/./src/app/main/contacts/roles/role/role.js","webpack://retail/./src/app/main/contacts/roles/roles.api.js","webpack://retail/./src/app/main/contacts/roles/roles.module.js","webpack://retail/./src/app/main/contacts/users/user/user.js","webpack://retail/./src/app/main/contacts/users/users.api.js","webpack://retail/./src/app/main/contacts/users/users.module.js","webpack://retail/./src/app/main/customerinvoice/customerinvoice.api.js","webpack://retail/./src/app/main/customerinvoice/customerinvoice.module.js","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicecontent.cmp.js","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicerows.cmp.js","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicesearch.cmp.js","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicerowsearch.js","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicesearch.js","webpack://retail/./src/app/main/customerorder/customerorder.api.js","webpack://retail/./src/app/main/customerorder/customerorder.module.js","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerordercontent.cmp.js","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerorderdeliveries.cmp.js","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerorderpayments.cmp..js","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerorderrefunds.cmp.js","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerorderrows.cmp.js","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerordersearch.cmp.js","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordersearch.js","webpack://retail/./src/app/main/discountManagement/component/discountMultiselect.component.js","webpack://retail/./src/app/main/discountManagement/discountManagement.module.js","webpack://retail/./src/app/main/discountManagement/discounts/discount/discount.js","webpack://retail/./src/app/main/discountManagement/discounts/discounts.api.js","webpack://retail/./src/app/main/discountManagement/discounts/discounts.module.js","webpack://retail/./src/app/main/economy/economy.api.js","webpack://retail/./src/app/main/economy/economy.module.js","webpack://retail/./src/app/main/economy/siefileexport/siefileexport.js","webpack://retail/./src/app/main/main.js","webpack://retail/./src/app/main/order/order.module.js","webpack://retail/./src/app/main/order/orderDialogs/orderRowCommentDialog/orderRowCommentDialog.js","webpack://retail/./src/app/main/order/orderService.js","webpack://retail/./src/app/main/order/orderarticles.api.js","webpack://retail/./src/app/main/order/orderdelivery/components/barcodescanninginput.component.js","webpack://retail/./src/app/main/order/orderdelivery/components/orderarticles.component.js","webpack://retail/./src/app/main/order/orderdelivery/components/ordermetadata.component.js","webpack://retail/./src/app/main/order/orderdelivery/components/orderrowsdelivery.component.js","webpack://retail/./src/app/main/order/orderdelivery/components/orderrowsedit.component.js","webpack://retail/./src/app/main/order/orderdelivery/components/orderscannernavigation.component.js","webpack://retail/./src/app/main/order/orderdelivery/components/ordertotals.component.js","webpack://retail/./src/app/main/order/orderdelivery/orderdelivery.js","webpack://retail/./src/app/main/order/orderdeliveryplanning/editDeliveryPlanningDialog/editDeliveryPlanningDialog.js","webpack://retail/./src/app/main/order/orderdeliveryplanning/orderdeliveryplanning.js","webpack://retail/./src/app/main/order/orders.api.js","webpack://retail/./src/app/main/order/ordersearch/components/orderarticledeliveries.component.js","webpack://retail/./src/app/main/order/ordersearch/components/orderarticlerows.component.js","webpack://retail/./src/app/main/order/ordersearch/components/ordercontent.component.js","webpack://retail/./src/app/main/order/ordersearch/components/ordersearchresult.component.js","webpack://retail/./src/app/main/order/ordersearch/ordersearch.js","webpack://retail/./src/app/main/order/purchaseorder/components/articlessummarygrid.component.js","webpack://retail/./src/app/main/order/purchaseorder/components/opentobuygrid.component.js","webpack://retail/./src/app/main/order/purchaseorder/components/purchaseorderdistributiongrid.component.js","webpack://retail/./src/app/main/order/purchaseorder/components/purchaseorderextraoptions.component.js","webpack://retail/./src/app/main/order/purchaseorder/components/singlearticlesummarygrid.component.js","webpack://retail/./src/app/main/order/purchaseorder/purchaseorder.js","webpack://retail/./src/app/main/order/purchaseorderanalysis.api.js","webpack://retail/./src/app/main/order/purchaseorderanalysis/purchaseorderanalysis.js","webpack://retail/./src/app/main/order/purchaseordersearch/purchaseordersearch.js","webpack://retail/./src/app/main/order/reports/intrastatReports.js","webpack://retail/./src/app/main/order/reports/rms2Reports.api.js","webpack://retail/./src/app/main/order/reports/transitReports.js","webpack://retail/./src/app/main/order/rms2Orders.api.js","webpack://retail/./src/app/main/product/articleimport/articleimport.js","webpack://retail/./src/app/main/product/articles/articleAddNewArticleVariantDialog/articleAddNewArticleVariantDialog.js","webpack://retail/./src/app/main/product/articles/articleChangeItemGroupDialog/articleChangeItemGroupDialog.js","webpack://retail/./src/app/main/product/articles/articleChangeVariantDetailDialog/articleChangeVariantDetailDialog.js","webpack://retail/./src/app/main/product/articles/articleLabelsPrintDialog/articleLabelsPrintDialog.js","webpack://retail/./src/app/main/product/articles/articleNewIntrastatDialog/articleNewIntrastatDialog.js","webpack://retail/./src/app/main/product/articles/article/article.js","webpack://retail/./src/app/main/product/articles/article/components/articlevariantsgrid.component.js","webpack://retail/./src/app/main/product/articles/article/components/articlevariantsgridcell.component.js","webpack://retail/./src/app/main/product/articles/articles.js","webpack://retail/./src/app/main/product/articles/pricelistmanagement/pricelistmanagement.js","webpack://retail/./src/app/main/product/articles/pricelistmgmt.js","webpack://retail/./src/app/main/product/brands/brand/brand.js","webpack://retail/./src/app/main/product/brands/brands.api.js","webpack://retail/./src/app/main/product/brands/brands.module.js","webpack://retail/./src/app/main/product/businessareas/businessarea/businessarea.js","webpack://retail/./src/app/main/product/businessareas/businessareas.api.js","webpack://retail/./src/app/main/product/businessareas/businessareas.module.js","webpack://retail/./src/app/main/product/components/articlesearchmultiselect.component.js","webpack://retail/./src/app/main/product/components/itemGroupInline.component.js","webpack://retail/./src/app/main/product/departments/department/department.js","webpack://retail/./src/app/main/product/departments/departments.api.js","webpack://retail/./src/app/main/product/departments/departments.module.js","webpack://retail/./src/app/main/product/importeditor/importeditor.js","webpack://retail/./src/app/main/product/importfileslist/importfileslist.js","webpack://retail/./src/app/main/product/intrastats/intrastat.api.js","webpack://retail/./src/app/main/product/intrastats/intrastat/intrastat.js","webpack://retail/./src/app/main/product/intrastats/intrastats.module.js","webpack://retail/./src/app/main/product/maingroups/maingroup/maingroup.js","webpack://retail/./src/app/main/product/maingroups/maingroups.api.js","webpack://retail/./src/app/main/product/maingroups/maingroups.module.js","webpack://retail/./src/app/main/product/pricelisteditor/components/articleselection.component.js","webpack://retail/./src/app/main/product/pricelisteditor/components/pricelistsgrid.component.js","webpack://retail/./src/app/main/product/pricelisteditor/components/pricerangeinput.component.js","webpack://retail/./src/app/main/product/pricelisteditor/components/volumediscountrule.component.js","webpack://retail/./src/app/main/product/pricelisteditor/pricelisteditor.js","webpack://retail/./src/app/main/product/pricelists/pricelist/pricelist.js","webpack://retail/./src/app/main/product/pricelists/pricelists.api.js","webpack://retail/./src/app/main/product/pricelists/pricelists.module.js","webpack://retail/./src/app/main/product/product.module.js","webpack://retail/./src/app/main/product/productService.js","webpack://retail/./src/app/main/product/productimport/components/filelist.component.js","webpack://retail/./src/app/main/product/productimport/components/mapordate.component.js","webpack://retail/./src/app/main/product/productimport/components/maporselect.component.js","webpack://retail/./src/app/main/product/productimport/productimport.js","webpack://retail/./src/app/main/product/productimporteditor/components/importeditorsummary.component.js","webpack://retail/./src/app/main/product/productimporteditor/components/importeditortextdropdown.component.js","webpack://retail/./src/app/main/product/productimporteditor/components/importeditorvalidationerrors.component.js","webpack://retail/./src/app/main/product/productimporteditor/components/importrowsgrid.component.js","webpack://retail/./src/app/main/product/productimporteditor/productimporteditor.js","webpack://retail/./src/app/main/product/products.api.js","webpack://retail/./src/app/main/product/psychologicalprices/psychologicalprice/psychologicalprice.js","webpack://retail/./src/app/main/product/psychologicalprices/psychologicalprices.api.js","webpack://retail/./src/app/main/product/psychologicalprices/psychologicalprices.module.js","webpack://retail/./src/app/main/product/rms2Products.api.js","webpack://retail/./src/app/main/product/saleschannels/saleschannel/saleschannel.js","webpack://retail/./src/app/main/product/saleschannels/saleschannels.api.js","webpack://retail/./src/app/main/product/saleschannels/saleschannels.module.js","webpack://retail/./src/app/main/product/subcategories/subcategories.api.js","webpack://retail/./src/app/main/product/subcategories/subcategories.module.js","webpack://retail/./src/app/main/product/subcategories/subcategory/subcategory.js","webpack://retail/./src/app/main/product/variantgroups.api.js","webpack://retail/./src/app/main/product/variantgroups/variantgroup/variantgroup.js","webpack://retail/./src/app/main/product/variantgroups/variantgroups.js","webpack://retail/./src/app/main/product/variants.api.js","webpack://retail/./src/app/main/product/variants/variant/variant.js","webpack://retail/./src/app/main/product/variants/variants.js","webpack://retail/./src/app/main/product/volumediscounts/volumediscount/volumediscount.js","webpack://retail/./src/app/main/product/volumediscounts/volumediscounts.api.js","webpack://retail/./src/app/main/product/volumediscounts/volumediscounts.module.js","webpack://retail/./src/app/main/resellerorder/genericcomponents/readonlyorderheader.cmp.js","webpack://retail/./src/app/main/resellerorder/genericcomponents/resellerorderbreadcrumbs.cmp.js","webpack://retail/./src/app/main/resellerorder/genericcomponents/resellerordersearch.cmp.js","webpack://retail/./src/app/main/resellerorder/genericcomponents/resellerreturnorderbreadcrumbs.cmp.js","webpack://retail/./src/app/main/resellerorder/genericcomponents/scannernavigation.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerorder.module.js","webpack://retail/./src/app/main/resellerorder/resellerordercreate/components/createorderheader.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerordercreate/resellerordercreate.js","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createDeliveryDate.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createVariantDeliveryDateDialog.js","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/createVariantFulfillmentDialog.js","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/createfulfillmentvariants.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/createfulfillment.js","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/manageorders/manageorders.js","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/manageproducts/manageproducts.js","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/addlineitems.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/articlelist_amount.component.js","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/articlelist_overview.component.js","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/articlelist_quantity.component.js","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/resellerorderproductsearchmultiselect.component.js","webpack://retail/./src/app/main/resellerorder/resellerordermodify/resellerordermodify.js","webpack://retail/./src/app/main/resellerorder/resellerordersearch/resellerordersearch.js","webpack://retail/./src/app/main/resellerorder/resellerorderservice.api.js","webpack://retail/./src/app/main/resellerorder/resellerorderview/components/resellerordercontent.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerorderview/components/resellerorderrows.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerorderview/resellerorderview.js","webpack://retail/./src/app/main/resellerorder/resellerreturnordercreate/components/createreturnorderheader.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerreturnordercreate/resellerreturnordercreate.js","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/addlineitems.cmp.js","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_amount.component.js","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_overview.component.js","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_quantity.component.js","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/resellerorderproductsearchmultiselect.component.js","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/resellerreturnordermodify.js","webpack://retail/./src/app/main/sales/sales.api.js","webpack://retail/./src/app/main/sales/sales.module.js","webpack://retail/./src/app/main/sales/salestotal/salestotal.js","webpack://retail/./src/app/main/stock/articles/articleStocksHistory/articleStocksHistory.component.js","webpack://retail/./src/app/main/stock/articles/articleStocksHistory/articleStocksHistory.dialog.js","webpack://retail/./src/app/main/stock/articles/article/article.js","webpack://retail/./src/app/main/stock/articles/articles.js","webpack://retail/./src/app/main/stock/articles/modelinventory/modelinventory.js","webpack://retail/./src/app/main/stock/inventorying.api.js","webpack://retail/./src/app/main/stock/pickinglist/stockPickingList.js","webpack://retail/./src/app/main/stock/reports/saleThroughputReports.js","webpack://retail/./src/app/main/stock/reports/soldStockReports.js","webpack://retail/./src/app/main/stock/reports/stockValueReports.js","webpack://retail/./src/app/main/stock/scannerinventorying/inventory/articledetails/articledetails.js","webpack://retail/./src/app/main/stock/scannerinventorying/inventory/inventory.js","webpack://retail/./src/app/main/stock/scannerinventorying/scannerinventorying.js","webpack://retail/./src/app/main/stock/stock.api.js","webpack://retail/./src/app/main/stock/stock.module.js","webpack://retail/./src/app/main/stocklogistics/articletransfer/articletransfer.js","webpack://retail/./src/app/main/stocklogistics/eshopreplenishment/eshopreplenishment.js","webpack://retail/./src/app/main/stocklogistics/masshandlingorderingpoints/masshandlingorderingpoints.js","webpack://retail/./src/app/main/stocklogistics/orderingpoints/autoMonthMultiplierDialog.js","webpack://retail/./src/app/main/stocklogistics/orderingpoints/orderingpoints.js","webpack://retail/./src/app/main/stocklogistics/stocklogistics.api.js","webpack://retail/./src/app/main/stocklogistics/stocklogistics.module.js","webpack://retail/./src/app/main/support/support.api.js","webpack://retail/./src/app/main/support/support.module.js","webpack://retail/./src/app/main/support/supportcases/addvariantdetail/addvariantdetail.js","webpack://retail/./src/app/main/support/supportcases/changebarcode/changebarcode.js","webpack://retail/./src/app/main/support/supportcases/changebarcodes/changebarcodes.js","webpack://retail/./src/app/main/support/supportcases/changeisgroupsalearticle/changeisgroupsalearticle.js","webpack://retail/./src/app/main/support/supportcases/changeitemgroup/changeitemgroup.js","webpack://retail/./src/app/main/support/supportcases/changevariantdetail/changevariantdetail.js","webpack://retail/./src/app/main/support/supportcases/createlocation/createlocation.js","webpack://retail/./src/app/main/support/supportcases/deleteproduct/deleteproduct.js","webpack://retail/./src/app/main/support/supportcases/mergeproducts/mergeproducts.js","webpack://retail/./src/app/main/support/supportcases/missingreceipts/missingreceipts.js","webpack://retail/./src/app/main/support/supportcases/originalbalanceimport/originalbalanceimport.js","webpack://retail/./src/app/main/support/supportcases/supportcases.module.js","webpack://retail/./src/app/main/support/supportcases/triggertochangelog/triggertochangelog.js","webpack://retail/./src/app/main/support/supportcases/updateinventorystatus/updateinventorystatus.js","webpack://retail/./src/app/main/timedOutLoginDialog/timedOutLoginDialog.js","webpack://retail/./src/app/main/timestamp/timeStampsAdministrationDialog/timeStampsAdministrationDialog.js","webpack://retail/./src/app/main/timestamp/timestamp.module.js","webpack://retail/./src/app/main/timestamp/timestamping.api.js","webpack://retail/./src/app/main/timestamp/timestampingusers/timestamping/timestamping.js","webpack://retail/./src/app/main/timestamp/timestampingusers/timestampingusers.js","webpack://retail/./src/app/main/timestamp/userTimeStampingDialog/userTimeStampingDialog.js","webpack://retail/./src/bridge/angularEvents.ts","webpack://retail/./src/bridge/bridgeManager.ts","webpack://retail/./src/bridge/reactEvents.ts","webpack://retail/./src/common/components/components.module.js","webpack://retail/./src/common/components/dashboard/widgets/wgtIntegrationStatus/wgtIntegrationStatus.component.js","webpack://retail/./src/common/components/dashboard/widgets/wgtRefunds/wgtRefunds.component.js","webpack://retail/./src/common/components/dashboard/widgets/wgtSeasonalityCurve/wgtSeasonalityCurve.component.js","webpack://retail/./src/common/components/dashboard/widgets/wgtTopSold/wgtTopSold.component.js","webpack://retail/./src/common/components/genericcomponents/address.component.js","webpack://retail/./src/common/components/genericcomponents/articlelist.component.js","webpack://retail/./src/common/components/genericcomponents/articlesearchsingleselect.component.js","webpack://retail/./src/common/components/genericcomponents/confirmbutton.component.js","webpack://retail/./src/common/components/genericcomponents/contactinfo.component.js","webpack://retail/./src/common/components/genericcomponents/errorlist.component.js","webpack://retail/./src/common/components/genericcomponents/formgrouprow.component.js","webpack://retail/./src/common/components/genericcomponents/formgrouprowother.component.js","webpack://retail/./src/common/components/genericcomponents/genericcomponents.service.js","webpack://retail/./src/common/components/genericcomponents/multiselect.component.js","webpack://retail/./src/common/components/genericcomponents/searchlist/searchlist-contactinfo.component.js","webpack://retail/./src/common/components/genericcomponents/singleselect.component.js","webpack://retail/./src/common/components/genericcomponents/sortingtabledataheader.component.js","webpack://retail/./src/common/components/genericcomponents/variantdetailsearchsingleselect.component.js","webpack://retail/./src/common/components/navigation/navigation.api.js","webpack://retail/./src/common/components/navigation/navigationNode.component.js","webpack://retail/./src/common/decorators/bootstrapModal/bootstrapModal.js","webpack://retail/./src/common/directives/dashboard/dashboard.js","webpack://retail/./src/common/directives/dashboard/widgetBody.js","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettings.js","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsBusinessArea.js","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsHideTooltipLocation.js","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsMultipleLocations.js","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsTimePeriod.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtArticleNegativeBalance/wgtAtricleNegativeBalance.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtCalHeatmap/wgtCalHeatmap.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtChart/wgtChart.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoLatestTransaction/wgtInfoLatestTransaction.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoQuickSaleFact/wgtInfoQuickSaleFact.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoSaleBusinessArea/wgtInfoSaleBusinessArea.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoSaleToLastYear/wgtInfoSaleToLastYear.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoTodayOrder/wgtInfoTodayOrder.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoUndeliveredInternalOrder/wgtInfoUndeliveredInternalOrder.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoYesterdaySaleBrv/wgtInfoYesterdaySaleBrv.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoYesterdaySale/wgtInfoYesterdaySale.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtOrderAutoOrders/wgtOrderAutoOrders.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtPrintableImports/wgtPrintableImports.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtSaleTop/wgtSaleTop.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtSaleTwoWeek/wgtSaleTwoWeek.js","webpack://retail/./src/common/directives/dashboard/widgets/wgtUndeliveredOrders/wgtUndeliveredOrders.js","webpack://retail/./src/common/directives/directives.js","webpack://retail/./src/common/directives/editableInputs/editableDecimal/editableDecimal.js","webpack://retail/./src/common/directives/formInput/enterAsTab.js","webpack://retail/./src/common/directives/loadSpinner/loadSpinner.js","webpack://retail/./src/common/directives/percentInput/percentInput.js","webpack://retail/./src/common/directives/restrictAccess/restrictAccess.js","webpack://retail/./src/common/directives/smartDecimal/smartDecimal.js","webpack://retail/./src/common/directives/ui-nav.js","webpack://retail/./src/common/directives/ui-toggleclass.js","webpack://retail/./src/common/filters/filters.js","webpack://retail/./src/common/filters/multiPartFilter.js","webpack://retail/./src/common/filters/propsFilter.js","webpack://retail/./src/common/resources/filedataimport.api.js","webpack://retail/./src/common/resources/filedataimport.v2.api.js","webpack://retail/./src/common/resources/fileoperations.api.js","webpack://retail/./src/common/resources/resources.js","webpack://retail/./src/common/services/authService/authservice.js","webpack://retail/./src/common/services/barcodeService/barcodeService.js","webpack://retail/./src/common/services/dialogs/InvoiceConfirmationDialog/InvoiceConfirmationDialog.js","webpack://retail/./src/common/services/dialogs/colourChangeDialog/colourChangeDialog.js","webpack://retail/./src/common/services/dialogs/confirmationDialog/confirmationDialog.js","webpack://retail/./src/common/services/dialogs/deliveryConfirmationDialog/deliveryConfirmationDialog.js","webpack://retail/./src/common/services/dialogs/deliveryDocumentDownloadDialog/deliveryDocumentDownloadDialog.js","webpack://retail/./src/common/services/dialogs/dialogs.js","webpack://retail/./src/common/services/dialogs/importFinalizationDialog/importFinalizationDialog.js","webpack://retail/./src/common/services/dialogs/informationDialog/informationDialog.js","webpack://retail/./src/common/services/dialogs/inventoryCorrectionsDialog/inventoryCorrectionsDialog.js","webpack://retail/./src/common/services/dialogs/labelPrintingDialog/labelPrintingDialog.js","webpack://retail/./src/common/services/dialogs/loginDialog/loginDialog.js","webpack://retail/./src/common/services/dialogs/newInventoryDialog/newInventoryDialog.js","webpack://retail/./src/common/services/dialogs/printInventoryReportDialog/printInventoryReportDialog.js","webpack://retail/./src/common/services/dialogs/printInvoiceDialog/printInvoiceDialog.js","webpack://retail/./src/common/services/dialogs/printLanguageConfirmationDialog/printLanguageConfirmationDialog.js","webpack://retail/./src/common/services/dialogs/printPickingListDialog/printPickingListDialog.js","webpack://retail/./src/common/services/dialogs/purchaseOrderAnalysisFilterDialog/purchaseOrderAnalysisFilterDialog.js","webpack://retail/./src/common/services/dialogs/resetLogin/resetLogin.js","webpack://retail/./src/common/services/dialogs/salesTotalFilterDialog/salesTotalFilterDialog.js","webpack://retail/./src/common/services/dialogs/setFieldConfirmationDialog/setFieldConfirmationDialog.js","webpack://retail/./src/common/services/dialogs/updateAddressDialog/updateAddressDialog.js","webpack://retail/./src/common/services/dialogs/updateOrderNoteDialog/updateOrderNoteDialog.js","webpack://retail/./src/common/services/featureSwitchService/featureSwitchService.js","webpack://retail/./src/common/services/helper/flexGridHelper.js","webpack://retail/./src/common/services/helper/helper.js","webpack://retail/./src/common/services/helper/pricelistsHelper.js","webpack://retail/./src/common/services/mock/mockImportFileRowService.js","webpack://retail/./src/common/services/services.js","webpack://retail/./src/common/services/toasterService/toasterservice.js","webpack://retail/./src/react/Root.tsx","webpack://retail/./src/index.js","webpack://retail/./src/version.js","webpack://retail/./src/app/app.tpl.html","webpack://retail/./src/app/main/analysis/analysis.tpl.html","webpack://retail/./src/app/main/analysis/pdfTemplate/pdfTemplate.tpl.html","webpack://retail/./src/app/main/analysis/reports/reports.tpl.html","webpack://retail/./src/app/main/analysis/userReports/userReport.component.tpl.html","webpack://retail/./src/app/main/analysis/userReports/userReports.tpl.html","webpack://retail/./src/app/main/base/accounts/account/account.tpl.html","webpack://retail/./src/app/main/base/accounts/accounts.tpl.html","webpack://retail/./src/app/main/base/articlecollections/articlecollection/articlecollection.tpl.html","webpack://retail/./src/app/main/base/articlecollections/articlecollections.tpl.html","webpack://retail/./src/app/main/base/articletypes/articletype/articletype.tpl.html","webpack://retail/./src/app/main/base/articletypes/articletypes.tpl.html","webpack://retail/./src/app/main/base/base.tpl.html","webpack://retail/./src/app/main/base/countries/countries.tpl.html","webpack://retail/./src/app/main/base/countries/country/country.tpl.html","webpack://retail/./src/app/main/base/currencies/currencies.tpl.html","webpack://retail/./src/app/main/base/currencies/currency/currency.tpl.html","webpack://retail/./src/app/main/base/customergroups/customergroup/customergroup.tpl.html","webpack://retail/./src/app/main/base/customergroups/customergroups.tpl.html","webpack://retail/./src/app/main/base/dashboard/dashboard.tpl.html","webpack://retail/./src/app/main/base/deliveryplanningtemplates/deliveryplanningtemplate/deliveryplanningtemplate.tpl.html","webpack://retail/./src/app/main/base/deliveryplanningtemplates/deliveryplanningtemplates.tpl.html","webpack://retail/./src/app/main/base/deliveryterms/deliveryterm/deliveryterm.tpl.html","webpack://retail/./src/app/main/base/deliveryterms/deliveryterms.tpl.html","webpack://retail/./src/app/main/base/invoicetypes/invoicetype/invoicetype.tpl.html","webpack://retail/./src/app/main/base/invoicetypes/invoicetypes.tpl.html","webpack://retail/./src/app/main/base/ordercollections/ordercollection/ordercollection.tpl.html","webpack://retail/./src/app/main/base/ordercollections/ordercollections.tpl.html","webpack://retail/./src/app/main/base/ordertypes/ordertype/ordertype.tpl.html","webpack://retail/./src/app/main/base/ordertypes/ordertypes.tpl.html","webpack://retail/./src/app/main/base/paymentterms/paymentterm/paymentterm.tpl.html","webpack://retail/./src/app/main/base/paymentterms/paymentterms.tpl.html","webpack://retail/./src/app/main/base/paymenttypes/paymenttype/paymenttype.tpl.html","webpack://retail/./src/app/main/base/paymenttypes/paymenttypes.tpl.html","webpack://retail/./src/app/main/base/returnreasons/returnreason/returnreason.tpl.html","webpack://retail/./src/app/main/base/returnreasons/returnreasons.tpl.html","webpack://retail/./src/app/main/base/shippingmethods/shippingmethod/shippingmethod.tpl.html","webpack://retail/./src/app/main/base/shippingmethods/shippingmethods.tpl.html","webpack://retail/./src/app/main/base/vats/vat/vat.tpl.html","webpack://retail/./src/app/main/base/vats/vats.tpl.html","webpack://retail/./src/app/main/budget/budget.tpl.html","webpack://retail/./src/app/main/budget/budgets/budgets.tpl.html","webpack://retail/./src/app/main/budget/budgets/components/budgetImport.component.tpl.html","webpack://retail/./src/app/main/contacts/bulkoperation/bulkoperation.tpl.html","webpack://retail/./src/app/main/contacts/companies/companies.tpl.html","webpack://retail/./src/app/main/contacts/companies/company/company.tpl.html","webpack://retail/./src/app/main/contacts/components/addressform.component.tpl.html","webpack://retail/./src/app/main/contacts/components/contactinfoform.component.tpl.html","webpack://retail/./src/app/main/contacts/components/newaddressform.component.tpl.html","webpack://retail/./src/app/main/contacts/components/newcontactinfoform.component.tpl.html","webpack://retail/./src/app/main/contacts/contacts.tpl.html","webpack://retail/./src/app/main/contacts/locations/location/location.tpl.html","webpack://retail/./src/app/main/contacts/locations/locations.tpl.html","webpack://retail/./src/app/main/contacts/roles/role/role.tpl.html","webpack://retail/./src/app/main/contacts/roles/roles.tpl.html","webpack://retail/./src/app/main/contacts/users/user/user.tpl.html","webpack://retail/./src/app/main/contacts/users/users.tpl.html","webpack://retail/./src/app/main/customerinvoice/customerinvoice.tpl.html","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicecontent.cmp.tpl.html","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicerows.cmp.tpl.html","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicesearch.cmp.tpl.html","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicerowsearch.tpl.html","webpack://retail/./src/app/main/customerinvoice/customerinvoicesearch/customerinvoicesearch.tpl.html","webpack://retail/./src/app/main/customerorder/customerorder.tpl.html","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerordercontent.cmp.tpl.html","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerorderdeliveries.cmp.tpl.html","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerorderpayments.cmp.tpl.html","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerorderrefunds.cmp.tpl.html","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerorderrows.cmp.tpl.html","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordercontent/customerordersearch.cmp.tpl.html","webpack://retail/./src/app/main/customerorder/customerordersearch/customerordersearch.tpl.html","webpack://retail/./src/app/main/discountManagement/component/discountMultiselect.component.tpl.html","webpack://retail/./src/app/main/discountManagement/discountManagement.tpl.html","webpack://retail/./src/app/main/discountManagement/discounts/discount/discount.tpl.html","webpack://retail/./src/app/main/discountManagement/discounts/discounts.tpl.html","webpack://retail/./src/app/main/economy/siefileexport/siefileexport.tpl.html","webpack://retail/./src/app/main/main-header.tpl.html","webpack://retail/./src/app/main/main-menu.tpl.html","webpack://retail/./src/app/main/main.tpl.html","webpack://retail/./src/app/main/order/order.tpl.html","webpack://retail/./src/app/main/order/orderDialogs/orderRowCommentDialog/orderRowCommentDialog.tpl.html","webpack://retail/./src/app/main/order/orderdelivery/components/barcodescanninginput.component.tpl.html","webpack://retail/./src/app/main/order/orderdelivery/components/orderarticles.component.tpl.html","webpack://retail/./src/app/main/order/orderdelivery/components/ordermetadata.component.tpl.html","webpack://retail/./src/app/main/order/orderdelivery/components/orderrowsdelivery.component.tpl.html","webpack://retail/./src/app/main/order/orderdelivery/components/orderrowsedit.component.tpl.html","webpack://retail/./src/app/main/order/orderdelivery/components/orderscannernavigation.component.tpl.html","webpack://retail/./src/app/main/order/orderdelivery/components/ordertotals.component.tpl.html","webpack://retail/./src/app/main/order/orderdelivery/orderdelivery.tpl.html","webpack://retail/./src/app/main/order/orderdeliveryplanning/editDeliveryPlanningDialog/editDeliveryPlanningDialog.tpl.html","webpack://retail/./src/app/main/order/orderdeliveryplanning/orderdeliveryplanning.tpl.html","webpack://retail/./src/app/main/order/ordersearch/components/orderarticledeliveries.component.tpl.html","webpack://retail/./src/app/main/order/ordersearch/components/orderarticlerows.component.tpl.html","webpack://retail/./src/app/main/order/ordersearch/components/ordercontent.component.tpl.html","webpack://retail/./src/app/main/order/ordersearch/components/ordersearchresult.component.tpl.html","webpack://retail/./src/app/main/order/ordersearch/ordersearch.tpl.html","webpack://retail/./src/app/main/order/purchaseorder/components/articlessummarygrid.component.tpl.html","webpack://retail/./src/app/main/order/purchaseorder/components/opentobuygrid.component.tpl.html","webpack://retail/./src/app/main/order/purchaseorder/components/purchaseorderdistributiongrid.component.tpl.html","webpack://retail/./src/app/main/order/purchaseorder/components/purchaseorderextraoptions.component.tpl.html","webpack://retail/./src/app/main/order/purchaseorder/components/singlearticlesummarygrid.component.tpl.html","webpack://retail/./src/app/main/order/purchaseorder/purchaseorder.tpl.html","webpack://retail/./src/app/main/order/purchaseorderanalysis/purchaseorderanalysis.tpl.html","webpack://retail/./src/app/main/order/purchaseordersearch/purchaseordersearch.tpl.html","webpack://retail/./src/app/main/order/reports/intrastatReports.tpl.html","webpack://retail/./src/app/main/order/reports/transitReports.tpl.html","webpack://retail/./src/app/main/product/articleimport/articleimport.tpl.html","webpack://retail/./src/app/main/product/articles/articleAddNewArticleVariantDialog/articleAddNewArticleVariantDialog.tpl.html","webpack://retail/./src/app/main/product/articles/articleChangeItemGroupDialog/articleChangeItemGroupDialog.tpl.html","webpack://retail/./src/app/main/product/articles/articleChangeVariantDetailDialog/articleChangeVariantDetailDialog.tpl.html","webpack://retail/./src/app/main/product/articles/articleLabelsPrintDialog/articleLabelsPrintDialog.tpl.html","webpack://retail/./src/app/main/product/articles/articleNewIntrastatDialog/articleNewIntrastatDialog.tpl.html","webpack://retail/./src/app/main/product/articles/article/article.tpl.html","webpack://retail/./src/app/main/product/articles/article/components/articlevariantsgrid.component.tpl.html","webpack://retail/./src/app/main/product/articles/article/components/articlevariantsgridcell.component.tpl.html","webpack://retail/./src/app/main/product/articles/articles.tpl.html","webpack://retail/./src/app/main/product/articles/pricelistmanagement/pricelistmanagement.tpl.html","webpack://retail/./src/app/main/product/articles/pricelistmgmt.tpl.html","webpack://retail/./src/app/main/product/brands/brand/brand.tpl.html","webpack://retail/./src/app/main/product/brands/brands.tpl.html","webpack://retail/./src/app/main/product/businessareas/businessarea/businessarea.tpl.html","webpack://retail/./src/app/main/product/businessareas/businessareas.tpl.html","webpack://retail/./src/app/main/product/components/articlesearchmultiselect.component.tpl.html","webpack://retail/./src/app/main/product/components/itemGroupInline.component.tpl.html","webpack://retail/./src/app/main/product/departments/department/department.tpl.html","webpack://retail/./src/app/main/product/departments/departments.tpl.html","webpack://retail/./src/app/main/product/importeditor/importeditor.tpl.html","webpack://retail/./src/app/main/product/importfileslist/importfileslist.tpl.html","webpack://retail/./src/app/main/product/intrastats/intrastat/intrastat.tpl.html","webpack://retail/./src/app/main/product/intrastats/intrastats.tpl.html","webpack://retail/./src/app/main/product/maingroups/maingroup/maingroup.tpl.html","webpack://retail/./src/app/main/product/maingroups/maingroups.tpl.html","webpack://retail/./src/app/main/product/pricelisteditor/components/articleselection.component.tpl.html","webpack://retail/./src/app/main/product/pricelisteditor/components/pricelistsgrid.component.tpl.html","webpack://retail/./src/app/main/product/pricelisteditor/components/pricerangeinput.component.tpl.html","webpack://retail/./src/app/main/product/pricelisteditor/components/volumediscountrule.component.tpl.html","webpack://retail/./src/app/main/product/pricelisteditor/pricelisteditor.tpl.html","webpack://retail/./src/app/main/product/pricelists/pricelist/pricelist.tpl.html","webpack://retail/./src/app/main/product/pricelists/pricelists.tpl.html","webpack://retail/./src/app/main/product/product.tpl.html","webpack://retail/./src/app/main/product/productimport/components/filelist.component.tpl.html","webpack://retail/./src/app/main/product/productimport/components/mapordate.component.tpl.html","webpack://retail/./src/app/main/product/productimport/components/maporselect.component.tpl.html","webpack://retail/./src/app/main/product/productimport/productimport.tpl.html","webpack://retail/./src/app/main/product/productimporteditor/components/importeditorsummary.component.tpl.html","webpack://retail/./src/app/main/product/productimporteditor/components/importeditortextdropdown.component.tpl.html","webpack://retail/./src/app/main/product/productimporteditor/components/importeditorvalidationerrors.component.tpl.html","webpack://retail/./src/app/main/product/productimporteditor/components/importrowsgrid.component.tpl.html","webpack://retail/./src/app/main/product/productimporteditor/productimporteditor.tpl.html","webpack://retail/./src/app/main/product/psychologicalprices/psychologicalprice/psychologicalprice.tpl.html","webpack://retail/./src/app/main/product/psychologicalprices/psychologicalprices.tpl.html","webpack://retail/./src/app/main/product/saleschannels/saleschannel/saleschannel.tpl.html","webpack://retail/./src/app/main/product/saleschannels/saleschannels.tpl.html","webpack://retail/./src/app/main/product/subcategories/subcategories.tpl.html","webpack://retail/./src/app/main/product/subcategories/subcategory/subcategory.tpl.html","webpack://retail/./src/app/main/product/variantgroups/variantgroup/variantgroup.tpl.html","webpack://retail/./src/app/main/product/variantgroups/variantgroups.tpl.html","webpack://retail/./src/app/main/product/variants/variant/variant.tpl.html","webpack://retail/./src/app/main/product/variants/variants.tpl.html","webpack://retail/./src/app/main/product/volumediscounts/volumediscount/volumediscount.tpl.html","webpack://retail/./src/app/main/product/volumediscounts/volumediscounts.tpl.html","webpack://retail/./src/app/main/resellerorder/genericcomponents/readonlyorderheader.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/genericcomponents/resellerorderbreadcrumbs.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/genericcomponents/resellerordersearch.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/genericcomponents/resellerreturnorderbreadcrumbs.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/genericcomponents/scannernavigation.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorder.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordercreate/components/createorderheader.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordercreate/resellerordercreate.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createDeliveryDate.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createVariantDeliveryDateDialog.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/createVariantFulfillmentDialog.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/createfulfillmentvariants.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/createfulfillment.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/manageorders/manageorders.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderfulfillment/manageproducts/manageproducts.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/addlineitems.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/articlelist_amount.component.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/articlelist_overview.component.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/articlelist_quantity.component.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordermodify/components/resellerorderproductsearchmultiselect.component.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordermodify/resellerordermodify.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerordersearch/resellerordersearch.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderview/components/resellerordercontent.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderview/components/resellerorderrows.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerorderview/resellerorderview.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerreturnordercreate/components/createreturnorderheader.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerreturnordercreate/resellerreturnordercreate.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/addlineitems.cmp.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_amount.component.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_overview.component.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_quantity.component.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/components/resellerorderproductsearchmultiselect.component.tpl.html","webpack://retail/./src/app/main/resellerorder/resellerreturnordermodify/resellerreturnordermodify.tpl.html","webpack://retail/./src/app/main/sales/sales.tpl.html","webpack://retail/./src/app/main/sales/salestotal/salestotal.tpl.html","webpack://retail/./src/app/main/stock/articles/articleStocksHistory/articleStocksHistory.component.tpl.html","webpack://retail/./src/app/main/stock/articles/articleStocksHistory/articleStocksHistory.dialog.tpl.html","webpack://retail/./src/app/main/stock/articles/article/article.tpl.html","webpack://retail/./src/app/main/stock/articles/articles.tpl.html","webpack://retail/./src/app/main/stock/articles/modelinventory/modelinventory.tpl.html","webpack://retail/./src/app/main/stock/pickinglist/stockPickingList.tpl.html","webpack://retail/./src/app/main/stock/reports/saleThroughputReports.tpl.html","webpack://retail/./src/app/main/stock/reports/soldStockReports.tpl.html","webpack://retail/./src/app/main/stock/reports/stockValueReports.tpl.html","webpack://retail/./src/app/main/stock/scannerinventorying/inventory/articledetails/articledetails.tpl.html","webpack://retail/./src/app/main/stock/scannerinventorying/inventory/inventory.tpl.html","webpack://retail/./src/app/main/stock/scannerinventorying/scannerinventorying.tpl.html","webpack://retail/./src/app/main/stock/stock.tpl.html","webpack://retail/./src/app/main/stocklogistics/articletransfer/articletransfer.tpl.html","webpack://retail/./src/app/main/stocklogistics/eshopreplenishment/eshopreplenishment.tpl.html","webpack://retail/./src/app/main/stocklogistics/masshandlingorderingpoints/masshandlingorderingpoints.tpl.html","webpack://retail/./src/app/main/stocklogistics/orderingpoints/autoMonthMultiplierDialog.tpl.html","webpack://retail/./src/app/main/stocklogistics/orderingpoints/orderingpoints.tpl.html","webpack://retail/./src/app/main/stocklogistics/stocklogistics.tpl.html","webpack://retail/./src/app/main/support/support.tpl.html","webpack://retail/./src/app/main/support/supportcases/addvariantdetail/addvariantdetail.tpl.html","webpack://retail/./src/app/main/support/supportcases/changebarcode/changebarcode.tpl.html","webpack://retail/./src/app/main/support/supportcases/changebarcodes/changebarcodes.tpl.html","webpack://retail/./src/app/main/support/supportcases/changeisgroupsalearticle/changeisgroupsalearticle.tpl.html","webpack://retail/./src/app/main/support/supportcases/changeitemgroup/changeitemgroup.tpl.html","webpack://retail/./src/app/main/support/supportcases/changevariantdetail/changevariantdetail.tpl.html","webpack://retail/./src/app/main/support/supportcases/createlocation/createlocation.tpl.html","webpack://retail/./src/app/main/support/supportcases/deleteproduct/deleteproduct.tpl.html","webpack://retail/./src/app/main/support/supportcases/mergeproducts/mergeproducts.tpl.html","webpack://retail/./src/app/main/support/supportcases/missingreceipts/missingreceipts.tpl.html","webpack://retail/./src/app/main/support/supportcases/originalbalanceimport/originalbalanceimport.tpl.html","webpack://retail/./src/app/main/support/supportcases/supportcases.tpl.html","webpack://retail/./src/app/main/support/supportcases/triggertochangelog/triggertochangelog.tpl.html","webpack://retail/./src/app/main/support/supportcases/updateinventorystatus/updateinventorystatus.tpl.html","webpack://retail/./src/app/main/timedOutLoginDialog/timedOutLoginDialog.tpl.html","webpack://retail/./src/app/main/timestamp/timeStampsAdministrationDialog/timeStampsAdministrationDialog.tpl.html","webpack://retail/./src/app/main/timestamp/timestampingusers/timestamping/timestamping.tpl.html","webpack://retail/./src/app/main/timestamp/timestampingusers/timestampingusers.tpl.html","webpack://retail/./src/app/main/timestamp/userTimeStampingDialog/userTimeStampingDialog.tpl.html","webpack://retail/./src/common/components/dashboard/widgets/wgtIntegrationStatus/wgtIntegrationStatus.component.tpl.html","webpack://retail/./src/common/components/dashboard/widgets/wgtRefunds/wgtRefunds.component.tpl.html","webpack://retail/./src/common/components/dashboard/widgets/wgtSeasonalityCurve/wgtSeasonalityCurve.component.tpl.html","webpack://retail/./src/common/components/dashboard/widgets/wgtTopSold/wgtTopSold.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/address.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/articlelist.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/articlesearchsingleselect.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/confirmbutton.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/contactinfo.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/errorlist.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/formgrouprow.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/formgrouprowother.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/multiselect.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/searchlist/searchlist-contactinfo.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/singleselect.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/sortingtabledataheader.component.tpl.html","webpack://retail/./src/common/components/genericcomponents/variantdetailsearchsingleselect.component.tpl.html","webpack://retail/./src/common/components/navigation/navigationNode.component.tpl.html","webpack://retail/./src/common/directives/dashboard/dashboard.tpl.html","webpack://retail/./src/common/directives/dashboard/widgetBody.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettings.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsBusinessArea.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsHideTooltipLocation.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsMultipleLocations.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsTimePeriod.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtArticleNegativeBalance/wgtArticleNegativeBalance.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtCalHeatmap/wgtCalHeatmap.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtChart/wgtChart.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoLatestTransaction/wgtInfoLatestTransaction.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoQuickSaleFact/wgtInfoQuickSaleFact.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoSaleBusinessArea/wgtInfoSaleBusinessArea.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoSaleToLastYear/wgtInfoSaleToLastYear.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoTodayOrder/wgtInfoTodayOrder.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoUndeliveredInternalOrder/wgtInfoUndeliveredInternalOrder.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoYesterdaySaleBrv/wgtInfoYesterdaySaleBrv.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtInfoYesterdaySale/wgtInfoYesterdaySale.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtOrderAutoOrders/wgtOrderAutoOrders.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtPrintableImports/wgtPrintableImports.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtSaleTop/wgtSaleTop.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtSaleTwoWeek/wgtSaleTwoWeek.tpl.html","webpack://retail/./src/common/directives/dashboard/widgets/wgtUndeliveredOrders/wgtUndeliveredOrders.tpl.html","webpack://retail/./src/common/directives/loadSpinner/loadSpinner.tpl.html","webpack://retail/./src/common/services/dialogs/InvoiceConfirmationDialog/InvoiceConfirmationDialog.tpl.html","webpack://retail/./src/common/services/dialogs/colourChangeDialog/colourChangeDialog.tpl.html","webpack://retail/./src/common/services/dialogs/confirmationDialog/confirmationDialog.tpl.html","webpack://retail/./src/common/services/dialogs/deliveryConfirmationDialog/deliveryConfirmationDialog.tpl.html","webpack://retail/./src/common/services/dialogs/deliveryDocumentDownloadDialog/deliveryDocumentDownloadDialog.tpl.html","webpack://retail/./src/common/services/dialogs/importFinalizationDialog/importFinalizationDialog.tpl.html","webpack://retail/./src/common/services/dialogs/informationDialog/informationDialog.tpl.html","webpack://retail/./src/common/services/dialogs/inventoryCorrectionsDialog/inventoryCorrectionsDialog.tpl.html","webpack://retail/./src/common/services/dialogs/labelPrintingDialog/labelPrintingDialog.tpl.html","webpack://retail/./src/common/services/dialogs/loginDialog/loginDialog.tpl.html","webpack://retail/./src/common/services/dialogs/newInventoryDialog/newInventoryDialog.tpl.html","webpack://retail/./src/common/services/dialogs/printInventoryReportDialog/printInventoryReportDialog.tpl.html","webpack://retail/./src/common/services/dialogs/printInvoiceDialog/printInvoiceDialog.tpl.html","webpack://retail/./src/common/services/dialogs/printLanguageConfirmationDialog/printLanguageConfirmationDialog.tpl.html","webpack://retail/./src/common/services/dialogs/printPickingListDialog/printPickingListDialog.tpl.html","webpack://retail/./src/common/services/dialogs/purchaseOrderAnalysisFilterDialog/purchaseOrderAnalysisFilterDialog.tpl.html","webpack://retail/./src/common/services/dialogs/resetLogin/resetLogin.tpl.html","webpack://retail/./src/common/services/dialogs/salesTotalFilterDialog/salesTotalFilterDialog.tpl.html","webpack://retail/./src/common/services/dialogs/setFieldConfirmationDialog/setFieldConfirmationDialog.tpl.html","webpack://retail/./src/common/services/dialogs/updateAddressDialog/updateAddressDialog.tpl.html","webpack://retail/./src/common/services/dialogs/updateOrderNoteDialog/updateOrderNoteDialog.tpl.html","webpack://retail/./src/less/app.less?252a","webpack://retail/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://retail/./src/ sync ^(","webpack://retail/.././ sync ^.*\\.tpl\\.html","webpack://retail/external var \"angular\"","webpack://retail/ignored|C:\\projects\\erp-99l68\\Front\\node_modules\\cheerio\\node_modules\\htmlparser2\\lib|readable-stream","webpack://retail/ignored|C:\\projects\\erp-99l68\\Front\\node_modules\\xlsx|buffer"],"sourcesContent":["/**\n * angular-spinner version 0.8.1\n * License: MIT.\n * Copyright (C) 2013, 2014, 2015, 2016, Uri Shaked and contributors.\n */\n\n'format amd';\n\n(function (root) {\n\t'use strict';\n\n\tfunction factory(angular, Spinner) {\n\n\t\treturn angular\n\t\t\t.module('angularSpinner', [])\n\n\t\t\t.constant('SpinJSSpinner', Spinner)\n\n\t\t\t.provider('usSpinnerConfig', function () {\n\t\t\t\tvar _config = {}, _themes = {};\n\n\t\t\t\treturn {\n\t\t\t\t\tsetDefaults: function (config) {\n\t\t\t\t\t\t_config = config || _config;\n\t\t\t\t\t},\n\t\t\t\t\tsetTheme: function(name, config) {\n\t\t\t\t\t\t_themes[name] = config;\n\t\t\t\t\t},\n\t\t\t\t\t$get: function () {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tconfig: _config,\n\t\t\t\t\t\t\tthemes: _themes\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t})\n\n\t\t\t.factory('usSpinnerService', ['$rootScope', function ($rootScope) {\n\t\t\t\tvar config = {};\n\n\t\t\t\tconfig.spin = function (key) {\n\t\t\t\t\t$rootScope.$broadcast('us-spinner:spin', key);\n\t\t\t\t};\n\n\t\t\t\tconfig.stop = function (key) {\n\t\t\t\t\t$rootScope.$broadcast('us-spinner:stop', key);\n\t\t\t\t};\n\n\t\t\t\treturn config;\n\t\t\t}])\n\n\t\t\t.directive('usSpinner', ['SpinJSSpinner', 'usSpinnerConfig', function (SpinJSSpinner, usSpinnerConfig) {\n\t\t\t\treturn {\n\t\t\t\t\tscope: true,\n\t\t\t\t\tlink: function (scope, element, attr) {\n\t\t\t\t\t\tscope.spinner = null;\n\n\t\t\t\t\t\tscope.key = angular.isDefined(attr.spinnerKey) ? attr.spinnerKey : false;\n\n\t\t\t\t\t\tscope.startActive = angular.isDefined(attr.spinnerStartActive) ?\n\t\t\t\t\t\t\tscope.$eval(attr.spinnerStartActive) : scope.key ?\n\t\t\t\t\t\t\tfalse : true;\n\n\t\t\t\t\t\tfunction stopSpinner() {\n\t\t\t\t\t\t\tif (scope.spinner) {\n\t\t\t\t\t\t\t\tscope.spinner.stop();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tscope.spin = function () {\n\t\t\t\t\t\t\tif (scope.spinner) {\n\t\t\t\t\t\t\t\tscope.spinner.spin(element[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tscope.stop = function () {\n\t\t\t\t\t\t\tscope.startActive = false;\n\t\t\t\t\t\t\tstopSpinner();\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tscope.$watch(attr.usSpinner, function (options) {\n\t\t\t\t\t\t\tstopSpinner();\n\n\t\t\t\t\t\t\t// order of precedence: element options, theme, defaults.\n\t\t\t\t\t\t\toptions = angular.extend(\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tusSpinnerConfig.config,\n\t\t\t\t\t\t\t\tusSpinnerConfig.themes[attr.spinnerTheme],\n\t\t\t\t\t\t\t\toptions);\n\n\t\t\t\t\t\t\tscope.spinner = new SpinJSSpinner(options);\n\t\t\t\t\t\t\tif ((!scope.key || scope.startActive) && !attr.spinnerOn) {\n\t\t\t\t\t\t\t\tscope.spinner.spin(element[0]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, true);\n\n\t\t\t\t\t\tif (attr.spinnerOn) {\n\t\t\t\t\t\t\tscope.$watch(attr.spinnerOn, function (spin) {\n\t\t\t\t\t\t\t\tif (spin) {\n\t\t\t\t\t\t\t\t\tscope.spin();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tscope.stop();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tscope.$on('us-spinner:spin', function (event, key) {\n\t\t\t\t\t\t\tif (key === scope.key) {\n\t\t\t\t\t\t\t\tscope.spin();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tscope.$on('us-spinner:stop', function (event, key) {\n\t\t\t\t\t\t\tif (key === scope.key) {\n\t\t\t\t\t\t\t\tscope.stop();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tscope.$on('$destroy', function () {\n\t\t\t\t\t\t\tscope.stop();\n\t\t\t\t\t\t\tscope.spinner = null;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}]);\n\t}\n\n    if ((typeof module === 'object') && module.exports) {\n\t\t/* CommonJS module */\n\t\tmodule.exports = factory(require('angular'), require('spin.js'));\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t/* AMD module */\n\t\tdefine(['angular', 'spin'], factory);\n\t} else {\n\t\t/* Browser global */\n\t\tfactory(root.angular, root.Spinner);\n\t}\n}(this));\n","// @ngInject\nfunction stateConfig($stateProvider, $urlRouterProvider) {\n    $urlRouterProvider.when('', '/');\n    $urlRouterProvider.when('/', rootRedirect);\n    $stateProvider.state('app', {\n        abstract: true,\n        url: '',\n        templateUrl: 'app.tpl.html',\n        data: { pageTitle: 'CleverApps'},\n        resolve: {\n            currentUser: userResolve\n        }\n    });\n}\n\n// @ngInject\nfunction userResolve(AuthService) {\n    return AuthService.getUser();\n}\n\n// @ngInject\nfunction rootRedirect($state,AuthService) {\n    if (!AuthService.hasToken()) {\n        $state.transitionTo('login');\n        return;\n    }\n\n    AuthService.getUser().then(function() {\n        $state.transitionTo('main.dashboard');\n    },function() {\n        $state.transitionTo('login');\n    });\n}\n\nangular\n    .module('app', ['app.core','app.main','login', 'app.bridgeComponents'])\n    .config(stateConfig);\n","import type {\n  IAugmentedJQuery,\n  IComponentOptions,\n  IController,\n  IOnChangesObject,\n} from 'angular';\nimport React from 'react';\nimport {\n  addElement,\n  ReactElementWithContainer,\n  removeElement,\n} from './bridgeManager';\n\nexport function bridgeConverter<TProps extends Record<any, any>>(\n  reactComponent: React.ComponentType<TProps>,\n  propNames: (keyof TProps)[],\n): IComponentOptions {\n  const bindings = Object.fromEntries(propNames.map((prop) => [prop, '<']));\n\n  return {\n    bindings,\n    controller: [\n      '$element',\n      class implements IController {\n        private container?: HTMLElement;\n        private reactElement?: ReactElementWithContainer;\n        private reactElementRef?: React.RefObject<ComponentWrapperRef> =\n          React.createRef();\n        private bindings?: TProps;\n\n        constructor($element: IAugmentedJQuery) {\n          this.container = $element[0];\n        }\n\n        public $onChanges(onChangesObj: IOnChangesObject) {\n          const currentBindings = (this.bindings ?? {}) as TProps;\n\n          const newBindings = Object.fromEntries(\n            Object.entries(onChangesObj).map(\n              ([bindingName, { currentValue }]) => [bindingName, currentValue],\n            ),\n          ) as Partial<TProps>;\n\n          this.bindings = {\n            ...currentBindings,\n            ...newBindings,\n          };\n\n          this.updateProps();\n        }\n\n        public $onInit() {\n          this.reactElement = {\n            container: this.container!,\n            element: React.createElement(ComponentWrapper, {\n              component: reactComponent,\n              initialProps: this.bindings!,\n              ref: this.reactElementRef,\n            }),\n          };\n          addElement(this.reactElement);\n        }\n\n        public $onDestroy() {\n          if (this.reactElement) {\n            removeElement(this.reactElement);\n          }\n          this.reactElement = undefined;\n          this.reactElementRef = undefined;\n          this.container = undefined;\n        }\n\n        private updateProps() {\n          this.reactElementRef?.current?.updateProps(this.bindings);\n        }\n      },\n    ],\n  };\n}\n\ninterface ComponentWrapperRef {\n  updateProps(newProps: any): void;\n}\n\ninterface ComponentWrapperProps {\n  component: React.ComponentType<any>;\n  initialProps: Record<any, any>;\n}\n\nconst ComponentWrapper = React.forwardRef(function ComponentWrapper(\n  { component: Component, initialProps }: ComponentWrapperProps,\n  ref: React.Ref<ComponentWrapperRef>,\n) {\n  const [props, setProps] = React.useState<Record<any, any>>(initialProps);\n\n  React.useImperativeHandle(ref, () => ({\n    updateProps(newProps: Record<any, any>) {\n      setProps(newProps);\n    },\n  }));\n\n  return <Component {...props} />;\n});\n","import { reactEvents } from \"../bridge/reactEvents\";\n\nexport function FooBar({hello}:{hello:string}) {\n    return <div>\n        {hello}\n        <button onClick={() => reactEvents.fooBar.dispatch()}>hej</button>\n    </div>\n}","import { angularEvents } from \"../bridge/angularEvents\";\nimport { reactEvents } from \"../bridge/reactEvents\";\nimport { useEffect, useState, useRef } from \"react\";\nimport { Formik, Field, Form, FieldArray, useFormikContext, useField } from \"formik\";\nimport * as Yup from \"yup\";\nimport { MetaField } from \"./MetaFields\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nexport interface MetaFieldValue {\n  id: number;\n  name: string;\n  articleId: number;\n  metaFieldId: number;\n  type: string;\n  value: any;\n  options: MetaFieldValueOption[];\n}\n\nexport interface MetaFieldValueOption {\n  id: number;\n  value: string;\n}\n\nfunction DropdownField({\n  options,\n  name,\n  isEditing,\n}: {\n  options: MetaFieldValueOption[];\n  name: string;\n  isEditing: boolean;\n}) {\n  return (\n    <Field as=\"select\" name={name} disabled={!isEditing}>\n      {options.map((option) => (\n        <option key={option.id} value={option.value}>\n          {option.value}\n        </option>\n      ))}\n    </Field>\n  );\n}\n\nfunction formatDate(date: Date) {\n  let year = date.getFullYear();\n  let month = date.getMonth() + 1;\n  let day = date.getDate();\n  let formattedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;\n  return formattedDate;\n}\n\nfunction DatepickerField({ name, isEditing }: { name: string; isEditing: boolean }) {\n  const { setFieldValue } = useFormikContext<any>();\n  const [field, meta] = useField(name);\n\n  const handleDateChange = (date: Date | null) => {\n    if (date) {\n      let formattedDate = formatDate(date);\n      setFieldValue(name, formattedDate);\n    } else {\n      setFieldValue(name, \"\");\n    }\n  };\n\n  return (\n    <div>\n      <DatePicker\n        dateFormat=\"yyyy-MM-dd\"\n        selected={field.value ? new Date(field.value) : null}\n        onChange={handleDateChange}\n        disabled={!isEditing}\n      />\n      {meta.touched && meta.error ? (\n        <div className=\"error\">{meta.error}</div>\n      ) : null}\n    </div>\n  );\n}\n\nfunction MetaFieldValueComponent({\n  field,\n  isEditing,\n  index,\n  onChange\n}: {\n  field: MetaFieldValue;\n  isEditing: boolean;\n  index: number;\n  onChange: (index: number, value: any) => void;\n}) {\n  const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => {\n    let value: any = e.target.value;\n    if (field.type === \"number\") {\n      value = value === \"\" ? \"\" : parseFloat(value);\n    }\n    onChange(index, value);\n  };\n\n  switch (field.type) {\n    case \"short text\":\n      return (\n        <Field\n          name={`metaFields.${index}.value`}\n          type=\"text\"\n          readOnly={!isEditing}\n          component=\"input\"\n          onChange={handleChange}\n        />\n      );\n    case \"long text\":\n      return (\n        <Field\n          name={`metaFields.${index}.value`}\n          component=\"textarea\"\n          readOnly={!isEditing}\n          onChange={handleChange}\n        />\n      );\n    case \"number\":\n      return (\n        <Field\n          name={`metaFields.${index}.value`}\n          type=\"number\"\n          readOnly={!isEditing}\n          component=\"input\"\n          onChange={handleChange}\n        />\n      );\n    case \"list\":\n      const newOption: MetaFieldValueOption = {\n        id: 0,\n        value: \"\",\n      };\n\n      const updatedOptions = field.options.concat(newOption);\n      return (\n        <DropdownField\n          options={updatedOptions}\n          name={`metaFields.${index}.value`}\n          isEditing={isEditing}\n        />\n      );\n    case \"date\":\n      return (\n        <DatepickerField\n          name={`metaFields.${index}.value`}\n          isEditing={isEditing}\n        />\n      );\n    default:\n      return <span>Unknown type</span>;\n  }\n}\n\nfunction saveMetaFieldValues(values: MetaFieldValue[]) {\n  const formattedValues = values.map(field => {\n    if (field.type === \"number\") {\n      field.value = field.value ?? \"\";\n    }\n    return field;\n  });\n  reactEvents.saveMetaFieldValues.dispatch(formattedValues);\n}\n\nexport function MetaFieldValues({\n  values,\n  initialIsEditing,\n}: {\n  values: MetaFieldValue[];\n  fields: MetaField[];\n  initialIsEditing: boolean;\n}) {\n  const [isEditing, setIsEditing] = useState(initialIsEditing);\n\n  const formValuesRef = useRef(values);\n\n  useEffect(() => {\n    const unsub = angularEvents.isEditing.subscribe((e: boolean) => {\n      setIsEditing(e);\n    });\n\n    const unsubSaveArticle = angularEvents.saveArticle.subscribe(() => {\n      saveMetaFieldValues(formValuesRef.current);\n    });\n\n    return () => {\n      unsub();\n      unsubSaveArticle();\n    };\n  }, [values]);\n\n  useEffect(() => {\n    console.log(`isEditing changed: ${isEditing}`);\n  }, [isEditing]);\n\n  const validationSchema = Yup.object().shape({\n    metaFields: Yup.array().of(\n      Yup.object().shape({\n        name: Yup.string().required(\"Name is required\"),\n        type: Yup.string().required(\"Type is required\"),\n        value: Yup.mixed().required(\"Value is required\"),\n      })\n    ),\n  });\n\n  const formattedValues = values.map(field => {\n    if (field.type === \"date\") {\n      field.value = field.value ? formatDate(new Date(field.value)) : \"\";\n    }\n    if (field.type === \"number\") {\n      field.value = field.value ?? \"\";\n    }\n    return field;\n  });\n\n  return (\n    <div>\n      <h2>Meta field values</h2>\n      <p>Set values specific to this article</p>\n      <Formik\n        initialValues={{ metaFields: formattedValues }}\n        validationSchema={validationSchema}\n        onSubmit={(formValues) => {\n          saveMetaFieldValues(formValues.metaFields);\n        }}\n      >\n        {({ values, handleSubmit, setFieldValue }) => {\n          formValuesRef.current = values.metaFields;\n\n          const handleFieldChange = (index: number, value: any) => {\n            setFieldValue(`metaFields.${index}.value`, value);\n            formValuesRef.current[index].value = value;\n          };\n\n          return (\n            <Form onSubmit={handleSubmit}>\n              <FieldArray name=\"metaFields\">\n                {() => (\n                  <ul>\n                    {values.metaFields.map((metaFieldValue, index) => (\n                      <li\n                        key={index}\n                        style={{ listStyle: \"none\", marginBottom: \"1rem\" }}\n                      >\n                        <div>\n                          <strong>{metaFieldValue.name}</strong>\n                        </div>\n                        <MetaFieldValueComponent\n                          field={metaFieldValue}\n                          isEditing={isEditing}\n                          index={index}\n                          onChange={handleFieldChange}\n                        />\n                      </li>\n                    ))}\n                  </ul>\n                )}\n              </FieldArray>\n            </Form>\n          );\n        }}\n      </Formik>\n    </div>\n  );\n}\n","import { angularEvents } from \"../bridge/angularEvents\";\nimport { reactEvents } from \"../bridge/reactEvents\";\nimport { useEffect, useState, useRef } from \"react\";\nimport { Formik, Field, FieldArray, Form, ErrorMessage } from \"formik\";\nimport * as Yup from \"yup\";\n\nexport interface Option {\n  id: string;\n  value: string;\n}\n\nexport interface MetaField {\n  id?: number;\n  name: string;\n  isVisibleOnPrint: boolean;\n  positionX: number;\n  positionY: number;\n  type: string;\n  options: Option[];\n}\n\nfunction saveMetaFields(fields: MetaField[]) {\n  console.log(\"Saving meta fields now!\");\n  reactEvents.saveMetaFields.dispatch(fields);\n}\n\nexport function MetaFields({\n  fields,\n  initialIsEditing,\n}: {\n  fields: MetaField[];\n  initialIsEditing: boolean;\n}) {\n  const [isEditing, setIsEditing] = useState(initialIsEditing);\n\n  // Use a ref to store form values\n  const formValuesRef = useRef(fields);\n\n  useEffect(() => {\n    const unsub = angularEvents.isEditing.subscribe((e: boolean) => {\n      setIsEditing(e);\n    });\n\n    const unsubSaveArticle = angularEvents.saveArticle.subscribe(() => {\n      saveMetaFields(formValuesRef.current);\n    });\n\n    return () => {\n      unsub();\n      unsubSaveArticle();\n    };\n  }, []);\n\n  useEffect(() => {\n    console.log(`isEditing changed: ${isEditing}`);\n  }, [isEditing]);\n\n  const initialValues = {\n    metaFields: fields.map((field) => ({\n      ...field,\n      options: field.options || [],\n      newOption: \"\",\n    })),\n  };\n\n  const typeOptions = [\"short text\", \"long text\", \"number\", \"date\", \"list\"];\n\n  return (\n    <div>\n      <h2>Meta fields</h2>\n      <p>\n        Apply to all articles, only values can be added on the article, see Meta\n        field values above\n      </p>\n      <div>\n        <Formik\n          initialValues={initialValues}\n          validationSchema={Yup.object({\n            metaFields: Yup.array().of(\n              Yup.object().shape({\n                name: Yup.string().required(\"Name is required\"),\n                type: Yup.string().required(\"Type is required\")\n              })\n            ),\n          })}\n          onSubmit={async (values) => {\n            await new Promise((r) => setTimeout(r, 500));\n            console.log(JSON.stringify(values, null, 2));\n            formValuesRef.current = values.metaFields; // Update the ref with the latest form data\n          }}\n        >\n          {({ values, setFieldValue }) => {\n            // Update formValuesRef on every render to keep it up to date with form values\n            formValuesRef.current = values.metaFields;\n\n            return (\n              <Form>\n                <FieldArray name=\"metaFields\">\n                  {({ remove, push }) => (\n                    <div>\n                      {values.metaFields.length > 0 &&\n                        values.metaFields.map((metaField, index) => (\n                          <div className=\"row\" key={index}>\n                            <div className=\"col\" style={{ padding: \"10px\" }}>\n                              <label htmlFor={`metaFields.${index}.name`}>\n                                Name\n                              </label>\n                              <Field\n                                name={`metaFields.${index}.name`}\n                                type=\"text\"\n                                disabled={!isEditing}\n                              />\n                              <ErrorMessage\n                                name={`metaFields.${index}.name`}\n                                component=\"div\"\n                                className=\"field-error\"\n                              />\n                            </div>\n                            <div className=\"col\" style={{ padding: \"10px\" }}>\n                              <label htmlFor={`metaFields.${index}.type`}>\n                                Type\n                              </label>\n                              <Field\n                                name={`metaFields.${index}.type`}\n                                as=\"select\"\n                                disabled={!isEditing}\n                              >\n                                <option value=\"\">Select a type</option>\n                                {typeOptions.map((option) => (\n                                  <option key={option} value={option}>\n                                    {option}\n                                  </option>\n                                ))}\n                              </Field>\n                              <ErrorMessage\n                                name={`metaFields.${index}.type`}\n                                component=\"div\"\n                                className=\"field-error\"\n                              />\n                            </div>\n                            <div className=\"col\" style={{ padding: \"10px\" }}>\n                              <label>\n                                <Field\n                                  name={`metaFields.${index}.isVisibleOnPrint`}\n                                  type=\"checkbox\"\n                                  disabled={!isEditing}\n                                />\n                                Visible on Print\n                              </label>\n                            </div>\n                            {/* Only show these controls if the selected type is \"list\" */}\n                            {metaField.type === \"list\" && (\n                              <>\n                                {isEditing ? (\n                                  <div\n                                    className=\"col\"\n                                    style={{ padding: \"10px\" }}\n                                  >\n                                    <label\n                                      htmlFor={`metaFields.${index}.newOption`}\n                                    >\n                                      Add Option\n                                    </label>\n                                    <input\n                                      type=\"text\"\n                                      id={`metaFields.${index}.newOption`}\n                                      value={metaField.newOption || \"\"}\n                                      onChange={(e) =>\n                                        setFieldValue(\n                                          `metaFields.${index}.newOption`,\n                                          e.target.value\n                                        )\n                                      }\n                                      disabled={!isEditing}\n                                    />\n                                    <button\n                                      type=\"button\"\n                                      onClick={() => {\n                                        if (metaField.newOption) {\n                                          const newOption = {\n                                            value: metaField.newOption,\n                                          };\n                                          const updatedOptions = [\n                                            ...metaField.options,\n                                            newOption,\n                                          ];\n                                          setFieldValue(\n                                            `metaFields.${index}.options`,\n                                            updatedOptions\n                                          );\n                                          setFieldValue(\n                                            `metaFields.${index}.newOption`,\n                                            \"\"\n                                          ); \n                                        }\n                                      }}\n                                      disabled={!isEditing}\n                                    >\n                                      Add\n                                    </button>\n                                    <div\n                                      className=\"col\"\n                                      style={{ padding: \"10px\" }}\n                                    >\n                                      <label>Options:</label>\n                                      <ul>\n                                        {metaField.options.map((option, i) => (\n                                          <li key={option.value}>\n                                            {option.value}\n                                            <button\n                                              type=\"button\"\n                                              onClick={() => {\n                                                const updatedOptions =\n                                                  metaField.options.filter(\n                                                    (_, optIndex) =>\n                                                      optIndex !== i\n                                                  );\n                                                setFieldValue(\n                                                  `metaFields.${index}.options`,\n                                                  updatedOptions\n                                                );\n                                              }}\n                                              disabled={!isEditing}\n                                            >\n                                              Remove\n                                            </button>\n                                          </li>\n                                        ))}\n                                      </ul>\n                                    </div>\n                                  </div>\n                                ) : (\n                                  <div\n                                    className=\"col\"\n                                    style={{ padding: \"10px\" }}\n                                  >\n                                    <label>Options:</label>\n                                    <select defaultValue=\"\">\n                                      <option value=\"\">View options</option>\n                                      {metaField.options.map((option) => (\n                                        <option\n                                          key={option.value}\n                                          value={option.value}\n                                        >\n                                          {option.value}\n                                        </option>\n                                      ))}\n                                    </select>\n                                  </div>\n                                )}\n                              </>\n                            )}\n                            {isEditing && (\n                              <div className=\"col\" style={{ padding: \"10px\" }}>\n                                <button\n                                  type=\"button\"\n                                  className=\"secondary\"\n                                  onClick={() => remove(index)}\n                                  disabled={!isEditing}\n                                >\n                                  X\n                                </button>\n                              </div>\n                            )}\n                          </div>\n                        ))}\n                      {isEditing && (\n                        <button\n                          type=\"button\"\n                          className=\"secondary\"\n                          onClick={() =>\n                            push({\n                              name: \"\",\n                              type: \"\",\n                              isVisibleOnPrint: false,\n                              positionX: 1,\n                              positionY: 1,\n                              options: [],\n                            })\n                          }\n                          disabled={!isEditing}\n                        >\n                          Add meta field\n                        </button>\n                      )}\n                    </div>\n                  )}\n                </FieldArray>\n              </Form>\n            );\n          }}\n        </Formik>\n      </div>\n    </div>\n  );\n}\n","// Imports\nimport { Fragment, ReactNode, useEffect, useState } from \"react\";\nimport { angularEvents } from \"../../bridge/angularEvents\";\nimport { Formik, Field, FieldArray, Form, ErrorMessage, FormikProps, FormikConfig } from \"formik\";\nimport { reactEvents } from \"../../bridge/reactEvents\";\n\n// Exports\nexport function ColourChange({articleId, initialArticleColours}: {articleId: number, initialArticleColours: ArticleColours}) {\n    let [articleColours, setArticleColours] = useState(initialArticleColours);\n\n    useEffect(() => {\n        const unsub = angularEvents.articleColoursHasChanged.subscribe((newArticleColours: ArticleColours) => {\n            console.log(\"Got the following articleColours: \", newArticleColours);\n            \n            const uniqueColourNames = newArticleColours.ArticleColours\n                .map(colour => colour.ColourName)\n                .filter((value, index, self) => self.indexOf(value) == index);\n\n            console.log(\"Adding unique colour names to values\");\n            newArticleColours.UniqueColourNames = uniqueColourNames;\n            setArticleColours(newArticleColours);\n        });\n        return () => {\n            unsub();\n          };\n    }, []);\n\n    // Render this if we haven't gotten the articleColours from backend yet\n    if (!articleColours) {\n        return (<div className=\"fa fa-clock-o\"></div>);\n    }\n\n    // Render this if we have all the information we need to present the UI\n    return (\n        <>\n            <h2> \n                Colour change for article with Id: { articleId }\n            </ h2>\n            <div>\n                ArticleColours: { JSON.stringify(articleColours) }\n            </ div>\n            <Formik<ArticleColours>\n                initialValues = { articleColours }\n                onSubmit = { (values, formikHelpers) => onSubmitForm(values, formikHelpers) }>\n                { renderForm }\n            </ Formik>\n        </>\n    );\n}\n\n// Local functions\n// function renderForm({ isSubmitting }: { isSubmitting: boolean }) : JSX.Element {\nfunction renderForm(formikState: any) : JSX.Element {\n    console.log(\"formikState: \", formikState)\n    const { values, isSubmitting } = formikState;\n\n    if (!Array.isArray(values.articleColours)) {\n        return (<div>values.articleColours is not an array</div>)\n    }\n\n    return (\n        <Form>\n            <div>\n                values: { JSON.stringify(values.articleColours) }\n            </ div>\n            <div>\n                { values.articleColours.map((colour) => (<div> {JSON.stringify(colour)} </div>)) }\n            </div>\n            <Field as=\"select\" name=\"articleColours\">\n                <option key=\"0\" value=\"0\">Select a type</option>\n                    {\n                     values.articleColours.map((colour) => (\n                    <option key={colour.articleVariantId} value={colour.colourName}>\n                        { colour.colourName }\n                    </option>\n                    ))\n                    }\n            </Field>\n            <Field type=\"text\" name=\"newColourName\" placeholder=\"\"></Field>\n            <button type=\"submit\" disabled={ isSubmitting }> Submit </button>\n        </ Form>\n    );\n}\n\nasync function onSubmitForm(values: any, { setSubmitting } : { setSubmitting: Function }) {\n    console.log(\"onSubmit with values: \", values);\n    console.log(\"SetSubmitting: \", setSubmitting);\n    // Do call to some backend\n    reactEvents.saveColourChange.dispatch(values);\n    // On call return, continue here\n    setSubmitting(false);\n}\n\n// Classes\nexport class ArticleColours {\n    ArticleId: number = 0;\n    ArticleColours: ArticleColour[] = [];\n    UniqueColourNames: string[] = [];\n}\nclass ArticleColour {\n    ArticleVariantId: number = 0;\n    ColourName: string = \"\";\n}\n","import { bridgeConverter } from '../../bridge/bridgeConverter.tsx';\nimport { FooBar } from '../../react/FooBar';\nimport { MetaFieldValues } from '../../react/MetaFieldValues';\nimport { MetaFields } from '../../react/MetaFields';\nimport { ColourChange } from '../../react/product/colourChange'\n \nangular\n  .module('app.bridgeComponents', [])\n  .component('fooBar', bridgeConverter(FooBar, ['hello']))\n  .component('metaFieldValues', bridgeConverter(MetaFieldValues, ['values', 'initialIsEditing']))\n  .component('metaFields', bridgeConverter(MetaFields, ['fields', 'initialIsEditing']))\n  .component('colourChange', bridgeConverter(ColourChange, ['articleId']));","\n\n// @ngInject\nfunction angularDataConfig(DSProvider, ENV) {\n    DSProvider.defaults.basePath = ENV.BASE_PATH;\n    DSProvider.defaults.rms2Path = ENV.RMS2_BASE_PATH;\n    DSProvider.defaults.ENV = ENV;\n}\n\n// @ngInject\nfunction httpProviderConfig($httpProvider) {\n    $httpProvider.interceptors.push('httpInterceptor');\n}\n\n// @ngInject\nfunction httpInterceptor($injector,$q) {\n    return {\n        responseError: function(rejection) {\n            var AuthService = $injector.get('AuthService');\n            var ToasterService = $injector.get('ToasterService');\n            var $translate = $injector.get('$translate');\n            if (rejection.status === 401) {\n                AuthService.logOut();\n            } else if (rejection.status === 403) {\n                ToasterService.showError($translate.instant('errors.notallowed'));\n            }\n            return $q.reject(rejection);\n        }\n    };\n}\n\n// @ngInject\nfunction translationConfig($translateProvider) {\n    $translateProvider.translations('en', {\n        'common.error': 'Error',\n        'login.tenant': 'Company',\n        'common.login': 'Log in',\n        'login.header': 'Sign In',\n        'login.password': 'Password',\n        'login.title': 'Login',\n        'login.username': 'Username',\n        'common.resetPasswordQuestion': 'Reset password?',\n        'user.resetPasswordTitle': 'Reset password',\n        'user.resetPasswordInstruction': 'Please enter your company name, and username or email address. If your email address is in the system you will receive an email with a security code that you will use in the next step. If you haven\\'t saved an email address you will need to contact support.',\n        'common.errorMissingInputOrTenant': 'Please enter both company and username/email.',\n        'common.errorEmailNotValid': 'Email address not a valid format.',\n        'address.usernameOrEmail': 'Username or email address',\n        'user.resetPassword': 'Reset password',\n        'user.resetPasswordConfirmInstruction': 'Copy the security code that was sent to you in the email and enter a new password. Confirm the new password and click on Save new password.',\n        'login.securityCode': 'Security code',\n        'login.newPassword': 'New password',\n        'login.confirmPassword': 'Confirm password',\n        'user.confirmNewPassword': 'Save new password',\n        'common.errorMissingPasswordOrConfirmation': 'Please enter both password and confirmation.',\n        'common.errorPasswordsNotMatching': 'Passwords do not match.',\n        'common.errorMissingSecurityCode': 'Please enter the security code from the email.',\n        'user.resetPasswordFinalInstruction': 'Password saved. You can close the popup and log in.'\n    });\n    $translateProvider.translations('se', {\n        'common.error': 'Ett fel uppstod',\n        'login.tenant': 'Företag',\n        'common.login': 'Logga in',\n        'login.header': 'Logga in',\n        'login.password': 'Lösenord',\n        'login.title': 'Inloggning',\n        'login.username': 'Användarnamn',\n        'common.resetPasswordQuestion': 'Återställ lösenord?',\n        'user.resetPasswordTitle': 'Återställ lösenord',\n        'user.resetPasswordInstruction': 'Fyll i företagsnamn, och användarnamn eller epostadress. Om din epostadressen finns i systemet kommer du få en kod via epost som du använder i nästa steg. Har du inte sparat en epostadress på ditt konto behöver du kontakta support.',\n        'common.errorMissingEmailOrTenant': 'Var god fyll i både företag och användarnamn/epostadress.',\n        'common.errorEmailNotValid': 'Epostadressen är inte giltig.',\n        'address.usernameOrEmail': 'Användarnamn eller epostadress',\n        'user.resetPassword': 'Återställ lösenord',\n        'user.resetPasswordConfirmInstruction': 'Kopiera in koden som skickades till dig i epostmeddelande och fyll i ett nytt lösenord. Bekräfta det nya lösenordet och klicka på Spara nytt lösenord.',\n        'login.securityCode': 'Säkerhetskod',\n        'login.newPassword': 'Nytt lösenord',\n        'login.confirmPassword': 'Bekräfta lösenord',\n        'user.confirmNewPassword': 'Spara nytt lösenord',\n        'common.errorMissingPasswordOrConfirmation': 'Var god fyll i både lösenord och lösenordsbekräftelse.',\n        'common.errorPasswordsNotMatching': 'Lösenorden stämmer inte överens.',\n        'common.errorMissingSecurityCode': 'Var god fyll i säkerhetskoden.',\n        'user.resetPasswordFinalInstruction': 'Lösenordet sparat. Du kan stänga popupen och logga in som vanligt.'\n    });\n    $translateProvider.useSanitizeValueStrategy('escaped');\n    $translateProvider.useLocalStorage();\n    $translateProvider.useUrlLoader('/api/localization/resources');\n    $translateProvider.preferredLanguage('se');\n    $translateProvider.fallbackLanguage('en');\n}\n\nangular.module('constant', []).constant('ENV', {\n    BASE_PATH: process.env.BASE_PATH,\n    NAME: process.env.NAME,\n    FLEXMONSTER_KEY: process.env.FLEXMONSTER_KEY,\n    RMS2_BASE_PATH: process.env.RMS2_BASE_PATH,\n});\n\nangular\n    .module('core.config', [])\n    .factory('httpInterceptor',httpInterceptor)\n    .config(httpProviderConfig)\n    .config(angularDataConfig)\n    .config(translationConfig);\n","require ('../../version');\n\nangular\n    .module('app.core', [\n            'js-data',\n            'ui.router',\n            'ui.select',\n            'ngCookies',\n            'pascalprecht.translate',\n            //'templates-app',\n            'ui.bootstrap',\n            'resources',\n            'services',\n            'app.version',\n            'decorators.bootstrapModal',\n            'wj',\n            'gridster',\n            'googlechart',\n            'directives',\n            'filters',\n            'constant',\n            'core.init',\n            'core.config',\n            'core.values',\n            'toastr',\n            'components',\n            'chart.js'\n        ]);\n","// @ngInject\nfunction ResourceInit(DS) {\n    DS.defineResource({\n        name: 'article',\n        idAttribute: 'id',\n        endpoint: 'articles'\n    });\n\n    DS.defineResource({\n        name: 'articlecollections',\n        idAttribute: 'id',\n        endpoint: 'articlecollections'\n    });\n\n    DS.defineResource({\n        name: 'articlevariants',\n        idAttribute: 'id',\n        endpoint: 'articlevariants'\n    });\n\n    DS.defineResource({\n        name: 'basedonarticle',\n        idAttribute: 'id',\n        endpoint: 'articlevariants/basedonarticle'\n    });\n\n    DS.defineResource({\n        name: 'brand',\n        idAttribute: 'id',\n        endpoint: 'brands'\n    });\n\n    DS.defineResource({\n        name: 'company',\n        idAttribute: 'id',\n        endpoint: 'companies'\n    });\n\n    DS.defineResource({\n        name: 'country',\n        idAttribute: 'id',\n        endpoint: 'countries'\n    });\n\n    DS.defineResource({\n        name: 'dashboard',\n        idAttribute: 'id',\n        endpoint: 'dashboard'\n    });\n\n    DS.defineResource({\n        name: 'itemgroups',\n        idAttribute: 'id',\n        endpoint: 'itemgroups'\n    });\n\n    DS.defineResource({\n        name: 'location',\n        idAttribute: 'id',\n        endpoint: 'locations'\n    });\n\n    DS.defineResource({\n        name: 'mainGroup',\n        idAttribute: 'id',\n        endpoint: 'maingroups',\n        relations: {\n            hasMany: {\n                subcategory: {\n                    localField: 'subcategories',\n                    foreignKey: 'mainGroupId'\n                }\n            }\n        }\n    });\n\n    DS.defineResource({\n        name:'order',\n        idAttribute: 'id',\n        endpoint: 'orders'\n    });\n\n    DS.defineResource({\n       name:'orderarticle',\n        idAttribute: 'id',\n        endpoint: 'orderarticles'\n    });\n\n    DS.defineResource({\n        name: 'subcategory',\n        idAttribute: 'id',\n        endpoint: 'subcategories',\n        relations: {\n            belongsTo: {\n                mainGroup: {\n                    parent: true,\n                    localKey: 'mainGroupId',\n                    localField: 'mainGroup'\n                }\n            }\n        }\n    });\n\n    DS.defineResource({\n        name: 'user',\n        idAttribute: 'id',\n        endpoint: 'users'\n    });\n\n    DS.defineResource({\n        name: 'variant',\n        idAttribute: 'id',\n        endpoint: 'variants'\n    });\n\n    DS.defineResource({\n        name: 'variantgroup',\n        idAttribute: 'id',\n        endpoint: 'variantgroups'\n    });\n\n    DS.defineResource({\n        name: 'vats',\n        idAttribute: 'id',\n        endpoint: 'vats'\n    });\n}\n\nangular\n    .module('init.angularData',[])\n    .run(ResourceInit);\n"," // @ngInject\nfunction setRootScopeVariables($rootScope,$state,AuthService) {\n    $rootScope.$state = $state;\n    $rootScope.canAccess = AuthService.canAccess;\n}\n\n// @ngInject\nfunction initializeAuthService(AuthService) {\n    AuthService.setToken();\n}\n\n// @ngInject\nfunction eventSubscribers($rootScope,loadSpinnerService, VersionService) {\n    // When we go to a new state, pause the state change and check if we are authorized\n    $rootScope.$on('$stateChangeStart', function(e, toState, toParams,fromState,fromParams) {\n        $rootScope.$applyAsync(loadSpinnerService.start('mainSpinner'));\n        $rootScope.toState = toState;\n        $rootScope.toParams = toParams;\n    });\n\n\n    $rootScope.$on('$stateChangeSuccess', function(event, toState) {\n\n        //reload client if version has changed\n        if (VersionService.hasVersionChanged && VersionService.allowReloadOnStateChange) {\n            VersionService.reload();\n        } else {\n            loadSpinnerService.stop('mainSpinner',{force:true});\n        }\n        loadSpinnerService.stop('mainSpinner',{force:true});\n\n        if (angular.isDefined(toState.data.pageTitle)) {\n            $rootScope.pageTitle = toState.data.pageTitle;\n        }\n    });\n\n    $rootScope.$on('$stateChangeError', function() {\n        loadSpinnerService.stop('mainSpinner',{force:true});\n    });\n}\n\nangular\n    .module('core.init', ['init.angularData'])\n    .run(setRootScopeVariables)\n    .run(initializeAuthService)\n    .run(eventSubscribers);\n","angular\n        .module('core.values', [])\n        .value('apiToken',{token:null});\n","// @ngInject\nfunction VersionService($rootScope,$timeout, $http, $window) {\n\n    var currentPromise = null;\n    var started = false;\n    var checkInterval = 30 * 1000;\n\n    var service = {\n        start: start,\n        stop: stop,\n        hasVersionChanged: false,\n        reload: reload,\n        allowReloadOnStateChange: false\n    };\n\n    return service;\n\n    function start() {\n        if (service.hasVersionChanged) {\n            return;\n        }\n        if (currentPromise) {\n            $timeout.cancel(currentPromise);\n        }\n        started = true;\n        currentPromise = $timeout(checkVersion, checkInterval);\n    }\n\n    function stop() {\n        if (currentPromise) {\n            started = false;\n            $timeout.cancel(currentPromise);\n        }\n    }\n\n    function reload() {\n        $window.location.reload();\n    }\n\n    function checkVersion() {\n        var url = 'version.json?nocache=' + (new Date()).getTime();\n        $http.get(url)\n        .then(function(response) {\n            if (response.data.version !== '1.0.0') {\n                console.log('version changed');\n                service.hasVersionChanged = true;\n                started = false;\n                $rootScope.$emit('Version.Changed', response.data.version);\n            }\n\n            if (started) {\n                currentPromise = $timeout(checkVersion, checkInterval);\n            }\n        });\n    }\n}\n\nangular\n    .module('app.version', [])\n    .factory('VersionService', VersionService);\n","// @ngInject\nfunction AuthApiService($q,DS,DSHttpAdapter,ResourcesService) {\n\n    return {\n        getToken: getToken\n    };\n\n    function getToken(username, password, tenantName) {\n        var deferred = $q.defer();\n\n        var data = {\n            'username': username,\n            'password': password,\n            'tenantName': tenantName\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'auth', data).then(function(response) {\n            deferred.resolve(response.data.token);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('auth.api',[])\n    .factory('AuthApiService', AuthApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('login', {\n        url: '/login',\n        controller: 'LoginController',\n        data: { pageTitle: 'Login' }\n\n    });\n}\n\n// @ngInject\nfunction LoginController($location,AuthService) {\n    if (!AuthService.hasToken()) {\n        AuthService.showLogin();\n    } else {\n        $location.path(\"/\");\n    }\n}\n\nangular\n    .module('login', ['auth.api'])\n    .config(stateConfig)\n    .controller('LoginController', LoginController);\n","// @ngInject\nfunction AnalysisApiService($q, $window, DS, ResourcesService, DSHttpAdapter) {\n\n    var endpoint = 'analysis';\n\n    return {\n        getReports: ResourcesService.apiFactory.get(endpoint + '/getReports'),\n        saveReport: saveReport,\n        getDataSources: ResourcesService.apiFactory.get(endpoint + '/getDataSources'),\n        getUserReports: ResourcesService.apiFactory.get(endpoint + '/getUserReports'),\n        saveUserReport: saveUserReport,\n        deleteUserReport: deleteUserReport,\n        getSharedReports: ResourcesService.apiFactory.get(endpoint + '/getSharedReports'),\n        getPdfTemplates: ResourcesService.apiFactory.get(endpoint + '/getPdfTemplates'),\n        savePdfTemplate: savePdfTemplate,\n        getReportGroups: ResourcesService.apiFactory.get(endpoint + '/getReportGroups'),\n        saveUserReportSortOrder: saveUserReportSortOrder,\n        getLocalization: ResourcesService.apiFactory.get(endpoint + '/getLocalization'),\n        getUserReportsToConvert: ResourcesService.apiFactory.get(endpoint + '/getUserReportsToConvert'),\n        saveConvertedUserReport: saveConvertedUserReport,\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations')\n    };\n\n    function saveReport(report) {\n        var deferred = $q.defer();\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'analysis/saveReport', report).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function saveUserReport(userReport) {\n        var deferred = $q.defer();\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'analysis/saveUserReport', userReport).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteUserReport(userReport) {\n        var deferred = $q.defer();\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'analysis/deleteUserReport', userReport).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function savePdfTemplate(pdfTemplate) {\n        var deferred = $q.defer();\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'analysis/savePdfTemplate', pdfTemplate).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function saveUserReportSortOrder(reports) {\n        var deferred = $q.defer();\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'analysis/updateUserReportSortOrder', reports).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function saveConvertedUserReport(userReport) {\n        var deferred = $q.defer();\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'analysis/saveConvertedUserReport', userReport).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n}\n\nangular.module('analysis.api', [])\n  .factory('AnalysisApiService', AnalysisApiService);\n","\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('analysis', {\n        url: '/analysis',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/analysis/analysis.tpl.html',\n        controller: 'MainAnalysisController as vm'\n\n    });\n}\n\n// @ngInject\nfunction MainAnalysisController() {\n  var vm = this;\n}\n\nangular\n    .module('main.analysis', ['analysis.api','analysis.reports', 'analysis.pdfTemplate', 'analysis.userReports'])\n    .config(stateConfig)\n    .controller('MainAnalysisController', MainAnalysisController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('analysis.pdfTemplate', {\n        url: '/pdfTemplate',\n        templateUrl: 'main/analysis/pdfTemplate/pdfTemplate.tpl.html',\n        controller: 'AnalysisPdfTemplateController as vm',\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction AnalysisPdfTemplateController(AnalysisApiService, ToasterService, loadSpinnerService) {\n    var vm = this;\n\n    // properties\n    vm.templates = [];\n    vm.selectedTemplate = {};\n\n    //initialize\n    loadSpinnerService.start('pdfTemplate');\n    AnalysisApiService.getPdfTemplates().then(function (data) {\n            vm.templates = data;\n            vm.selectedTemplate = _.head(vm.templates);\n        },\n        function (error) {\n            ToasterService.showError(error, \"\");\n        })\n        .finally(function () {\n            loadSpinnerService.stop('pdfTemplate');\n    });\n\n    // functions\n    vm.selectTemplate = selectTemplate;\n    vm.save = save;\n\n    function selectTemplate(template) {\n        vm.selectedTemplate = template;\n    }\n\n    function save() {\n        loadSpinnerService.start('pdfTemplate');\n        AnalysisApiService.savePdfTemplate(angular.copy(vm.selectedTemplate)).then(function (response) {\n            ToasterService.showSuccess(\"\", \"\");\n        },\n        function (error) {\n            ToasterService.showError(error, \"\");\n        })\n        .finally(function () {\n            loadSpinnerService.stop('pdfTemplate');\n        });\n    }\n}\n\nangular.module('analysis.pdfTemplate', [])\n    .config(stateConfig)\n    .controller('AnalysisPdfTemplateController', AnalysisPdfTemplateController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('analysis.reports', {\n        url: '/reports',\n        templateUrl: 'main/analysis/reports/reports.tpl.html',\n        controller: 'AnalysisReportsController as vm',\n        resolve: {\n            reports: reportsResolver,\n            dataSources: dataSourcesResolver,\n            userReports: userReportsResolver,\n            sharedReports: sharedReportsResolver,\n            localization: localizationResolver\n        }\n    });\n}\n\n// @ngInject\nfunction reportsResolver(AnalysisApiService) {\n    return AnalysisApiService.getReports();\n}\n\n// @ngInject\nfunction dataSourcesResolver(AnalysisApiService) {\n    return AnalysisApiService.getDataSources();\n}\n\n// @ngInject\nfunction userReportsResolver(AnalysisApiService) {\n    return AnalysisApiService.getUserReports();\n}\n\n// @ngInject\nfunction sharedReportsResolver(AnalysisApiService) {\n    return AnalysisApiService.getSharedReports();\n}\n\n// @ngInject\nfunction localizationResolver(AnalysisApiService) {\n    return AnalysisApiService.getLocalization();\n}\n\n\n// @ngInject\nfunction AnalysisReportsController(AnalysisApiService, DS, reports, dataSources, $rootScope, $cookies, localization, loadSpinnerService,\n                                  userReports, $location, $uibModal, $translate, $scope, sharedReports, ToasterService) {\n    var vm = this;\n\n    // properties\n    vm.reports = reports;\n    vm.dataSources = dataSources;\n    vm.userReports = userReports;\n    vm.editReportTemplates = false;\n    vm.showUserReportList = false;\n    vm.isLoadingReport = false;\n    vm.selectedDataSource = {};\n    vm.selectedReport = { id: -2, description: \"\", reportObject: \"\" };\n    vm.selectedUserReport = { id: -1, description: \"\" };\n    vm.selectedUserReport1 = { id: -1, description: \"\" };\n    vm.userReportName = \"\";\n    vm.reportComboBox = {};\n    vm.initUserReports = true;\n    vm.sharedReports = sharedReports;\n    vm.selectedSharedReport = { id: -1, decription: \"\" };\n    vm.showSharedReportList = false;\n    vm.initSharedReports = true;\n    vm.reportLevels = [];\n\n    //functions\n    vm.selectUserReports = selectUserReports;\n    vm.loadReport = loadReport;\n    vm.loadUserReport = loadUserReport;\n    vm.saveReport = saveReport;\n    vm.saveNewUserReport = saveNewUserReport;\n    vm.canSaveUserReport = canSaveUserReport;\n    vm.deleteUserReport = deleteUserReport;\n    vm.loadUserReports = loadUserReports;\n    vm.getUserReports = getUserReports;\n    vm.editUserReport = editUserReport;\n    vm.formatDate = formatDate;\n    vm.comboBoxInitialized = comboBoxInitialized;\n    vm.cancelEditUserReport = cancelEditUserReport;\n    vm.editFormSelectedReportChanged = editFormSelectedReportChanged;\n    vm.expandRows = expandRows;\n    vm.collapseRows = collapseRows;\n    vm.selectSharedReports = selectSharedReports;\n    vm.selectedSharedReportChanged = selectedSharedReportChanged;\n    vm.loadSharedReports = loadSharedReports;\n    vm.cbSelectLevelChanged = cbSelectLevelChanged;\n    vm.removeMeasures = removeMeasures;\n    vm.convertAllReports = convertAllReports;\n\n    var pivot = createPivot();\n\n    var user = $rootScope.currentUser;\n    vm.editReportTemplates = (user.username.substr(0, 4) === \"thsv\");\n\n    if (!vm.editReportTemplates) {\n\n        vm.reports.splice(0, 0, {\n            id: -3,\n            name: $translate.instant('reports.sharedReports')\n        });\n\n        vm.reports.splice(0, 0, {\n            id: -2,\n            name: $translate.instant('reports.myReports')\n        });\n\n        selectUserReports();\n    }\n\n\n\n\n    function selectUserReports() {\n        vm.showUserReportList = true;\n        vm.showSharedReportList = false;\n        vm.selectedReport = _.find(vm.reports, { id: -2 });\n        vm.loadUserReports();\n    }\n\n    function selectSharedReports() {\n        vm.showSharedReportList = true;\n        vm.showUserReportList = false;\n        vm.selectedReport = _.find(vm.reports, { id: -3 });\n        vm.loadSharedReports();\n    }\n\n\n    function loadUserReports() {\n        AnalysisApiService.getUserReports().then(function (data) {\n            vm.userReports = data;\n            vm.userReports.splice(0, 0, {\n                id: -1,\n                name: '-'\n            });\n            console.log(vm.userReports);\n            var report = _.find(vm.userReports, { id: vm.selectedUserReport.id });\n            vm.selectedUserReport = report === undefined ? { id: -1, description: \"\" } : angular.copy(report);\n            vm.initUserReports = false;\n\n            if (vm.showUserReportList) {\n                var cb = $scope.cbEditUserReport;\n\n                cb._tbx.value = vm.selectedUserReport.name;\n\n            }\n\n        });\n    }\n\n    function loadSharedReports() {\n        AnalysisApiService.getSharedReports().then(function (data) {\n            vm.sharedReports = data;\n            vm.sharedReports.splice(0, 0, {\n                id: -1,\n                name: '-'\n            });\n            console.log(vm.sharedReports);\n            var report = _.find(vm.sharedReports, { id: vm.selectedSharedReport.id });\n            vm.selectedSharedReport = report === undefined ? { id: -1, description: \"\" } : angular.copy(report);\n            vm.initSharedReports = false;\n\n            var cb = $scope.cbSharedReport;\n            cb._tbx.value = vm.selectedSharedReport.name;\n\n        });\n    }\n\n    function loadReport(reportId) {\n\n        vm.showUserReportList = false;\n\n        if (vm.isLoadingReport === true) {\n            return;\n        }\n\n\n        var report = _.find(vm.reports, { id: reportId });\n        vm.selectedReport = report;\n\n        vm.isLoadingReport = true;\n\n        vm.selectedDataSource = _.find(vm.dataSources, { id: report.dataSourceId });\n\n        var dataUrl = DS.defaults.basePath + 'analysis/getCompressedCsvReportData/' + report.dataSourceId + '?token=' + $cookies.getObject('X-JetsoftToken');\n\n        var reportText = report.reportObject;\n        if (_.startsWith(report.reportObject, \"<\")) {\n            /* jshint -W117 */\n            reportText = fmCovertXmlReport(report.reportObject);\n            /* jshint +W117 */\n        }\n        var jsonReport = JSON.parse(reportText);\n        jsonReport.dataSource.filename = dataUrl;\n        jsonReport.dataSource = assureDataSourceType(jsonReport.dataSource);\n        jsonReport.localization = '';\n\n        _.forEach(jsonReport.slice.measures, function (measure) {\n            measure.availableAggregations = 'sum,count,distinctcount,average,product,min,max,percent,percentofcolumn,percentofrow,index';\n        });\n\n        try {\n            pivot.setReport(jsonReport);\n            pivot.closeFieldsList();\n        }\n        catch (error) {\n            vm.isLoadingReport = false;\n            pivot.clear();\n            pivot.refresh();\n            ToasterService.showError('\"' + report.name + '\": ' + error.message, 'error', \"Rapporter\");\n        }\n\n        $scope.cbSaveUserReport._tbx.value = report.name;\n\n    }\n\n    function loadUserReport(reportId) {\n        if (vm.isLoadingReport === true || reportId === -1) {\n            return false;\n        }\n        vm.isLoadingReport = true;\n\n        var report = _.find(vm.userReports, { id: reportId });\n\n        try {\n\n            vm.selectedUserReport = report === undefined ? { id: -1, description: \"\" } : angular.copy(report);\n\n\n            var dataUrl = DS.defaults.basePath + 'analysis/getCompressedCsvReportData/' + vm.selectedUserReport.dataSourceId + '?token=' + $cookies.getObject('X-JetsoftToken');\n\n            var reportText = vm.selectedUserReport.reportObject;\n            if (_.startsWith(vm.selectedUserReport.reportObject, \"<\")) {\n                /* jshint -W117 */\n                reportText = fmCovertXmlReport(vm.selectedUserReport.reportObject);\n                /* jshint +W117 */\n            }\n            var jsonReport = JSON.parse(reportText);\n            jsonReport.dataSource.filename = dataUrl;\n            jsonReport.dataSource = assureDataSourceType(jsonReport.dataSource);\n            jsonReport.localization = '';\n\n            pivot.setReport(jsonReport);\n            pivot.closeFieldsList();\n\n        } catch (error) {\n            vm.isLoadingReport = false;\n            pivot.clear();\n            pivot.refresh();\n            ToasterService.showError('\"' + report.name + '\": ' + error.message, 'error', \"Rapporter\");\n        }\n    }\n\n    function loadSharedReport(reportId) {\n        if (vm.isLoadingReport === true || reportId === -1) {\n            return false;\n        }\n        vm.isLoadingReport = true;\n\n        var report = _.find(vm.sharedReports, { id: reportId });\n\n        try {\n\n            vm.selectedSharedReport = report === undefined ? { id: -1, description: \"\" } : angular.copy(report);\n\n\n            var dataUrl = DS.defaults.basePath + 'analysis/getCompressedCsvReportData/' + vm.selectedSharedReport.dataSourceId + '?token=' + $cookies.getObject('X-JetsoftToken');\n\n            var reportText = vm.selectedSharedReport.reportObject;\n            if (_.startsWith(vm.selectedSharedReport.reportObject, \"<\")) {\n                /* jshint -W117 */\n                reportText = fmCovertXmlReport(vm.selectedSharedReport.reportObject);\n                /* jshint +W117 */\n            }\n            var jsonReport = JSON.parse(reportText);\n            jsonReport.dataSource.filename = dataUrl;\n            jsonReport.dataSource = assureDataSourceType(jsonReport.dataSource);\n            jsonReport.localization = '';\n\n            pivot.setReport(jsonReport);\n            pivot.closeFieldsList();\n\n        } catch (error) {\n            vm.isLoadingReport = false;\n            pivot.clear();\n            pivot.refresh();\n            ToasterService.showError('\"' + report.name + '\": ' + error.message, \"Rapporter\");\n        }\n    }\n\n    function assureDataSourceType(dataSource) {\n        if (dataSource.type && dataSource.type.length > 0) {\n            dataSource.dataSourceType = dataSource.type;\n        } else if (dataSource.dataSourceType && dataSource.dataSourceType.length > 0) {\n            dataSource.type = dataSource.dataSourceType;\n        }\n\n        return dataSource;\n    }\n\n    function saveReport() {\n\n        var report = vm.selectedReport;\n        var dataSource = vm.selectedDataSource;\n        report.dataSourceId = dataSource.id;\n\n        var reportObj = pivot.getReport();\n        reportObj.dataSource.filename = \"\";\n        reportObj.dataSource = assureDataSourceType(reportObj.dataSource);\n        report.reportObject = JSON.stringify(reportObj);\n\n        AnalysisApiService.saveReport(report).then(function (e) {\n            ToasterService.showSuccess('\"' + report.name + '\" sparades.', \"Rapporter\");\n        });\n    }\n\n    function saveNewUserReport() {\n        var newReport = angular.copy(vm.selectedUserReport);\n        vm.newReportName = $scope.cbSaveUserReport._tbx.value;\n        var report = _.find(vm.userReports, { name: vm.newReportName });\n        newReport.id = report === undefined ? -1 : report.id;\n\n        if (vm.showSharedReportList) {\n            newReport.name = vm.newReportName;\n            newReport.description = vm.selectedSharedReport.description;\n            newReport.dataSourceId = vm.selectedSharedReport.dataSourceId;\n            newReport.reportTemplate = { id: vm.selectedSharedReport.reportTemplate.id };\n        } else {\n            newReport.name = vm.newReportName;\n            newReport.description = vm.selectedReport.description;\n            newReport.dataSourceId = vm.selectedReport.dataSourceId;\n            newReport.reportTemplate = { id: vm.selectedReport.id };\n        }\n\n        var reportObj = pivot.getReport();\n        reportObj.dataSource.filename = \"\";\n        reportObj.dataSource = assureDataSourceType(reportObj.dataSource);\n        newReport.reportObject = JSON.stringify(reportObj);\n\n        AnalysisApiService.saveUserReport(newReport).then(function () {\n            loadUserReports();\n            ToasterService.showSuccess('\"' + newReport.name + '\" sparades.', \"Rapporter\");\n        });\n\n    }\n\n    function canSaveUserReport() {\n        var cb = $scope.cbSaveUserReport;\n        var canSave = cb._tbx.value.length > 1 && !vm.isLoadingReport;\n        if (vm.showSharedReportList && vm.selectedSharedReport.id === -1) {\n            return false;\n        }\n\n        return canSave;\n    }\n\n    function deleteUserReport() {\n        var report = angular.copy(vm.selectedUserReport);\n        AnalysisApiService.deleteUserReport(report).then(function () {\n            loadUserReports();\n            ToasterService.showSuccess('\"' + report.name + '\" togs bort.', \"Rapporter\");\n        });\n    }\n\n\n    function getUserReports($select) {\n        return vm.userReports;\n    }\n\n    function editUserReport() {\n        var report = angular.copy(vm.selectedUserReport);\n        if (report.id === -1) {\n            return;\n        }\n\n        var reportObj = pivot.getReport();\n        reportObj.dataSource.filename = \"\";\n        reportObj.dataSource = assureDataSourceType(reportObj.dataSource);\n        report.reportObject = JSON.stringify(reportObj);\n\n        AnalysisApiService.saveUserReport(report).then(function () {\n            loadUserReports();\n            ToasterService.showSuccess('\"' + report.name + '\" sparades.', \"Rapporter\");\n        });\n    }\n\n\n    function cancelEditUserReport() {\n        var report = _.find(vm.userReports, { id: vm.selectedUserReport.id });\n        vm.selectedUserReport = report === undefined ? { id: -1, description: \"\" } : angular.copy(report);\n    }\n\n    function editFormSelectedReportChanged(e) {\n        if (vm.initUserReports || e.isDroppedDown) {\n            return;\n        }\n        var value = e.selectedValue;\n        var report = _.find(vm.userReports, { id: value });\n        vm.selectedUserReport = report === undefined ? { id: -1, description: \"\" } : angular.copy(report);\n        loadUserReport(vm.selectedUserReport.id);\n    }\n\n    function selectedSharedReportChanged(e) {\n        if (vm.initSharedReports || e.isDroppedDown) {\n            return;\n        }\n        var value = e.selectedValue;\n        var report = _.find(vm.sharedReports, { id: value });\n        vm.selectedSharedReport = report === undefined ? { id: -1, description: \"\" } : angular.copy(report);\n        loadSharedReport(vm.selectedSharedReport.id);\n    }\n\n\n    function formatDate(date, formatStr) {\n        if (date === undefined) {\n            return '';\n        }\n        return moment(date).format(formatStr);\n    }\n\n    function comboBoxInitialized(cb) {\n\n        vm.reportComboBox = cb;\n    }\n\n    function expandRows(expand) {\n        if (expand) {\n\n            var firstLevel = pivot.getRows()[0];\n            if (firstLevel !== undefined) {\n                pivot.expandData(firstLevel.uniqueName);\n            }\n        } else {\n            pivot.collapseAllData();\n        }\n    }\n\n    function collapseRows() {\n        pivot.collapseAllData();\n    }\n\n    function cbSelectLevelChanged(e) {\n        if (!e || !e.selectedValue) {\n            return;\n        }\n        pivot.expandData(e.selectedValue);\n    }\n\n    function removeMeasures() {\n        var measures = pivot.getAllMeasures();\n        _.forEach(measures, function (m) { pivot.removeCalculatedMeasure(m.uniqueName); });\n    }\n    function createPivot() {\n\n        var pivotObj = $(\"#pivotContainer\").flexmonster({\n            componentFolder: '/assets/modules/flexmonster/',\n            width: '100%',\n            height: 700,\n            toolbar: true,\n            global: {\n                localization: localization\n            }\n        });\n\n        pivotObj.on(\"update\", onPivotUpdate);\n        pivotObj.on('dataerror', onPivotError);\n\n        return pivotObj;\n    }\n\n    function onPivotError(e) {\n        console.log('Error with data!' + e.error);\n    }\n\n    function onPivotUpdate() {\n        vm.reportLevels = pivot.getRows();\n        vm.isLoadingReport = false;\n    }\n    function convertAllReports() {\n        _.forEach(vm.reports, function (report) {\n            if (_.startsWith(report.reportObject, \"<\")) {\n                /* jshint -W117 */\n                var reportString = fmCovertXmlReport(report.reportObject);\n                /* jshint +W117 */\n                report.reportObject = reportString;\n                AnalysisApiService.saveReport(report);\n            }\n        });\n        AnalysisApiService.getUserReportsToConvert().then(function (userReports) {\n            _.forEach(userReports, function (report) {\n                if (_.startsWith(report.reportObject, \"<\")) {\n                    /* jshint -W117 */\n                    var reportString = fmCovertXmlReport(report.reportObject);\n                    /* jshint +W117 */\n                    report.reportObject = reportString;\n                    AnalysisApiService.saveConvertedUserReport(report);\n                }\n            });\n        });\n    }\n}\n\n\n\nangular.module('analysis.reports', [])\n    .config(stateConfig)\n    .controller('AnalysisReportsController', AnalysisReportsController);\n","angular.module('components.userReport', [])\n    .constant(\"Constants\", {\n        ReportGroupName: {\n            sales: 'FÖRSÄLJNING'\n        }, ReportName: {\n            salesWhen: 'Fsg (När)'\n        }\n    })\n    .component('userReport', {\n        templateUrl: 'main/analysis/userReports/userReport.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            selectedReport: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($state, AnalysisApiService, ToasterService, DS, $cookies, $anchorScroll, $location, $translate, confirmationDialogService, AuthService, Constants, ENV) {\n    var vm = this;\n\n    // properties\n    vm.reportGroups = [];\n    vm.selectedReport = undefined;\n    vm.selectedGroup = {};\n    vm.loadedReportPath = [];\n    vm.pivot = {};\n    vm.localization = {};\n    vm.showNavigation = false;\n    vm.selectedTab = {};\n    vm.activeTabIndex = -1;\n    vm.loadedReport = {};\n    vm.isLoading = false;\n    vm.token = \"\";\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.navigate = navigate;\n    vm.loadReport = loadReport;\n    vm.moveUp = moveUp;\n    vm.moveDown = moveDown;\n    vm.selectTab = selectTab;\n    vm.copySelectedReport = copySelectedReport;\n    vm.formatDate = formatDate;\n    vm.saveReport = saveReport;\n    vm.deleteReport = deleteReport;\n    vm.isValidDate = isValidDate;\n    vm.canPublishReport = canPublishReport;\n    vm.sortDescending = sortDescending;\n    vm.sortAscending = sortAscending;\n    vm.generate = generate;\n    vm.startDate = new Date();\n    activate();\n    vm.useFiltering = false;\n    vm.Constants = Constants;\n    vm.cancel = function () {\n        vm.isLoading = false;\n        vm.pivot.clear();\n        vm.pivot.dispose();\n        vm.pivot = createPivot();\n        var empty = {\n            toolbar: true,\n            report: {\n                dataSource: {\n                    data: [{ \"test\": \"0\" }]\n                }\n            }\n        };\n        vm.pivot.clear();\n        vm.pivot.setReport(empty);\n        vm.pivot.refresh();\n    };\n\n    function activate() {\n        vm.startDate.setDate(vm.startDate.getDate() - 60);\n    }\n\n    function generate() {\n        var startDate = null;\n        if (vm.startDate !== null || vm.startDate !== \"\") {\n            startDate = moment(vm.startDate).format('YYYY-MM-DD');\n        }\n        loadReport(startDate);\n    }\n\n    function onInit() {\n        AuthService.getAuth0Token().then(function (response) {\n            vm.token = response.data.accessToken;\n        });\n        loadReportGroups();\n        AnalysisApiService.getLocalization().then(function (data) {\n            vm.localization = data;\n            vm.pivot = createPivot();\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n\n    }\n\n    function createPivot() {\n        var fm = $(\"#pivotContainer\").flexmonster({\n            licenseKey: ENV.FLEXMONSTER_KEY,\n            width: '100%',\n            height: 700,\n            toolbar: true,\n            global: {\n                localization: vm.localization\n            }\n        });\n        fm.on('dataloaded', function () {\n            vm.isLoading = false;\n        });\n        fm.on('olapstructureerror', function () {\n            AuthService.getAuth0Token().then(function (response) {\n                vm.token = response.data.accessToken;\n            });\n        });\n        return fm;\n    }\n\n    function navigate(report, load) {\n\n        var group = _.find(vm.reportGroups, function (group) {\n            return _.some(group.reports, report);\n        });\n        if (group === undefined) {\n            group = _.first(vm.reportGroups);\n            report = undefined;\n        }\n        vm.selectedGroup = group;\n        vm.selectedReport = report;\n\n        if (load) {\n            loadReport(null);\n        }\n    }\n\n    function loadReportGroups() {\n        try {\n            AnalysisApiService.getReportGroups().then(function (response) {\n                vm.reportGroups = response;\n            });\n        }\n        catch (exception) {\n            ToasterService.showError(exception.message, 'error', \"Rapporter\");\n        }\n    }\n\n    function loadReport(startDate) {\n\n        try {\n            vm.isLoading = true;\n\n            var reportText = vm.selectedReport.reportObject;\n            if (_.startsWith(vm.selectedReport.reportObject, \"<\")) {\n                /* jshint -W117 */\n                reportText = fmCovertXmlReport(vm.selectedReport.reportObject);\n                /* jshint +W117 */\n            }\n            var jsonReport = JSON.parse(reportText);\n\n            if (jsonReport.dataSource.dataSourceType === \"ocsv\" ||\n                jsonReport.dataSource.dataSourceType === \"csv\" ||\n                jsonReport.dataSource.type === \"ocsv\" ||\n                jsonReport.dataSource.type === \"csv\") {\n\n                var dataUrl = DS.defaults.basePath + 'analysis/getCompressedCsvReportData/' + vm.selectedReport.dataSourceId +\n                '?startDate=' + startDate + '&token=' + $cookies.getObject('X-JetsoftToken');\n\n                jsonReport.dataSource.filename = dataUrl;\n                jsonReport.dataSource = assureDataSourceType(jsonReport.dataSource);\n                jsonReport.localization = '';\n            }\n\n            if (jsonReport.dataSource.dataSourceType === \"api\" || jsonReport.dataSource.type === \"api\") {\n                jsonReport.dataSource.requestHeaders = {Authorization: \"Bearer \" + vm.token};\n            }\n\n            jsonReport.dataSource = assureDataSourceType(jsonReport.dataSource);\n\n            vm.pivot.setReport(jsonReport);\n            vm.pivot.setOptions({\n                grid: {\n                    title: vm.loadedReportPath\n                }\n            });\n\n            vm.pivot.closeFieldsList();\n            vm.pivot.refresh();\n            vm.loadedReport = vm.selectedReport;\n        }\n        catch (error) {\n            vm.isLoading = false;\n            vm.pivot.clear();\n            vm.pivot.refresh();\n            ToasterService.showError('\"' + vm.selectedReport.name + '\": ' + error.message, 'error', \"Rapporter\");\n        }\n    }\n\n    function moveUp(report) {\n        var position = _.indexOf(vm.selectedGroup.reports, report);\n        if (position > 0) {\n            arrayMove(vm.selectedGroup.reports, position, position - 1);\n            var id = \"report_\" + report.id;\n            scrollTo(\"report_list\", id, true);\n        }\n    }\n    function moveDown(report) {\n        var position = _.indexOf(vm.selectedGroup.reports, report);\n        if (position < vm.selectedGroup.reports.length - 1) {\n            arrayMove(vm.selectedGroup.reports, position, position + 1);\n            var id = \"report_\" + report.id;\n            scrollTo(\"report_list\", id, false);\n        }\n    }\n\n    function sortAscending(e) {\n        e.preventDefault();\n        if (vm.selectedGroup !== undefined && vm.selectedGroup.reports.length > 0) {\n            var newSorting = _.orderBy(vm.selectedGroup.reports, 'name', 'asc');\n            vm.selectedGroup.reports = newSorting;\n            saveSortOrder();\n        }\n    }\n\n    function sortDescending(e) {\n        e.preventDefault();\n        if (vm.selectedGroup !== undefined && vm.selectedGroup.reports.length > 0) {\n            var newSorting = _.orderBy(vm.selectedGroup.reports, 'name', 'desc');\n            vm.selectedGroup.reports = newSorting;\n            saveSortOrder();\n        }\n    }\n\n    function arrayMove(array, from, to) {\n        array.splice(to, 0, array.splice(from, 1)[0]);\n    }\n\n\n    function scrollTo(containerId, elementId, up) {\n        var element = document.getElementById(elementId);\n        if (element !== undefined) {\n            var y = up ? element.offsetTop - element.offsetHeight : element.offsetTop + element.offsetHeight;\n            $(document.getElementById(containerId)).animate({ scrollTop: y }, 0);\n        }\n    }\n\n    function selectTab(tabName) {\n        if (tabName === vm.selectedTab) {\n            vm.showNavigation = !vm.showNavigation;\n        } else {\n            vm.showNavigation = true;\n        }\n        vm.selectedTab = tabName;\n        var index = _.findIndex(vm.reportGroups, { name: tabName });\n        if (index !== vm.activeTabIndex) {\n            vm.selectedReport = undefined;\n        }\n        vm.activeTabIndex = index;\n        vm.selectedGroup = vm.reportGroups[index];\n        //console.log(angular.toJson(vm.selectedGroup));\n    }\n\n    function formatDate(date, formatStr) {\n        if (date === undefined) {\n            return '';\n        }\n        return moment(date).format(formatStr);\n    }\n\n    function copySelectedReport() {\n        if (vm.selectedReport !== undefined) {\n\n            var report = angular.copy(vm.selectedReport);\n\n            report.id = -1;\n            report.isShared = false;\n            // copy report object changes if loaded report\n            if (vm.loadedReport === vm.selectedReport) {\n                var reportObj = vm.pivot.getReport();\n                reportObj.dataSource.filename = \"\";\n                reportObj.dataSource = assureDataSourceType(reportObj.dataSource);\n                report.reportObject = JSON.stringify(reportObj);\n            }\n\n            AnalysisApiService.saveUserReport(report).then(function (response) {\n                vm.selectedReport = response.data;\n                var group = _.find(vm.reportGroups, { reportGroupType: 'userReport' });\n                vm.selectedReport.changed = undefined;\n                group.reports.push(vm.selectedReport);\n                saveSortOrder();\n\n                ToasterService.showSuccess('\"' + vm.selectedReport.name + '\" ' + $translate.instant(\"analysis.wasSaved\"), $translate.instant(\"analysis.reports\"));\n            });\n        }\n    }\n\n    function saveReport() {\n        var group = _.find(vm.reportGroups, { reportGroupType: 'userReport' });\n        var isLoadedReport = vm.loadedReport === vm.selectedReport;\n\n        var index = _.indexOf(group.reports, vm.selectedReport);\n        if (index > -1) {\n            if (isLoadedReport) {\n                var reportObj = vm.pivot.getReport();\n                reportObj.dataSource.filename = \"\";\n                reportObj.dataSource = assureDataSourceType(reportObj.dataSource);\n                vm.loadedReport.reportObject = JSON.stringify(reportObj);\n            }\n            AnalysisApiService.saveUserReport(vm.selectedReport).then(function (response) {\n                vm.selectedReport = response.data;\n                group.reports[index] = vm.selectedReport;\n\n                if (isLoadedReport) {\n                    vm.loadedReport = vm.selectedReport;\n                }\n                saveSortOrder();\n\n                ToasterService.showSuccess('\"' + vm.selectedReport.name + '\" ' + $translate.instant(\"analysis.wasSaved\"), $translate.instant(\"analysis.reports\"));\n            });\n        }\n    }\n\n    function assureDataSourceType(dataSource) {\n        if (dataSource.type && dataSource.type.length > 0) {\n            dataSource.dataSourceType = dataSource.type;\n        } else if (dataSource.dataSourceType && dataSource.dataSourceType.length > 0) {\n            dataSource.type = dataSource.dataSourceType;\n        }\n\n        return dataSource;\n    }\n\n    function saveSortOrder() {\n\n        var group = {\n            reportGroupType: 'userReport',\n            reports: []\n        };\n\n        var userReportGroup = _.find(vm.reportGroups, { reportGroupType: 'userReport' });\n\n        _.forEach(userReportGroup.reports, function (report) {\n            group.reports.push({ id: report.id });\n        });\n\n        AnalysisApiService.saveUserReportSortOrder(group.reports).then(function (response) {\n        });\n\n    }\n\n    function deleteReport() {\n        var group = _.find(vm.reportGroups, { reportGroupType: 'userReport' });\n\n        if (_.indexOf(group.reports, vm.selectedReport) > -1) {\n            confirmationDialogService.showDialog($translate.instant(\"analysis.confirmDeleteReport\")).then(function (result) {\n                if (result === true) {\n\n                    AnalysisApiService.deleteUserReport(vm.selectedReport).then(function (response) {\n                        var name = vm.selectedReport.name;\n                        _.pull(group.reports, vm.selectedReport);\n                        vm.selectedReport = undefined;\n                        ToasterService.showSuccess('\"' + name + '\" ' + $translate.instant(\"analysis.wasDeleted\"), $translate.instant(\"analysis.reports\"));\n                    });\n                }\n            });\n        }\n    }\n\n    function isValidDate(date) {\n        var valid = date !== undefined;\n        if (valid) {\n            var momentDate = moment(date);\n            valid = momentDate.isValid() && moment(\"1970-01-01\").isBefore(momentDate);\n        }\n        return valid;\n    }\n    function canPublishReport() {\n        return AuthService.canAccess('analysis', 'update');\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('analysis.userReports', {\n        url: '/userReports',\n        templateUrl: 'main/analysis/userReports/userReports.tpl.html',\n        controller: 'AnalysisUserReportsController as vm',\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction AnalysisUserReportsController(AnalysisApiService, ToasterService, loadSpinnerService) {\n    var vm = this;\n}\n\nangular.module('analysis.userReports', [])\n    .config(stateConfig)\n    .controller('AnalysisUserReportsController', AnalysisUserReportsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.accounts.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/accounts/account/account.tpl.html',\n            controller: 'AccountController as vm'\n        }},\n        resolve: {\n            account: function() { return {}; },\n            isNewAccount: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('base.accounts.account', {\n        url:'/{accountId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/accounts/account/account.tpl.html',\n            controller: 'AccountController as vm'\n        }},\n        resolve: {\n            account: accountResolver,\n            isNewAccount: function() {return false;}\n        }\n    });\n\n}\n\n// @ngInject\nfunction accountResolver($stateParams, AccountsApiService) {\n    return AccountsApiService.getAccount($stateParams.accountId);\n}\n\n// @ngInject\nfunction languagesResolver($stateParams, AccountsApiService) {\n    return AccountsApiService.getLanguages();\n}\n\n// @ngInject\nfunction AccountController($state, account, loadSpinnerService, AccountsApiService, ToasterService, confirmationDialogService, $translate, isNewAccount) {\n    var vm = this;\n\n    var accountCopy = {};\n\n    vm.account = account;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveAccount = saveAccount;\n    vm.deleteAccount = deleteAccount;\n\n    vm.isNewAccount = isNewAccount;\n    vm.isEditing = vm.isNewAccount;\n\n    vm.isAccountNumberValid = isAccountNumberValid;\n    vm.isAllInformationValid = isAllInformationValid;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewAccount) {\n            vm.account = {};\n        }\n\n        appendLocalizations(vm.account, vm.languages);\n\n    }\n\n    function appendLocalizations(obj, languages) {\n        if (!obj.localizations) {\n            obj.localizations = [];\n        }\n        _.forEach(languages, function(language) {\n            if (_.filter(obj.localizations, { language: { id: language.id}}).length === 0) {\n                obj.localizations.push({ language: language });\n            }\n        });\n    }\n\n    function enableEditing() {\n        accountCopy = angular.copy(vm.account);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.account = accountCopy;\n        vm.isEditing = false;\n    }\n\n    function saveAccount() {\n        if (vm.isNewAccount) {\n            saveNewAccount();\n        } else {\n            updateAccount();\n        }\n    }\n\n    function saveNewAccount() {\n        loadSpinnerService.start('mainSpinner');\n        AccountsApiService.createAccount(vm.account).then(function(response) {\n            vm.account = response;\n            prepareData();\n            vm.isNewAccount = false;\n            vm.isEditing = false;\n            $state.go('base.accounts.account', {accountId: vm.account.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateAccount() {\n        loadSpinnerService.start('mainSpinner');\n\n        AccountsApiService.updateAccount(vm.account).then(function(response) {\n            vm.account = response;\n            prepareData();\n            vm.isNewAccount = false;\n            vm.isEditing = false;\n            $state.go('base.accounts.account', {accountId: vm.account.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteAccount() {\n        confirmationDialogService\n            .showDialog($translate.instant('account.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    AccountsApiService.deleteAccount(vm.account.id).then(function(response) {\n                        vm.account = response;\n                        prepareData();\n                        vm.isNewAccount = false;\n                        vm.isEditing = false;\n                        $state.go('base.accounts');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(account) {\n        account.showEditForm = !account.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.account === undefined) {\n            return;\n        }\n\n        vm.accountCopy = angular.copy(vm.account);\n    }\n\n    function isAllInformationValid() {\n        return isAccountNumberValid();\n    }\n\n    function isAccountNumberValid() {\n        if (!vm.account.accountNumber) { return false; }\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('accounts.account', [])\n    .config(stateConfig)\n    .controller('AccountController', AccountController);\n","// @ngInject\nfunction AccountsApiService(ResourcesService) {\n\n  var endpoint = 'accounts';\n\n  return {\n    getAccounts: ResourcesService.apiFactory.get(endpoint),\n    getAccount: ResourcesService.apiFactory.get(endpoint),\n    getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n    createAccount: ResourcesService.apiFactory.create(endpoint, 'Account'),\n    updateAccount: ResourcesService.apiFactory.update(endpoint, 'Account'),\n    deleteAccount: ResourcesService.apiFactory.delete(endpoint, 'Account')\n  };\n\n}\n\nangular\n  .module('accounts.api', [])\n  .factory('AccountsApiService', AccountsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.accounts', {\n        url: '/accounts?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/accounts/accounts.tpl.html',\n            controller: 'AccountsController as vm'\n        }},\n        resolve: {\n            accounts: accountsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction accountsResolver(AccountsApiService, $stateParams) {\n    return AccountsApiService.getAccounts({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction AccountsController($rootScope, $state, $scope, accounts, AccountsApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.accounts = accounts;\n    vm.selectedAccountId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.accountId; }, function(newValue, oldValue) {\n            vm.selectedAccountId = parseInt($state.params.accountId,10);\n        });\n        $rootScope.$on('Account.Inserted', function(event, response) {\n        });\n        $rootScope.$on('Account.Updated', function(event, response) {\n        });\n        $rootScope.$on('Account.Deleted', function(event, response) {\n        });\n        $rootScope.$on('Account.Changed', function(event, response) {\n            loadAccounts();\n        });\n    }\n\n    function loadAccounts() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        AccountsApiService.getAccounts(request).then(function(response) {\n            vm.accounts = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadAccounts();\n    }\n\n}\n\nangular\n    .module('base.accounts', ['accounts.api','accounts.account'])\n    .config(stateConfig)\n    .controller('AccountsController', AccountsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.articlecollections.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/articlecollections/articlecollection/articlecollection.tpl.html',\n            controller: 'ArticleCollectionController as vm'\n        }},\n        resolve: {\n            collection: function() { return {\n                collectionCode: '',\n                collectionDescription: '',\n                articleCollectionType: 0,\n                currentBehaviour: 0,\n                currentRank: 0,\n                duration: 360,\n                isArticleSeason: true,\n                isOrderSeason: false,\n                offset: -180,\n                currencies: []\n            }; },\n            isNewCollection: function() { return true; }\n        }\n    });\n    $stateProvider.state('base.articlecollections.articlecollection', {\n        url:'/{collectionId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/articlecollections/articlecollection/articlecollection.tpl.html',\n            controller: 'ArticleCollectionController as vm'\n        }},\n        resolve: {\n            collection: collectionResolver,\n            isNewCollection: function() { return false; }\n        }\n    });\n}\n\n// @ngInject\nfunction collectionResolver($stateParams, ArticleCollectionsApiService) {\n    return ArticleCollectionsApiService.getArticleCollectionById($stateParams.collectionId);\n}\n\n// @ngInject\nfunction ArticleCollectionController($window, $state, $scope, $translate, collection,\n        loadSpinnerService, ArticleCollectionsApiService,\n        ToasterService, isNewCollection) {\n    var vm = this;\n\n    //Properties\n    var collectionCopy = {};\n    vm.isNewCollection = isNewCollection;\n    vm.isEditing = vm.isNewCollection;\n    vm.collection = collection;\n    vm.currentBehaviours = [];\n    vm.articleCollectionTypes = [];\n\n    //Methods\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveCollection = saveCollection;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n\n        $scope.$watch(function() { return vm.collection.selectedCurrentBehaviour; }, function(newValue, oldValue) {\n            if (newValue.id !== oldValue.id) {\n                vm.collection.currentBehaviour = newValue.id;\n            }\n        });\n        $scope.$watch(function() { return vm.collection.selectedArticleCollectionType; }, function(newValue, oldValue) {\n            if (newValue.id !== oldValue.id) {\n                vm.collection.articleCollectionType = newValue.id;\n            }\n        });\n\n        if (isNewCollection) {\n            loadSpinnerService.start('mainSpinner');\n            vm.collections = [];\n            ArticleCollectionsApiService.listAllArticleCollections().then(function(response) {\n                vm.collections = response;\n                vm.collections = _.filter(vm.collections, function(c) { return c.toDate; });\n                if (!isNewCollection) { vm.collections = _.filter(vm.collections, function(c) { return c.id !== vm.collection.id; }); }\n                vm.collections = _.sortBy(vm.collections, ['toDate']);\n\n                //Check which should be the next collection from date\n                var lastCollection = vm.collections[vm.collections.length - 1];\n                var lastToDate = lastCollection.toDate;\n                var fromDate = new Date(lastToDate);\n                fromDate.setDate(fromDate.getDate() + 1);\n                var toDate = new Date(lastToDate);\n                toDate.setDate(toDate.getDate() + 2);\n\n                vm.collection.fromDate = fromDate;\n                vm.collection.toDate = toDate;\n            }, function(error) {\n                console.log(error);\n            }).then(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function setCurrentBehaviours() {\n        //DoNotSetCurrent, SetCurrent, SetNotCurrent\n        vm.currentBehaviours = [];\n        vm.currentBehaviours.push({ id: 0, description: $translate.instant('articlecollection.currentBehaviourDoNotSetCurrent') });     //\"DoNotSetCurrent\"\n        vm.currentBehaviours.push({ id: 1, description: $translate.instant('articlecollection.currentBehaviourSetCurrent') });          //\"SetCurrent\"\n        vm.currentBehaviours.push({ id: 2, description: $translate.instant('articlecollection.currentBehaviourSetNotCurrent') });       //\"SetNotCurrent\"\n    }\n\n    function setArticleCollectionTypes() {\n        //Static, Rolling\n        vm.articleCollectionTypes = [];\n        vm.articleCollectionTypes.push({ id: 0, description: $translate.instant('articlecollection.articleCollectionTypeStatic') });     //\"Static\"\n        vm.articleCollectionTypes.push({ id: 1, description: $translate.instant('articlecollection.articleCollectionTypeRolling') });    //\"Rolling\"\n    }\n\n    function enableEditing() {\n        collectionCopy = angular.copy(vm.collection);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.collection = collectionCopy;\n        vm.isEditing = false;\n    }\n\n    function saveCollection() {\n        vm.collections = [];\n        ArticleCollectionsApiService.listAllArticleCollections().then(function(response) {\n            vm.collections = response;\n            vm.collections = _.filter(vm.collections, function(c) { return c.toDate; });\n            if (!isNewCollection) { vm.collections = _.filter(vm.collections, function(c) { return c.id !== vm.collection.id; }); }\n            vm.collections = _.sortBy(vm.collections, ['toDate']);\n\n            vm.collection.collectionDescription.trim();\n\n            //Check which should be the next collection from date\n            // var lastCollection = vm.collections[vm.collections.length - 1];\n            // var lastToDate = new Date(lastCollection.toDate);\n            // var nextDate = new Date(lastToDate.toDateString());\n            // nextDate.setDate(nextDate.getDate() + 1);\n            // var cleanedFromDate = new Date(new Date(vm.collection.fromDate).toDateString());\n            // var cleanedToDate = new Date(new Date(vm.collection.toDate).toDateString());\n\n            // console.log('cleanedFromDate: ' + cleanedFromDate.getTime() + ', nextDate: ' + nextDate.getTime());\n\n            // if (!vm.collection.collectionCode || vm.collection.collectionCode === 0) {\n            //     ToasterService.showError($translate.instant('articlecollection.errorCollectionCodeEmpty'), $translate.instant('common.error'));\n            //     $('#collectionCode').focus();\n            if (vm.collection.collectionCode && vm.isNewCollection && _.find(response, function(r) { return r.collectionCode === vm.collection.collectionCode; })) {\n                ToasterService.showError($translate.instant('articlecollection.errorCollectionCodeAlreadyPresent'), $translate.instant('common.error'));\n                $('#collectionCode').focus();\n            }\n            // else if (vm.collections.length > 0 &&\n            //     vm.collection.articleCollectionType === 0 &&\n            //     cleanedFromDate.getTime() >= cleanedToDate.getTime()) {\n            //         //If from date is after to date\n            //         vm.collection.toDate = new Date(vm.collection.fromDate);\n            //         ToasterService.showError($translate.instant('articlecollection.errorFromDateAfterToDate'), $translate.instant('common.error'));\n            // } else if (vm.collections.length > 0 &&\n            //     vm.collection.articleCollectionType === 0 &&\n            //     cleanedFromDate.getTime() < nextDate.getTime()) {\n            //         //Confirm to save when from-date is before as to-date of last collection\n            //         confirmationDialogService.showDialog($translate.instant('articlecollection.confirmDatesNotAligning') + ' Senaste säsong: ' + lastCollection.collectionCode + ' \"' + lastCollection.collectionDescription + '\", från och med-datum: ' + new Date(lastToDate.toDateString()).toDateString()).then(function (result) {\n            //             if (result === true) {\n            //                 saveConfirmedCollection();\n            //             } else {\n            //                 vm.collection.fromDate = new Date(nextDate.toDateString());\n            //                 ToasterService.showError($translate.instant('articlecollection.dateWasAdjusted'), $translate.instant('common.information'));\n            //             }\n            //         });\n            //} else {\n\n            if (isNewCollection) {\n                saveConfirmedCollection();\n            } else {\n                updateConfirmedCollection();\n            }\n            //}\n        }, function(error) {\n            console.log(error);\n        });\n    }\n\n    function saveConfirmedCollection() {\n        var request = {\n            articleCollectionType: vm.collection.selectedArticleCollectionType.id,\n            collectionCode: vm.collection.collectionCode,\n            collectionDescription: vm.collection.collectionDescription.trim(),\n            currentBehaviour: vm.collection.selectedCurrentBehaviour.id,\n            duration: vm.collection.duration,\n            fromDate: getFullDate(vm.collection.fromDate),\n            offset: vm.collection.offset,\n            toDate: getFullDate(vm.collection.toDate)\n        };\n\n        loadSpinnerService.start('mainSpinner');\n        ArticleCollectionsApiService.saveArticleCollection(request).then(function(response) {\n            $state.go('base.articlecollections.articlecollection', { collectionId: response.articleCollectionId });\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getFullDate(date) {\n        var year = new Date(date).getFullYear();\n        var month = zeroFill(new Date(date).getMonth() + 1, 2);\n        var day = zeroFill(new Date(date).getDate(), 2);\n\n        return '' + year + '-' + month + '-' + day;\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            // eslint-disable-next-line wrap-regex\n            return new Array(width + (/\\./.test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n\n    function updateConfirmedCollection() {\n        var request = {\n            articleCollectionId: vm.collection.id,\n            collectionDescription: vm.collection.collectionDescription.trim(),\n            currentBehaviour: vm.collection.selectedCurrentBehaviour.id,\n            duration: vm.collection.duration,\n            fromDate: getFullDate(vm.collection.fromDate),\n            offset: vm.collection.offset,\n            toDate: getFullDate(vm.collection.toDate)\n        };\n\n        loadSpinnerService.start('mainSpinner');\n        ArticleCollectionsApiService.updateArticleCollection(request).then(function(response) {\n            $window.location.reload();\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function toggleDisplayForm(collection) {\n        collection.showEditForm = !collection.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.collection === undefined) {\n            return;\n        }\n\n        vm.collectionCopy = angular.copy(vm.collection);\n\n        setCurrentBehaviours();\n        setArticleCollectionTypes();\n\n        vm.collection.selectedCurrentBehaviour = vm.currentBehaviours.find(function(element) { return element.id === vm.collection.currentBehaviour; });\n        vm.collection.selectedArticleCollectionType = vm.articleCollectionTypes.find(function(element) { return element.id === vm.collection.articleCollectionType; });\n    }\n\n    function isAllInformationValid() {\n        //return vm.collection.collectionCode.length > 0 && vm.collection.collectionDescription.length > 0;\n        return true;\n    }\n}\n\nangular\n    .module('articlecollections.articlecollection', [])\n    .config(stateConfig)\n    .controller('ArticleCollectionController', ArticleCollectionController);\n","// @ngInject\nfunction ArticleCollectionsApiService(ResourcesService) {\n\n  var endpoint = 'articlecollections';\n\n  return {\n    listAllArticleCollections: ResourcesService.apiFactory.get(endpoint + '/briefs'),\n    listAllCurrencies: ResourcesService.apiFactory.get(endpoint + '/currencies'),\n    getArticleCollectionById: ResourcesService.apiFactory.get(endpoint),\n    saveArticleCollection: ResourcesService.apiFactory.save(endpoint + '/save', 'ArticleCollection'),\n    updateArticleCollection: ResourcesService.apiFactory.save(endpoint + '/update', 'ArticleCollection')\n  };\n}\n\nangular\n  .module('articlecollections.api', [])\n  .factory('ArticleCollectionsApiService', ArticleCollectionsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.articlecollections', {\n        url: '/articlecollections',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/articlecollections/articlecollections.tpl.html',\n            controller: 'ArticleCollectionsController as vm'\n        }},\n        resolve: {\n            collections: collectionsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction collectionsResolver(ArticleCollectionsApiService) {\n    return ArticleCollectionsApiService.listAllArticleCollections();\n}\n\n// @ngInject\nfunction ArticleCollectionsController($rootScope, $state, $scope, collections, ArticleCollectionsApiService, loadSpinnerService) {\n    var vm = this;\n\n    //Properties\n    vm.currentUser = $rootScope.currentUser;\n    vm.collections = collections;\n    vm.selectedCollectionId = 0;\n    vm.searchTerm = '';\n    vm.currentPage = 1;\n\n    //Methods\n    vm.searchTermChange = searchTermChange;\n    vm.getFullDate = getFullDate;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.collectionId; }, function(newValue, oldValue) {\n            vm.selectedCollectionId = parseInt($state.params.collectionId,10);\n        });\n        $rootScope.$on('ArticleCollection.Inserted', function(event, response) {\n        });\n        $rootScope.$on('ArticleCollection.Updated', function(event, response) {\n        });\n        $rootScope.$on('ArticleCollection.Deleted', function(event, response) {\n        });\n        $rootScope.$on('ArticleCollection.Changed', function(event, response) {\n            loadCollections();\n        });\n    }\n\n    function loadCollections() {\n        loadSpinnerService.start('mainSpinner');\n        ArticleCollectionsApiService.listAllArticleCollections().then(function(response) {\n            vm.collections = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadCollections();\n    }\n\n    function getFullDate(date) {\n        var year = new Date(date).getFullYear();\n        var month = zeroFill(new Date(date).getMonth() + 1, 2);\n        var day = zeroFill(new Date(date).getDate(), 2);\n\n        return '' + year + '-' + month + '-' + day;\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            // eslint-disable-next-line wrap-regex\n            return new Array(width + (/\\./.test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n}\n\nangular\n    .module('base.articlecollections', ['articlecollections.api', 'articlecollections.articlecollection'])\n    .config(stateConfig)\n    .controller('ArticleCollectionsController', ArticleCollectionsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.articletypes.articletype', {\n        url: '/{articleTypeId}',\n        views: {\n            \"baseView@base\": {\n                templateUrl: 'main/base/articletypes/articletype/articletype.tpl.html',\n                controller: 'ArticleTypeController as vm'\n            }\n        },\n        resolve: {\n            articleType: articleTypesResolver,\n            createNew: function () { return false; }\n        }\n    });\n\n    $stateProvider.state('base.articletypes.new', {\n        url: '/new',\n        views: {\n            \"baseView@base\": {\n                templateUrl: 'main/base/articletypes/articletype/articletype.tpl.html',\n                controller: 'ArticleTypeController as vm'\n            }\n        },\n        resolve: {\n            articleType: function () { return {}; },\n            createNew: function () { return true; }\n        }\n    });\n}\n\n\n\n// @ngInject\nfunction articleTypesResolver($stateParams, ArticleTypesApiService) {\n    return ArticleTypesApiService.getArticleType($stateParams.articleTypeId);\n}\n\n\n// @ngInject\nfunction ArticleTypeController($state, articleType, loadSpinnerService, ArticleTypesApiService, createNew, $scope, $translate, ToasterService, confirmationDialogService) {\n    var vm = this;\n\n    vm.articleType = articleType;\n    vm.isEditing = false;\n    vm.isNew = false;\n    vm.articleTypeCopy = {};\n\n    // functions\n    vm.save = save;\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.delete = deleteArticleType;\n\n    // initialize\n    if (createNew) {\n        vm.isNew = true;\n        vm.isEditing = true;\n    }\n\n    function save() {\n        ArticleTypesApiService.save(vm.articleType).then(function (result) {\n            vm.articleType.id = result.data.id;\n            vm.isEditing = false;\n            vm.isNew = false;\n            ToasterService.showSuccess('\"' + vm.articleType.name + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"base.articletypes\"));\n\n        }, function (error) {\n            ToasterService.showError(error.message, $translate.instant(\"base.articletypes\"));\n        }).finally(function () {\n            vm.isEditing = false;\n            vm.isNew = false;\n            $state.go('base.articletypes.articletype', { articleTypeId: vm.articleType.id });\n        });\n    }\n\n    function enableEditing() {\n        vm.articleTypeCopy = angular.copy(vm.articleType);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.articleType = angular.copy(vm.articleTypeCopy);\n        vm.isEditing = false;\n    }\n\n    function deleteArticleType() {\n\n        confirmationDialogService.showDialog($translate.instant(\"articletype.confirmDelete\")).then(function (deleteConfirmed) {\n            if (deleteConfirmed === true) {\n                ArticleTypesApiService.deleteArticleType(vm.articleType.id).then(function () {\n                    ToasterService.showSuccess('\"' + vm.articleType.name + '\" ' + $translate.instant(\"common.wasDeleted\"), $translate.instant(\"base.articletypes\"));\n                }, function (error) {\n                    ToasterService.showError($translate.instant(error.data.message), $translate.instant(\"base.articletypes\"));\n                }).finally(function () {\n                    vm.isEditing = false;\n                    vm.isNew = false;\n                    $state.go('base.articletypes');\n                });\n            }\n        });\n    }\n}\n\n\nangular\n    .module('articletypes.articletype', [])\n    .config(stateConfig)\n    .controller('ArticleTypeController', ArticleTypeController);\n","// @ngInject\nfunction ArticleTypesApiService($q, $rootScope, DS, DSHttpAdapter) {\n\n    return {\n        getAll: getAll,\n        getArticleType: getArticleType,\n        save: save\n    };\n\n    function getAll(filter) {\n        var deferred = $q.defer();\n\n        var params = {};\n        if (!_.isEmpty(filter)) {\n            params.filter = filter;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'products/articletypes', { params: params }).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function getArticleType(id) {\n        var deferred = $q.defer();\n        DSHttpAdapter.GET(DS.defaults.basePath + 'products/articletypes/' + id)\n            .then(function (response) {\n                deferred.resolve(response.data);\n            }, function (error) {\n                deferred.reject(error);\n            });\n\n        return deferred.promise;\n    }\n\n    function save(articleType) {\n        var deferred = $q.defer();\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'products/articletypes/save/' + articleType.id, articleType).then(function (response) {\n            deferred.resolve(response);\n            $rootScope.$emit('ArticleType.Updated', response.data);\n            $rootScope.$emit('ArticleType.Changed', response.data);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n}\n\n\nangular.module('articletypes.api', [])\n  .factory('ArticleTypesApiService', ArticleTypesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.articletypes', {\n        url: '/articletypes?searchTerm',\n        views: {\n            'baseList@base': {\n                templateUrl: 'main/base/articletypes/articletypes.tpl.html',\n                controller: 'ArticleTypesController as vm'\n            }\n        },\n        resolve: {\n            articleTypes: articleTypesResolver,\n            searchTerm: searchTermResolver\n        }\n    });\n}\n\n\n// @ngInject\nfunction articleTypesResolver(ArticleTypesApiService, $stateParams) {\n    return ArticleTypesApiService.getAll($stateParams.searchTerm);\n}\n\n// @ngInject\nfunction searchTermResolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n// @ngInject\nfunction ArticleTypesController($rootScope, $state, articleTypes, $scope, ArticleTypesApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    //Properties\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.articleTypes = articleTypes;\n    vm.selectedArticleTypeId = 0;\n\n    //Methods\n    vm.searchTermChanged = searchTermChanged;\n\n    activate();\n\n    function activate() {\n        $rootScope.$on('ArticleType.Changed', function () {\n            loadArticleTypes();\n        });\n    }\n    function searchTermChanged() {\n        loadArticleTypes();\n    }\n\n    function loadArticleTypes() {\n        loadSpinnerService.start('mainSpinner');\n        ArticleTypesApiService.getAll(vm.searchTerm).then(function (response) {\n            vm.articleTypes = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner', { force: true });\n        });\n    }\n\n}\n\nangular\n    .module('base.articletypes', ['articletypes.api','articletypes.articletype'])\n    .config(stateConfig)\n    .controller('ArticleTypesController', ArticleTypesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base', {\n        url: '/base',\n        parent: 'main',\n        abstract: true,\n        templateUrl: \"main/base/base.tpl.html\",\n        controller: \"BaseController as vm\"\n    });\n}\n\n// @ngInject\nfunction BaseController() {\n    var vm = this;\n}\n\nangular\n    .module('main.base', ['base.dashboard', 'base.countries', 'base.articlecollections', 'base.articletypes', 'base.ordercollections', 'base.currencies', 'base.paymentterms', 'base.deliveryterms', 'base.deliveryplanningtemplates', 'base.shippingmethods', 'base.customergroups', 'base.ordertypes', 'base.invoicetypes', 'base.accounts', 'base.vats', 'base.paymenttypes', 'base.returnreasons'])\n    .config(stateConfig)\n    .controller('BaseController', BaseController);\n","// @ngInject\nfunction CountriesApiService(ResourcesService) {\n\n  var endpoint = 'countries';\n\n  return {\n    getCountries: ResourcesService.apiFactory.get(endpoint),\n    getCountryById: ResourcesService.apiFactory.get(endpoint),\n    createCountry: ResourcesService.apiFactory.create(endpoint, 'Country'),\n    updateCountry: ResourcesService.apiFactory.update(endpoint, 'Country'),\n    deleteCountry: ResourcesService.apiFactory.delete(endpoint, 'Country')\n  };\n}\n\nangular\n  .module('countries.api', [])\n  .factory('CountriesApiService', CountriesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.countries', {\n        url: '/countries?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/countries/countries.tpl.html',\n            controller: 'CountriesController as vm'\n        }},\n        resolve: {\n            countries: countriesResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction countriesResolver(CountriesApiService, $stateParams) {\n    return CountriesApiService.getCountries({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n// @ngInject\nfunction CountriesController($rootScope, $state, $scope, countries, CountriesApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.countries = countries;\n    vm.selectedCountryId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.countryId; }, function(newValue, oldValue) {\n            vm.selectedCountryId = parseInt($state.params.countryId,10);\n        });\n        $rootScope.$on('Country.Inserted', function(event, response) {\n        });\n        $rootScope.$on('Country.Updated', function(event, response) {\n        });\n        $rootScope.$on('Country.Deleted', function(event, response) {\n        });\n        $rootScope.$on('Country.Changed', function(event, response) {\n            loadCountries();\n        });\n    }\n\n    function loadCountries() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        CountriesApiService.getCountries(request).then(function(response) {\n            vm.countries = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadCountries();\n    }\n\n}\n\nangular\n    .module('base.countries', ['countries.api','countries.country'])\n    .config(stateConfig)\n    .controller('CountriesController', CountriesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.countries.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/countries/country/country.tpl.html',\n            controller: 'CountryController as vm'\n        }},\n        resolve: {\n            country: function() { return {}; },\n            isNewCountry: function() {return true;},\n            vats: vatsResolver\n        }\n    });\n    $stateProvider.state('base.countries.country', {\n        url:'/{countryId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/countries/country/country.tpl.html',\n            controller: 'CountryController as vm'\n        }},\n        resolve: {\n            country: countryResolver,\n            vats: vatsResolver,\n            isNewCountry: function() {return false;}\n        }\n    });\n}\n\n// @ngInject\nfunction countryResolver($stateParams, CountriesApiService) {\n    return CountriesApiService.getCountryById($stateParams.countryId);\n}\n\n// @ngInject\nfunction vatsResolver(VatsApiService) {\n    return VatsApiService.getVats();\n}\n\n// @ngInject\nfunction CountryController($state, country, loadSpinnerService, CountriesApiService, ToasterService, confirmationDialogService, $translate, isNewCountry, vats) {\n    var vm = this;\n\n    var countryCopy = {};\n\n    //Properties\n    vm.isNewCountry = isNewCountry;\n    vm.isEditing = vm.isNewCountry;\n    vm.country = country;\n    vm.vats = vats;\n\n    //Methods\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveCountry = saveCountry;\n    vm.deleteCountry = deleteCountry;\n    vm.isCountryCodeValid = isCountryCodeValid;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewCountry) {\n            vm.country = {};\n        }\n        appendVats(vm.country, vm.vats);\n    }\n\n    function appendVats(obj, vats) {\n        if (!obj.vats) {\n            obj.vats = [];\n        }\n\n        _.forEach(vats, function(vat) {\n            var countryVats = _.filter(obj.vats, { vat: { id: vat.id}});\n            var countryVat;\n            if (countryVats.length === 0) {\n                countryVat = { vat: vat,  vatRate: vat.vatRate};\n                obj.vats.push(countryVat);\n            }\n        });\n    }\n\n    function enableEditing() {\n        countryCopy = angular.copy(vm.country);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.country = countryCopy;\n        vm.isEditing = false;\n    }\n\n    function saveCountry() {\n        if (vm.isNewCountry) {\n            saveNewCountry();\n        } else {\n            updateCountry();\n        }\n    }\n\n    function saveNewCountry() {\n        loadSpinnerService.start('mainSpinner');\n        CountriesApiService.createCountry(vm.country).then(function(response) {\n            vm.country = response;\n            prepareData();\n            vm.isNewCountry = false;\n            vm.isEditing = false;\n            $state.go('base.countries.country', {countryId: vm.country.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateCountry() {\n        loadSpinnerService.start('mainSpinner');\n\n        CountriesApiService.updateCountry(vm.country).then(function(response) {\n            vm.country = response;\n            prepareData();\n            vm.isNewCountry = false;\n            vm.isEditing = false;\n            $state.go('base.countries.country', {countryId: vm.country.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteCountry() {\n        confirmationDialogService\n            .showDialog($translate.instant('country.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    CountriesApiService.deleteCountry(vm.country.id).then(function(response) {\n                        vm.country = response;\n                        prepareData();\n                        vm.isNewCountry = false;\n                        vm.isEditing = false;\n                        $state.go('base.countries');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(country) {\n        country.showEditForm = !country.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.country === undefined) {\n            return;\n        }\n\n        vm.countryCopy = angular.copy(vm.country);\n    }\n\n    function isAllInformationValid() {\n        return isCountryCodeValid();\n    }\n\n    function isCountryCodeValid() {\n        //if (vm.country && vm.country.code && vm.country.code.length > 3) { return false; }\n\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('countries.country', [])\n    .config(stateConfig)\n    .controller('CountryController', CountryController);\n","// @ngInject\nfunction CurrenciesApiService($q, $rootScope, DS, DSHttpAdapter) {\n\n    return {\n        getAll: getAll,\n        getCurrency: getCurrency,\n        save: save,\n        deleteCurrency: deleteCurrency\n    };\n\n    function getAll(filter) {\n        var deferred = $q.defer();\n\n        var params = {};\n        if (!_.isEmpty(filter)) {\n            params.filter = filter;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'currencies', { params: params }).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function getCurrency(id) {\n        var deferred = $q.defer();\n        DSHttpAdapter.GET(DS.defaults.basePath + 'currencies/' + id)\n            .then(function (response) {\n                deferred.resolve(response.data);\n            }, function (error) {\n                deferred.reject(error);\n            });\n\n        return deferred.promise;\n    }\n\n    function save(currency) {\n        var deferred = $q.defer();\n        DSHttpAdapter.POST(DS.defaults.basePath + 'currencies/saveCurrency/', currency).then(function (response) {\n            deferred.resolve(response);\n            $rootScope.$emit('Currency.Updated', response.data);\n            $rootScope.$emit('Currency.Changed', response.data);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteCurrency(id) {\n        var deferred = $q.defer();\n        DSHttpAdapter.GET(DS.defaults.basePath + 'currencies/deleteCurrency/' + id).then(function (response) {\n            deferred.resolve(response);\n            $rootScope.$emit('Currency.Deleted', response.data);\n            $rootScope.$emit('Currency.Changed', response.data);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n}\n\n\nangular.module('currencies.api', [])\n  .factory('CurrenciesApiService', CurrenciesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.currencies', {\n        url: '/currencies?searchTerm',\n        views: {\n            'baseList@base': {\n                templateUrl: 'main/base/currencies/currencies.tpl.html',\n                controller: 'CurrenciesController as vm'\n            }\n        },\n        resolve: {\n            currencies: currenciesResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n\n// @ngInject\nfunction currenciesResolver(CurrenciesApiService, $stateParams) {\n    return CurrenciesApiService.getAll($stateParams.searchTerm);\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n// @ngInject\nfunction CurrenciesController($rootScope, $state, currencies, $scope, CurrenciesApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currencies = currencies;\n    vm.selectedCurrencyId = 0;\n\n\n    // functions\n    vm.searchTermChanged = searchTermChanged;\n\n    activate();\n\n    function activate() {\n        $rootScope.$on('Currency.Changed', function (event, response) {\n            loadCurrencies();\n        });\n    }\n    function searchTermChanged() {\n        loadCurrencies();\n    }\n\n    function loadCurrencies() {\n        loadSpinnerService.start('mainSpinner');\n        CurrenciesApiService.getAll(vm.searchTerm).then(function (response) {\n            vm.currencies = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner', { force: true });\n        });\n    }\n\n}\n\nangular\n    .module('base.currencies', ['currencies.api','currencies.currency'])\n    .config(stateConfig)\n    .controller('CurrenciesController', CurrenciesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.currencies.currency', {\n        url: '/{currencyId}',\n        views: {\n            \"baseView@base\": {\n                templateUrl: 'main/base/currencies/currency/currency.tpl.html',\n                controller: 'CurrencyController as vm'\n            }\n        },\n        resolve: {\n            currency: currenciesResolver,\n            createNew: function () { return false; }\n        }\n    });\n\n    $stateProvider.state('base.currencies.new', {\n        url: '/new',\n        views: {\n            \"baseView@base\": {\n                templateUrl: 'main/base/currencies/currency/currency.tpl.html',\n                controller: 'CurrencyController as vm'\n            }\n        },\n        resolve: {\n            currency: function () { return {}; },\n            createNew: function () { return true; }\n        }\n    });\n}\n\n\n\n// @ngInject\nfunction currenciesResolver($stateParams, CurrenciesApiService) {\n    return CurrenciesApiService.getCurrency($stateParams.currencyId);\n}\n\n\n// @ngInject\nfunction CurrencyController($state, currency, loadSpinnerService, CurrenciesApiService, createNew, $scope, $translate, ToasterService, confirmationDialogService) {\n    var vm = this;\n\n    vm.currency = currency;\n    vm.isEditing = false;\n    vm.isNew = false;\n    vm.currencyCopy = {};\n\n    // functions\n    vm.save = save;\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.delete = deleteCurrency;\n\n    // initialize\n    if (createNew) {\n        vm.isNew = true;\n        vm.isEditing = true;\n    }\n\n    function save() {\n        CurrenciesApiService.save(vm.currency).then(function (result) {\n            vm.currency.id = result.data.id;\n            vm.isEditing = false;\n            vm.isNew = false;\n            ToasterService.showSuccess('\"' + vm.currency.code + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"base.currencies\"));\n\n        }, function (error) {\n            ToasterService.showError(error.message, $translate.instant(\"base.currencies\"));\n        }).finally(function () {\n            vm.isEditing = false;\n            vm.isNew = false;\n            $state.go('base.currencies.currency', { currencyId: vm.currency.id });\n        });\n    }\n\n    function enableEditing() {\n        vm.currencyCopy = angular.copy(vm.currency);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.currency = angular.copy(vm.currencyCopy);\n        vm.isEditing = false;\n    }\n\n    function deleteCurrency() {\n\n        confirmationDialogService.showDialog($translate.instant(\"currency.confirmDelete\")).then(function (deleteConfirmed) {\n            if (deleteConfirmed === true) {\n                CurrenciesApiService.deleteCurrency(vm.currency.id).then(function (result) {\n                    ToasterService.showSuccess('\"' + vm.currency.code + '\" ' + $translate.instant(\"common.wasDeleted\"), $translate.instant(\"base.currencies\"));\n                }, function (error) {\n                    ToasterService.showError($translate.instant(error.data.message), $translate.instant(\"base.currencies\"));\n                }).finally(function () {\n                    vm.isEditing = false;\n                    vm.isNew = false;\n                    $state.go('base.currencies');\n                });\n            }\n        });\n    }\n}\n\n\nangular\n    .module('currencies.currency', [])\n    .config(stateConfig)\n    .controller('CurrencyController', CurrencyController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.customergroups.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/customergroups/customergroup/customergroup.tpl.html',\n            controller: 'CustomerGroupController as vm'\n        }},\n        resolve: {\n            customergroup: function() { return {}; },\n            isNewCustomerGroup: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('base.customergroups.customergroup', {\n        url:'/{customergroupId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/customergroups/customergroup/customergroup.tpl.html',\n            controller: 'CustomerGroupController as vm'\n        }},\n        resolve: {\n            customergroup: customergroupResolver,\n            isNewCustomerGroup: function() {return false;}\n        }\n    });\n\n}\n\n// @ngInject\nfunction customergroupResolver($stateParams, CustomerGroupsApiService) {\n    return CustomerGroupsApiService.getCustomerGroup($stateParams.customergroupId);\n}\n\n// @ngInject\nfunction languagesResolver($stateParams, CustomerGroupsApiService) {\n    return CustomerGroupsApiService.getLanguages();\n}\n\n// @ngInject\nfunction CustomerGroupController($state, customergroup, loadSpinnerService, CustomerGroupsApiService, ToasterService, confirmationDialogService, $translate, isNewCustomerGroup) {\n    var vm = this;\n\n    var customergroupCopy = {};\n\n    vm.customergroup = customergroup;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveCustomerGroup = saveCustomerGroup;\n    vm.deleteCustomerGroup = deleteCustomerGroup;\n\n    vm.isNewCustomerGroup = isNewCustomerGroup;\n    vm.isEditing = vm.isNewCustomerGroup;\n\n    vm.isCustomerGroupCodeValid = isCustomerGroupCodeValid;\n    vm.isAllInformationValid = isAllInformationValid;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewCustomerGroup) {\n            vm.customergroup = {};\n        }\n\n    }\n\n    function enableEditing() {\n        customergroupCopy = angular.copy(vm.customergroup);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.customergroup = customergroupCopy;\n        vm.isEditing = false;\n    }\n\n    function saveCustomerGroup() {\n        if (vm.isNewCustomerGroup) {\n            saveNewCustomerGroup();\n        } else {\n            updateCustomerGroup();\n        }\n    }\n\n    function saveNewCustomerGroup() {\n        loadSpinnerService.start('mainSpinner');\n        CustomerGroupsApiService.createCustomerGroup(vm.customergroup).then(function(response) {\n            vm.customergroup = response;\n            prepareData();\n            vm.isNewCustomerGroup = false;\n            vm.isEditing = false;\n            $state.go('base.customergroups.customergroup', {customergroupId: vm.customergroup.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateCustomerGroup() {\n        loadSpinnerService.start('mainSpinner');\n\n        CustomerGroupsApiService.updateCustomerGroup(vm.customergroup).then(function(response) {\n            vm.customergroup = response;\n            prepareData();\n            vm.isNewCustomerGroup = false;\n            vm.isEditing = false;\n            $state.go('base.customergroups.customergroup', {customergroupId: vm.customergroup.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteCustomerGroup() {\n        confirmationDialogService\n            .showDialog($translate.instant('customergroup.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    CustomerGroupsApiService.deleteCustomerGroup(vm.customergroup.id).then(function(response) {\n                        vm.customergroup = response;\n                        prepareData();\n                        vm.isNewCustomerGroup = false;\n                        vm.isEditing = false;\n                        $state.go('base.customergroups');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(customergroup) {\n        customergroup.showEditForm = !customergroup.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.customergroup === undefined) {\n            return;\n        }\n\n        vm.customergroupCopy = angular.copy(vm.customergroup);\n    }\n\n    function isAllInformationValid() {\n        return isCustomerGroupCodeValid();\n    }\n\n    function isCustomerGroupCodeValid() {\n        if (!vm.customergroup.code) { return false; }\n        if (vm.customergroup.code.length > 20) { return false; }\n\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('customergroups.customergroup', [])\n    .config(stateConfig)\n    .controller('CustomerGroupController', CustomerGroupController);\n","// @ngInject\nfunction CustomerGroupsApiService(ResourcesService) {\n\n  var endpoint = 'customergroups';\n\n  return {\n    getCustomerGroups: ResourcesService.apiFactory.get(endpoint),\n    getCustomerGroup: ResourcesService.apiFactory.get(endpoint),\n    getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n    createCustomerGroup: ResourcesService.apiFactory.create(endpoint, 'CustomerGroup'),\n    updateCustomerGroup: ResourcesService.apiFactory.update(endpoint, 'CustomerGroup'),\n    deleteCustomerGroup: ResourcesService.apiFactory.delete(endpoint, 'CustomerGroup')\n  };\n\n}\n\nangular\n  .module('customergroups.api', [])\n  .factory('CustomerGroupsApiService', CustomerGroupsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.customergroups', {\n        url: '/customergroups',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/customergroups/customergroups.tpl.html',\n            controller: 'CustomerGroupsController as vm'\n        }},\n        resolve: {\n            customergroups: customergroupsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction customergroupsResolver(CustomerGroupsApiService) {\n    return CustomerGroupsApiService.getCustomerGroups();\n}\n\n// @ngInject\nfunction CustomerGroupsController($rootScope, $state, $scope, customergroups, CustomerGroupsApiService, loadSpinnerService) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.customergroups = customergroups;\n    vm.selectedCustomerGroupId = 0;\n    vm.searchTerm = \"\";\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.customerGroupId; }, function(newValue, oldValue) {\n            vm.selectedCustomerGroupId = parseInt($state.params.customerGroupId,10);\n        });\n        $rootScope.$on('CustomerGroup.Inserted', function(event, response) {\n        });\n        $rootScope.$on('CustomerGroup.Updated', function(event, response) {\n        });\n        $rootScope.$on('CustomerGroup.Deleted', function(event, response) {\n        });\n        $rootScope.$on('CustomerGroup.Changed', function(event, response) {\n            loadCustomerGroups();\n        });\n    }\n\n    function loadCustomerGroups() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        CustomerGroupsApiService.getCustomerGroups(request).then(function(response) {\n            vm.customergroups = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadCustomerGroups();\n    }\n\n}\n\nangular\n    .module('base.customergroups', ['customergroups.api','customergroups.customergroup'])\n    .config(stateConfig)\n    .controller('CustomerGroupsController', CustomerGroupsController);\n","// @ngInject\nfunction DashboardApiService($q, DS, ResourcesService, DSHttpAdapter) {\n\n    return {\n        getWidgetDefinitions: getWidgetDefinitions,\n        getWidgets: getWidgets,\n        getWidgetData: getWidgetData,\n        saveWidgets: saveWidgets\n    };\n\n    function getWidgets() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'dashboard/getdashboard/').then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getWidgetDefinitions() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'dashboard/getwidgetdefinitions/').then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getWidgetData(widget_id, settings) {\n        var deferred = $q.defer();\n\n        settings = settings !== undefined && settings !== \"\" && angular.isString(settings) ? JSON.parse(settings) : settings;\n\n        var request = {\n            locationIds: settings === undefined || settings === null ? undefined: settings.locationIds,\n            hideTooltip: settings === undefined || settings === null ? undefined: settings.hideTooltip,\n            businessAreaId: settings === undefined || settings === null ? undefined: settings.businessAreaId,\n            selectedWidgetTimeFrame: settings === undefined || settings === null ? undefined: settings.selectedWidgetTimeFrame\n        };\n        \n        if(settings === undefined || settings === null || settings.locationIds === undefined) {\n            request.locationIds = [];\n            if(settings !== null && settings !== '' && settings !== undefined && !isNaN(parseInt(settings))){\n                request.locationIds.push(parseInt(settings));\n            }\n        }\n\n        var jsonRequest = angular.toJson(request);\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'dashboard/getwidgetdata/' + widget_id, jsonRequest).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n\n    function saveWidgets(data) {\n        var deferred = $q.defer();\n\n        var request = data;\n\n        _.forEach(request, function(value){\n            if(value.setting !== undefined && value.setting !== null \n                && (value.setting.locationIds !== undefined || value.setting.businessAreaId !== undefined)){\n                value.setting = angular.toJson(value.setting);\n            }\n        });\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'dashboard/saveWidgets', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n        return deferred.promise;\n    }\n\n}\n\nangular.module('dashboard.api', [])\n    .factory('DashboardApiService', DashboardApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('main.dashboard', {\n        url: '/dashboard',\n        templateUrl: 'main/base/dashboard/dashboard.tpl.html',\n        controller: 'MainDashboardController as vm',\n        resolve: {\n            initialData: ['DashboardApiService', '$q', function(DashboardApiService, $q) {\n                return $q.all({\n                    widgetDefinitions: DashboardApiService.getWidgetDefinitions(),\n                    widgets: DashboardApiService.getWidgets()\n                });\n            }]\n        }\n    });\n}\n\n// @ngInject\nfunction MainDashboardController($scope, initialData) {\n    $scope.widgetDefinitions = initialData.widgetDefinitions.data;\n    $scope.widgets = initialData.widgets.data || [];\n}\n\nangular\n    .module('base.dashboard', ['dashboard.api'])\n    .config(stateConfig)\n    .controller('MainDashboardController', ['$scope', 'initialData', MainDashboardController]);\n","// @ngInject\nfunction stateConfig($stateProvider){\n\n    $stateProvider.state('base.deliveryplanningtemplates.new', {\n        url:'/new',\n        views: {\n            'baseView@base':{\n                remplateUrl: 'main/base/deliveryplanningtemplates/deliveryplanningtemplate/deliveryplanningtemplate.tpl.html',\n                controller: 'DeliveryPlanningTemplateController as vm'\n        }},\n        resolve: {\n                deliveryplanningtemplate: function() {return {}; },\n                isNewDeliveryPlanningTemplate: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('base.deliveryplanningtemplates.deliveryplanningtemplate', {\n        url:'/{deliveryplanningtemplateId}',\n        views: {\n            'baseView@base':{\n                templateUrl: 'main/base/deliveryplanningtemplates/deliveryplanningtemplate/deliveryplanningtemplate.tpl.html',\n                controller: 'DeliveryPlanningTemplateController as vm'\n        }},\n        resolve: {\n            deliveryplanningtemplate: deliveryplanningtemplateResolver,\n            isNewDeliveryPlanningTemplate: function() {return false;}\n        }\n    });\n}\n\n// @ngInject\nfunction deliveryplanningtemplateResolver($stateParams, DeliveryPlanningTemplatesApiService) {\n    return DeliveryPlanningTemplatesApiService.getDeliveryPlanningTemplate($stateParams.deliveryplanningtemplateId);\n}\n\n// @ngInject\nfunction DeliveryPlanningTemplateController($state, deliveryplanningtemplate, DeliveryPlanningTemplatesApiService, ToasterService, confirmationDialogService, $translate, isNewDeliveryPlanningTemplate) {\n    var vm = this;\n\n    var deliveryplanningtemplateCopy = {};\n\n    vm.deliveryplanningtemplate = deliveryplanningtemplate;\n\n    console.log(vm.deliveryplanningtemplate);\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveDeliveryPlanningTemplate = saveDeliveryPlanningTemplate;\n    vm.deleteDeliveryPlanningTemplate = deleteDeliveryPlanningTemplate;\n    vm.isNewDeliveryPlanningTemplate = isNewDeliveryPlanningTemplate;\n    vm.isEditing = vm.isNewDeliveryPlanningTemplate;\n\n    vm.isAllInformationValid = isAllInformationValid;\n    //vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if(vm.isNewDeliveryPlanningTemplate){\n            vm.deliveryplanningtemplate = {};\n        }\n    }\n\n    function enableEditing(){\n        deliveryplanningtemplateCopy = angular.copy(vm.deliveryplanningtemplate);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing(){\n        vm.deliveryplanningtemplate = deliveryplanningtemplateCopy;\n        vm.isEditing = false;\n    }\n\n    function saveDeliveryPlanningTemplate() {\n        if(vm.isNewDeliveryPlanningTemplate) {\n            saveNewDeliveryPlanningTemplate();\n        } else {\n            updateDeliveryPlanningTemplate();\n        }\n    }\n\n    function saveNewDeliveryPlanningTemplate() {\n        loadSpinnerService.start('mainSpinner');\n        DeliveryPlanningTemplatesApiService.createDeliveryPlanningTemplate(vm.deliveryplanningtemplate).then(function(response){\n            vm.deliveryplanningtemplate = response;\n            prepareData();\n            vm.isNewDeliveryPlanningTemplate = false;\n            vm.isEditing = false;\n            $state.go('base.deliveryplanningtemplates.deliveryplanningtemplate', {deliveryplanningtemplateId: vm.deliveryplanningtemplate.id});\n        }, function(error){\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateDeliveryPlanningTemplate() {\n        loadSpinnerService.start('mainSpinner');\n        DeliveryPlanningTemplatesApiService.updateDeliveryPlanningTemplate(vm.deliveryplanningtemplate).then(function(response){\n            vm.deliveryplanningtemplate = response;\n            prepareData();\n            vm.isNewDeliveryPlanningTemplate = false;\n            vm.isEditing = false;\n            $state.go('base.deliveryplanningtemplates.deliveryplanningtemplate', {deliveryplanningtemplateId: vm.deliveryplanningtemplate.id});\n        }, function(error){\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteDeliveryPlanningTemplate() {\n        confirmationDialogService.showDialog($translate.instant('deliveryplanningtemplates.confirmDelete'))\n            .then(function(confirmation) {\n                if(confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    DeliveryPlanningTemplatesApiService.updateDeliveryPlanningTemplate(vm.deliveryplanningtemplate).then(function(response){\n                        vm.deliveryplanningtemplate = response;\n                        prepareData();\n                        vm.isNewDeliveryPlanningTemplate = false;\n                        vm.isEditing = false;\n                        $state.go('base.deliveryplanningtemplates');\n                    }, function(error){\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function prepareData() {\n        if (vm.deliveryplanningtemplate === undefined) {\n            return;\n        }\n\n        vm.deliveryplanningtemplateCopy = angular.copy(vm.deliveryplanningtemplate);\n    }\n\n    function isAllInformationValid() {\n        return true;\n    }\n}\n\nangular\n    .module('deliveryplanningtemplates.deliveryplanningtemplate', [])\n    .config(stateConfig)\n    .controller('DeliveryPlanningTemplateController', DeliveryPlanningTemplateController);","// @ngInject\nfunction DeliveryPlanningTemplatesApiService(ResourcesService) {\n\n    var endpoint = 'deliveryplanningtemplate';\n\n    return {\n        getDeliveryPlanningTemplates: ResourcesService.apiFactory.get(endpoint),\n        getDeliveryPlanningTemplate: ResourcesService.apiFactory.get(endpoint),\n        createDeliveryPlanningTemplate: ResourcesService.apiFactory.create(endpoint, 'DeliveryPlanningTemplate'),\n        updateDeliveryPlanningTemplate: ResourcesService.apiFactory.update(endpoint, 'DeliveryPlanningTemplate'),\n        deleteDeliveryPlanningTemplate: ResourcesService.apiFactory.delete(endpoint, 'DeliveryPlanningTemplate')\n    };\n}\n\nangular\n    .module('deliveryplanningtemplates.api', [])\n    .factory('DeliveryPlanningTemplatesApiService', DeliveryPlanningTemplatesApiService);","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.deliveryplanningtemplates', {\n        url: '/deliveryplanningtemplates?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/deliveryplanningtemplates/deliveryplanningtemplates.tpl.html',\n            controller: 'DeliveryPlanningTemplatesController as vm'\n        }},\n        resolve: {\n            deliveryplanningtemplates: deliveryplanningtemplatesResolver,\n            searchTerm: searchTermResolver\n        }\n    });\n}\n\n// @ngInject\nfunction deliveryplanningtemplatesResolver(DeliveryPlanningTemplatesApiService, $stateParams) {\n    return DeliveryPlanningTemplatesApiService.getDeliveryPlanningTemplates({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n// @ngInject\nfunction searchTermResolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n// @ngInject\nfunction DeliveryPlanningTemplatesController($rootScope, $state, $scope, deliveryplanningtemplates, DeliveryPlanningTemplatesApiService, loadSpinnerService, searchTerm){\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.deliveryplanningtemplates = deliveryplanningtemplates;\n    vm.selectedDeliveryPlanningTemplateId = 0;\n    vm.searchTerm = (searchTerm)? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function(){return $state.params.deliveryPlanningTemplateId;}, function(newValue, oldValue){\n            vm.selectedDeliveryPlanningTemplateId = parseInt($state.params.deliveryPlanningTemplateId,10);\n        });\n        $rootScope.$on('DeliveryPlanningTemplate.Inserted', function(event, response){\n        });\n        $rootScope.$on('DeliveryPlanningTemplate.Updated', function(event, response){\n        });\n        $rootScope.$on('DeliveryPlanningTemplate.Deleted', function(event, response){\n        });\n        $rootScope.$on('DeliveryPlanningTemplate.Changed', function(event, response){\n            loadDeliveryPlanningTemplates();\n        });\n    }\n\n    function loadDeliveryPlanningTemplates() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        DeliveryPlanningTemplatesApiService.getDeliveryPlanningTemplates(request).then(function(response){\n            vm.deliveryplanningtemplates = response;\n        }).finally(function(){\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n    \n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadDeliveryPlanningTemplates();\n    }\n}\n\nangular\n    .module('base.deliveryplanningtemplates', ['deliveryplanningtemplates.api', 'deliveryplanningtemplates.deliveryplanningtemplate'])\n    .config(stateConfig)\n    .controller('DeliveryPlanningTemplatesController', DeliveryPlanningTemplatesController);","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.deliveryterms.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/deliveryterms/deliveryterm/deliveryterm.tpl.html',\n            controller: 'DeliveryTermController as vm'\n        }},\n        resolve: {\n            deliveryterm: function() { return {}; },\n            languages: languagesResolver,\n            isNewDeliveryTerm: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('base.deliveryterms.deliveryterm', {\n        url:'/{deliverytermId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/deliveryterms/deliveryterm/deliveryterm.tpl.html',\n            controller: 'DeliveryTermController as vm'\n        }},\n        resolve: {\n            deliveryterm: deliverytermResolver,\n            languages: languagesResolver,\n            isNewDeliveryTerm: function() {return false;}\n        }\n    });\n\n}\n\n// @ngInject\nfunction deliverytermResolver($stateParams, DeliveryTermsApiService) {\n    return DeliveryTermsApiService.getDeliveryTerm($stateParams.deliverytermId);\n}\n\n// @ngInject\nfunction languagesResolver($stateParams, DeliveryTermsApiService) {\n    return DeliveryTermsApiService.getLanguages();\n}\n\n// @ngInject\nfunction DeliveryTermController($state, deliveryterm, loadSpinnerService, DeliveryTermsApiService, ToasterService, confirmationDialogService, $translate, isNewDeliveryTerm, languages) {\n    var vm = this;\n\n    var deliverytermCopy = {};\n\n    vm.deliveryterm = deliveryterm;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveDeliveryTerm = saveDeliveryTerm;\n    vm.deleteDeliveryTerm = deleteDeliveryTerm;\n\n    vm.isNewDeliveryTerm = isNewDeliveryTerm;\n    vm.isEditing = vm.isNewDeliveryTerm;\n\n    vm.isDeliveryTermCodeValid = isDeliveryTermCodeValid;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.languages = languages;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewDeliveryTerm) {\n            vm.deliveryterm = {};\n        }\n\n        appendLocalizations(vm.deliveryterm, vm.languages);\n\n    }\n\n    function appendLocalizations(obj, languages) {\n        if (!obj.localizations) {\n            obj.localizations = [];\n        }\n        _.forEach(languages, function(language) {\n            if (_.filter(obj.localizations, { language: { id: language.id}}).length === 0) {\n                obj.localizations.push({ language: language });\n            }\n        });\n    }\n\n    function enableEditing() {\n        deliverytermCopy = angular.copy(vm.deliveryterm);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.deliveryterm = deliverytermCopy;\n        vm.isEditing = false;\n    }\n\n    function saveDeliveryTerm() {\n        if (vm.isNewDeliveryTerm) {\n            saveNewDeliveryTerm();\n        } else {\n            updateDeliveryTerm();\n        }\n    }\n\n    function saveNewDeliveryTerm() {\n        loadSpinnerService.start('mainSpinner');\n        DeliveryTermsApiService.createDeliveryTerm(vm.deliveryterm).then(function(response) {\n            vm.deliveryterm = response;\n            prepareData();\n            vm.isNewDeliveryTerm = false;\n            vm.isEditing = false;\n            $state.go('base.deliveryterms.deliveryterm', {deliverytermId: vm.deliveryterm.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateDeliveryTerm() {\n        loadSpinnerService.start('mainSpinner');\n\n        DeliveryTermsApiService.updateDeliveryTerm(vm.deliveryterm).then(function(response) {\n            vm.deliveryterm = response;\n            prepareData();\n            vm.isNewDeliveryTerm = false;\n            vm.isEditing = false;\n            $state.go('base.deliveryterms.deliveryterm', {deliverytermId: vm.deliveryterm.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteDeliveryTerm() {\n        confirmationDialogService\n            .showDialog($translate.instant('deliveryterm.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    DeliveryTermsApiService.deleteDeliveryTerm(vm.deliveryterm.id).then(function(response) {\n                        vm.deliveryterm = response;\n                        prepareData();\n                        vm.isNewDeliveryTerm = false;\n                        vm.isEditing = false;\n                        $state.go('base.deliveryterms');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(deliveryterm) {\n        deliveryterm.showEditForm = !deliveryterm.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.deliveryterm === undefined) {\n            return;\n        }\n\n        vm.deliverytermCopy = angular.copy(vm.deliveryterm);\n    }\n\n    function isAllInformationValid() {\n        return isDeliveryTermCodeValid();\n    }\n\n    function isDeliveryTermCodeValid() {\n        if (!vm.deliveryterm.code) { return false; }\n        if (vm.deliveryterm.code.length > 20) { return false; }\n\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('deliveryterms.deliveryterm', [])\n    .config(stateConfig)\n    .controller('DeliveryTermController', DeliveryTermController);\n","// @ngInject\nfunction DeliveryTermsApiService(ResourcesService) {\n\n  var endpoint = 'deliveryterms';\n\n  return {\n    getDeliveryTerms: ResourcesService.apiFactory.get(endpoint),\n    getDeliveryTerm: ResourcesService.apiFactory.get(endpoint),\n    getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n    createDeliveryTerm: ResourcesService.apiFactory.create(endpoint, 'DeliveryTerm'),\n    updateDeliveryTerm: ResourcesService.apiFactory.update(endpoint, 'DeliveryTerm'),\n    deleteDeliveryTerm: ResourcesService.apiFactory.delete(endpoint, 'DeliveryTerm')\n  };\n\n}\n\nangular\n  .module('deliveryterms.api', [])\n  .factory('DeliveryTermsApiService', DeliveryTermsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.deliveryterms', {\n        url: '/deliveryterms?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/deliveryterms/deliveryterms.tpl.html',\n            controller: 'DeliveryTermsController as vm'\n        }},\n        resolve: {\n            deliveryterms: deliverytermsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction deliverytermsResolver(DeliveryTermsApiService, $stateParams) {\n    return DeliveryTermsApiService.getDeliveryTerms({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction DeliveryTermsController($rootScope, $state, $scope, deliveryterms, DeliveryTermsApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.deliveryterms = deliveryterms;\n    vm.selectedDeliveryTermId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.deliveryTermId; }, function(newValue, oldValue) {\n            vm.selectedDeliveryTermId = parseInt($state.params.deliveryTermId,10);\n        });\n        $rootScope.$on('DeliveryTerm.Inserted', function(event, response) {\n        });\n        $rootScope.$on('DeliveryTerm.Updated', function(event, response) {\n        });\n        $rootScope.$on('DeliveryTerm.Deleted', function(event, response) {\n        });\n        $rootScope.$on('DeliveryTerm.Changed', function(event, response) {\n            loadDeliveryTerms();\n        });\n    }\n\n    function loadDeliveryTerms() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        DeliveryTermsApiService.getDeliveryTerms(request).then(function(response) {\n            vm.deliveryterms = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadDeliveryTerms();\n    }\n\n}\n\nangular\n    .module('base.deliveryterms', ['deliveryterms.api','deliveryterms.deliveryterm'])\n    .config(stateConfig)\n    .controller('DeliveryTermsController', DeliveryTermsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.invoicetypes.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/invoicetypes/invoicetype/invoicetype.tpl.html',\n            controller: 'InvoiceTypeController as vm'\n        }},\n        resolve: {\n            invoicetype: function() { return {}; },\n            languages: languagesResolver,\n            isNewInvoiceType: function() {return true;},\n            printDocumentTemplates: printDocumentResolver\n        }\n    });\n\n    $stateProvider.state('base.invoicetypes.invoicetype', {\n        url:'/{invoicetypeId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/invoicetypes/invoicetype/invoicetype.tpl.html',\n            controller: 'InvoiceTypeController as vm'\n        }},\n        resolve: {\n            invoicetype: invoicetypeResolver,\n            languages: languagesResolver,\n            isNewInvoiceType: function() {return false;},\n            printDocumentTemplates: printDocumentResolver\n        }\n    });\n\n}\n\n// @ngInject\nfunction invoicetypeResolver($stateParams, InvoiceTypesApiService) {\n    return InvoiceTypesApiService.getInvoiceType($stateParams.invoicetypeId);\n}\n\n// @ngInject\nfunction languagesResolver($stateParams, InvoiceTypesApiService) {\n    return InvoiceTypesApiService.getLanguages();\n}\n\n// @ngInject\nfunction printDocumentResolver($stateParams, InvoiceTypesApiService) {\n    return InvoiceTypesApiService.getPrintDocumentTemplates();\n}\n\n// @ngInject\nfunction InvoiceTypeController($state, invoicetype, loadSpinnerService, InvoiceTypesApiService, ToasterService, confirmationDialogService, $translate, isNewInvoiceType, languages, printDocumentTemplates) {\n    var vm = this;\n\n    var invoicetypeCopy = {};\n\n    vm.invoicetype = invoicetype;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveInvoiceType = saveInvoiceType;\n    vm.deleteInvoiceType = deleteInvoiceType;\n\n    vm.isNewInvoiceType = isNewInvoiceType;\n    vm.isEditing = vm.isNewInvoiceType;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.languages = languages;\n    vm.printDocumentTemplates = printDocumentTemplates;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewInvoiceType) {\n            vm.invoicetype = {};\n        }\n\n        appendLocalizations(vm.invoicetype, vm.languages);\n\n    }\n\n    function appendLocalizations(obj, languages) {\n        if (!obj.localizations) {\n            obj.localizations = [];\n        }\n        _.forEach(languages, function(language) {\n            if (_.filter(obj.localizations, { language: { id: language.id}}).length === 0) {\n                obj.localizations.push({ language: language });\n            }\n        });\n    }\n\n    function enableEditing() {\n        invoicetypeCopy = angular.copy(vm.invoicetype);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.invoicetype = invoicetypeCopy;\n        vm.isEditing = false;\n    }\n\n    function saveInvoiceType() {\n        if (vm.isNewInvoiceType) {\n            saveNewInvoiceType();\n        } else {\n            updateInvoiceType();\n        }\n    }\n\n    function saveNewInvoiceType() {\n        loadSpinnerService.start('mainSpinner');\n        InvoiceTypesApiService.createInvoiceType(vm.invoicetype).then(function(response) {\n            vm.invoicetype = response;\n            prepareData();\n            vm.isNewInvoiceType = false;\n            vm.isEditing = false;\n            $state.go('base.invoicetypes.invoicetype', {invoicetypeId: vm.invoicetype.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateInvoiceType() {\n        loadSpinnerService.start('mainSpinner');\n\n        InvoiceTypesApiService.updateInvoiceType(vm.invoicetype).then(function(response) {\n            vm.invoicetype = response;\n            prepareData();\n            vm.isNewInvoiceType = false;\n            vm.isEditing = false;\n            $state.go('base.invoicetypes.invoicetype', {invoicetypeId: vm.invoicetype.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteInvoiceType() {\n        confirmationDialogService\n            .showDialog($translate.instant('invoicetype.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    InvoiceTypesApiService.deleteInvoiceType(vm.invoicetype.id).then(function(response) {\n                        vm.invoicetype = response;\n                        prepareData();\n                        vm.isNewInvoiceType = false;\n                        vm.isEditing = false;\n                        $state.go('base.invoicetypes');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(invoicetype) {\n        invoicetype.showEditForm = !invoicetype.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.invoicetype === undefined) {\n            return;\n        }\n\n        vm.invoicetypeCopy = angular.copy(vm.invoicetype);\n    }\n\n    function isAllInformationValid() {\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('invoicetypes.invoicetype', [])\n    .config(stateConfig)\n    .controller('InvoiceTypeController', InvoiceTypeController);\n","// @ngInject\nfunction InvoiceTypesApiService(ResourcesService) {\n\n  var endpoint = 'invoicetypes';\n\n  return {\n    getInvoiceTypes: ResourcesService.apiFactory.get(endpoint),\n    getInvoiceType: ResourcesService.apiFactory.get(endpoint),\n    getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n    createInvoiceType: ResourcesService.apiFactory.create(endpoint, 'InvoiceType'),\n    updateInvoiceType: ResourcesService.apiFactory.update(endpoint, 'InvoiceType'),\n    deleteInvoiceType: ResourcesService.apiFactory.delete(endpoint, 'InvoiceType'),\n    getPrintDocumentTemplates: ResourcesService.apiFactory.get(endpoint + '/printDocumentTemplates')\n  };\n\n}\n\nangular\n  .module('invoicetypes.api', [])\n  .factory('InvoiceTypesApiService', InvoiceTypesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.invoicetypes', {\n        url: '/invoicetypes?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/invoicetypes/invoicetypes.tpl.html',\n            controller: 'InvoiceTypesController as vm'\n        }},\n        resolve: {\n            invoicetypes: invoicetypesResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction invoicetypesResolver(InvoiceTypesApiService, $stateParams) {\n    return InvoiceTypesApiService.getInvoiceTypes({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction InvoiceTypesController($rootScope, $state, $scope, invoicetypes, InvoiceTypesApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.invoicetypes = invoicetypes;\n    vm.selectedInvoiceTypeId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.invoiceTypeId; }, function(newValue, oldValue) {\n            vm.selectedInvoiceTypeId = parseInt($state.params.invoiceTypeId,10);\n        });\n        $rootScope.$on('InvoiceType.Inserted', function(event, response) {\n        });\n        $rootScope.$on('InvoiceType.Updated', function(event, response) {\n        });\n        $rootScope.$on('InvoiceType.Deleted', function(event, response) {\n        });\n        $rootScope.$on('InvoiceType.Changed', function(event, response) {\n            loadInvoiceTypes();\n        });\n    }\n\n    function loadInvoiceTypes() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        InvoiceTypesApiService.getInvoiceTypes(request).then(function(response) {\n            vm.invoicetypes = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadInvoiceTypes();\n    }\n\n}\n\nangular\n    .module('base.invoicetypes', ['invoicetypes.api','invoicetypes.invoicetype'])\n    .config(stateConfig)\n    .controller('InvoiceTypesController', InvoiceTypesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.ordercollections.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/ordercollections/ordercollection/ordercollection.tpl.html',\n            controller: 'OrderCollectionController as vm'\n        }},\n        resolve: {\n            collection: function() { return {\n                collectionCode: '',\n                collectionDescription: '',\n                articleCollectionType: 0,\n                currentBehaviour: 0,\n                currentRank: 0,\n                currencySettings: [],\n                duration: 360,\n                isArticleSeason: false,\n                isOrderSeason: true,\n                offset: -180,\n                currencies: []\n            }; },\n            currencies: currencyResolver,\n            isNewCollection: function() { return true; }\n        }\n    });\n    $stateProvider.state('base.ordercollections.ordercollection', {\n        url:'/{collectionId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/ordercollections/ordercollection/ordercollection.tpl.html',\n            controller: 'OrderCollectionController as vm'\n        }},\n        resolve: {\n            collection: collectionResolver,\n            currencies: currencyResolver,\n            isNewCollection: function() { return false; }\n        }\n    });\n}\n\n// @ngInject\nfunction collectionResolver($stateParams, OrderCollectionsApiService) {\n    return OrderCollectionsApiService.getOrderCollectionById($stateParams.collectionId);\n}\n\n// @ngInject\nfunction currencyResolver($stateParams, OrderCollectionsApiService) {\n    return OrderCollectionsApiService.listAllCurrencies();\n}\n\n// @ngInject\nfunction OrderCollectionController($window, $state, $scope, $translate, collection,\n        currencies, loadSpinnerService, OrderCollectionsApiService,\n        ToasterService, isNewCollection) {\n    var vm = this;\n\n    //Properties\n    var collectionCopy = {};\n    vm.isNewCollection = isNewCollection;\n    vm.isEditing = vm.isNewCollection;\n    vm.collection = collection;\n    vm.currentBehaviours = [];\n    vm.articleCollectionTypes = [];\n\n    //Methods\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveCollection = saveCollection;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n\n        $scope.$watch(function() { return vm.collection.selectedCurrentBehaviour; }, function(newValue, oldValue) {\n            if (newValue.id !== oldValue.id) {\n                vm.collection.currentBehaviour = newValue.id;\n            }\n        });\n        $scope.$watch(function() { return vm.collection.selectedArticleCollectionType; }, function(newValue, oldValue) {\n            if (newValue.id !== oldValue.id) {\n                vm.collection.articleCollectionType = newValue.id;\n            }\n        });\n\n        if (isNewCollection) {\n            loadSpinnerService.start('mainSpinner');\n            vm.collections = [];\n            OrderCollectionsApiService.listAllOrderCollections().then(function(response) {\n                vm.collections = response;\n                vm.collections = _.filter(vm.collections, function(c) { return c.toDate; });\n                if (!isNewCollection) { vm.collections = _.filter(vm.collections, function(c) { return c.id !== vm.collection.id; }); }\n                vm.collections = _.sortBy(vm.collections, ['toDate']);\n\n                //Check which should be the next collection from date\n                var lastCollection = vm.collections[vm.collections.length - 1];\n                var lastToDate = lastCollection.toDate;\n                var fromDate = new Date(lastToDate);\n                fromDate.setDate(fromDate.getDate() + 1);\n                var toDate = new Date(lastToDate);\n                toDate.setDate(toDate.getDate() + 2);\n\n                vm.collection.fromDate = fromDate;\n                vm.collection.toDate = toDate;\n            }, function(error) {\n                console.log(error);\n            }).then(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function setCurrentBehaviours() {\n        //DoNotSetCurrent, SetCurrent, SetNotCurrent\n        vm.currentBehaviours.push({ id: 0, description: $translate.instant('articlecollection.currentBehaviourDoNotSetCurrent') });     //\"DoNotSetCurrent\"\n        vm.currentBehaviours.push({ id: 1, description: $translate.instant('articlecollection.currentBehaviourSetCurrent') });          //\"SetCurrent\"\n        vm.currentBehaviours.push({ id: 2, description: $translate.instant('articlecollection.currentBehaviourSetNotCurrent') });       //\"SetNotCurrent\"\n    }\n\n    function setArticleCollectionTypes() {\n        //Static, Rolling\n        vm.articleCollectionTypes.push({ id: 0, description: $translate.instant('articlecollection.articleCollectionTypeStatic') });     //\"Static\"\n        vm.articleCollectionTypes.push({ id: 1, description: $translate.instant('articlecollection.articleCollectionTypeRolling') });    //\"Rolling\"\n    }\n\n    function enableEditing() {\n        collectionCopy = angular.copy(vm.collection);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.collection = collectionCopy;\n        vm.isEditing = false;\n    }\n\n    function saveCollection() {\n        if (!vm.collection.collectionCode || vm.collection.collectionCode === 0) {\n            ToasterService.showError($translate.instant('articlecollection.errorCollectionCodeEmpty'), $translate.instant('common.error'));\n            $('#collectionCode').focus();\n            return;\n        }\n\n        vm.collections = [];\n        OrderCollectionsApiService.listAllOrderCollections().then(function(response) {\n            vm.collections = response;\n            vm.collections = _.filter(vm.collections, function(c) { return c.toDate; });\n            if (!isNewCollection) { vm.collections = _.filter(vm.collections, function(c) { return c.id !== vm.collection.id; }); }\n            vm.collections = _.sortBy(vm.collections, ['toDate']);\n\n            //Check which should be the next collection from date\n            //var lastCollection = vm.collections[vm.collections.length - 1];\n            //var lastToDate = new Date(lastCollection.toDate);\n            //var nextDate = new Date(lastToDate.toDateString());\n            //nextDate.setDate(nextDate.getDate() + 1);\n            //var cleanedFromDate = new Date(new Date(vm.collection.fromDate).toDateString());\n            //var cleanedToDate = new Date(new Date(vm.collection.toDate).toDateString());\n\n            //console.log('cleanedFromDate: ' + cleanedFromDate.getTime() + ', nextDate: ' + nextDate.getTime());\n\n            if (vm.collection.collectionCode && vm.isNewCollection && _.find(response, function(r) { return r.collectionCode === vm.collection.collectionCode; })) {\n                ToasterService.showError($translate.instant('articlecollection.errorCollectionCodeAlreadyPresent'), $translate.instant('common.error'));\n                $('#collectionCode').focus();\n                return;\n            }\n            //} else if (vm.collections.length > 0 &&\n                // vm.collection.articleCollectionType === 0 &&\n                // cleanedFromDate.getTime() >= cleanedToDate.getTime()) {\n                //     //If from date is after to date\n                //     vm.collection.toDate = new Date(vm.collection.fromDate);\n                //     ToasterService.showError($translate.instant('articlecollection.errorFromDateAfterToDate'), $translate.instant('common.error'));\n            // } else if (vm.collections.length > 0 &&\n            //     vm.collection.articleCollectionType === 0 &&\n            //     cleanedFromDate.getTime() < nextDate.getTime()) {\n            //         //Confirm to save when from-date is before as to-date of last collection\n            //         confirmationDialogService.showDialog($translate.instant('articlecollection.confirmDatesNotAligning') + ' Senaste säsong: ' + lastCollection.collectionCode + ' \"' + lastCollection.collectionDescription + '\", från och med-datum: ' + new Date(lastToDate.toDateString()).toDateString()).then(function (result) {\n            //             if (result === true) {\n            //                 if (isNewCollection) {\n            //                     saveConfirmedCollection();\n            //                 } else {\n            //                     updateConfirmedCollection();\n            //                 }\n            //             } else {\n            //                 vm.collection.fromDate = new Date(nextDate.toDateString());\n            //                 ToasterService.showError($translate.instant('articlecollection.dateWasAdjusted'), $translate.instant('common.information'));\n            //             }\n            //         });\n\n            if (isNewCollection) {\n                saveConfirmedCollection();\n            } else {\n                updateConfirmedCollection();\n            }\n        }, function(error) {\n            console.log(error);\n        });\n    }\n\n    function saveConfirmedCollection() {\n        var request = {\n            articleCollectionType: vm.collection.selectedArticleCollectionType.id,\n            collectionCode: vm.collection.collectionCode,\n            collectionDescription: vm.collection.collectionDescription.trim(),\n            currencySettings: [],\n            currentBehaviour: vm.collection.selectedCurrentBehaviour.id,\n            duration: vm.collection.duration,\n            fromDate: getFullDate(vm.collection.fromDate),\n            offset: vm.collection.offset,\n            toDate: getFullDate(vm.collection.toDate)\n        };\n        //Add currency settings\n        _.forEach(vm.collection.currencySettings, function(o) {\n            request.currencySettings.push({\n                currencyCode: o.currency.code,\n                currencyRate: o.currencyRate\n            });\n        });\n\n        loadSpinnerService.start('mainSpinner');\n        OrderCollectionsApiService.saveOrderCollection(request).then(function(response) {\n            $state.go('base.ordercollections.ordercollection', { collectionId: response.orderCollectionId });\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getFullDate(date) {\n        var year = new Date(date).getFullYear();\n        var month = zeroFill(new Date(date).getMonth() + 1, 2);\n        var day = zeroFill(new Date(date).getDate(), 2);\n\n        return '' + year + '-' + month + '-' + day;\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            // eslint-disable-next-line wrap-regex\n            return new Array(width + (/\\./.test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n\n    function updateConfirmedCollection() {\n        var request = {\n            articleCollectionId: vm.collection.id,\n            collectionDescription: vm.collection.collectionDescription.trim(),\n            currencySettings: [],\n            currentBehaviour: vm.collection.selectedCurrentBehaviour.id,\n            duration: vm.collection.duration,\n            fromDate: getFullDate(vm.collection.fromDate),\n            offset: vm.collection.offset,\n            toDate: getFullDate(vm.collection.toDate)\n        };\n        //Add currency settings\n        _.forEach(vm.collection.currencySettings, function(o) {\n            request.currencySettings.push({\n                currencyCode: o.currency.code,\n                currencyRate: o.currencyRate\n            });\n        });\n\n        loadSpinnerService.start('mainSpinner');\n        OrderCollectionsApiService.updateOrderCollection(request).then(function(response) {\n            $window.location.reload();\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n\n    function toggleDisplayForm(collection) {\n        collection.showEditForm = !collection.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.collection === undefined) {\n            return;\n        }\n\n        vm.collectionCopy = angular.copy(vm.collection);\n\n        setCurrentBehaviours();\n        setArticleCollectionTypes();\n\n        vm.collection.selectedCurrentBehaviour = vm.currentBehaviours.find(function(element) { return element.id === vm.collection.currentBehaviour; });\n        vm.collection.selectedArticleCollectionType = vm.articleCollectionTypes.find(function(element) { return element.id === vm.collection.articleCollectionType; });\n\n        //If collection currency doesn't contain all available currencies, add them\n        _.forEach(currencies, function(currency) {\n            var existingCurrency;\n            if (vm.collection.currencySettings.length > 0) {\n                existingCurrency = vm.collection.currencySettings.find(function(element) {\n                    return element.currency.code === currency.code;\n                });\n            }\n            if (!existingCurrency) {\n                var newCurrencySetting = {\n                    currency: currency,\n                    currencyRate: currency.currencyRate\n                };\n                vm.collection.currencySettings.push(newCurrencySetting);\n            }\n        });\n    }\n\n    function isAllInformationValid() {\n        //return vm.collection.collectionCode.length > 0 && vm.collection.collectionDescription.length > 0;\n        return true;\n    }\n}\n\nangular\n    .module('ordercollections.ordercollection', [])\n    .config(stateConfig)\n    .controller('OrderCollectionController', OrderCollectionController);\n","// @ngInject\nfunction OrderCollectionsApiService(ResourcesService) {\n\n  var endpoint = 'ordercollections';\n\n  return {\n    listAllOrderCollections: ResourcesService.apiFactory.get(endpoint + '/briefs'),\n    listAllCurrencies: ResourcesService.apiFactory.get(endpoint + '/currencies'),\n    getOrderCollectionById: ResourcesService.apiFactory.get(endpoint),\n    saveOrderCollection: ResourcesService.apiFactory.save(endpoint + '/save', 'OrderCollection'),\n    updateOrderCollection: ResourcesService.apiFactory.save(endpoint + '/update', 'OrderCollection')\n  };\n}\n\nangular\n  .module('ordercollections.api', [])\n  .factory('OrderCollectionsApiService', OrderCollectionsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.ordercollections', {\n        url: '/ordercollections',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/ordercollections/ordercollections.tpl.html',\n            controller: 'OrderCollectionsController as vm'\n        }},\n        resolve: {\n            collections: collectionsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction collectionsResolver(OrderCollectionsApiService) {\n    return OrderCollectionsApiService.listAllOrderCollections();\n}\n\n// @ngInject\nfunction OrderCollectionsController($rootScope, $state, $scope, collections, OrderCollectionsApiService, loadSpinnerService) {\n    var vm = this;\n\n    //Properties\n    vm.currentUser = $rootScope.currentUser;\n    vm.collections = collections;\n    vm.selectedCollectionId = 0;\n    vm.searchTerm = '';\n    vm.currentPage = 1;\n\n    //Methods\n    vm.searchTermChange = searchTermChange;\n    vm.getFullDate = getFullDate;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.collectionId; }, function(newValue, oldValue) {\n            vm.selectedCollectionId = parseInt($state.params.collectionId,10);\n        });\n        $rootScope.$on('OrderCollection.Inserted', function(event, response) {\n        });\n        $rootScope.$on('OrderCollection.Updated', function(event, response) {\n        });\n        $rootScope.$on('OrderCollection.Deleted', function(event, response) {\n        });\n        $rootScope.$on('OrderCollection.Changed', function(event, response) {\n            loadCollections();\n        });\n    }\n\n    function loadCollections() {\n        loadSpinnerService.start('mainSpinner');\n        OrderCollectionsApiService.listAllOrderCollections().then(function(response) {\n            vm.collections = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadCollections();\n    }\n\n    function getFullDate(date) {\n        var year = new Date(date).getFullYear();\n        var month = zeroFill(new Date(date).getMonth() + 1, 2);\n        var day = zeroFill(new Date(date).getDate(), 2);\n\n        return '' + year + '-' + month + '-' + day;\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            // eslint-disable-next-line wrap-regex\n            return new Array(width + (/\\./.test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n}\n\nangular\n    .module('base.ordercollections', ['ordercollections.api', 'ordercollections.ordercollection'])\n    .config(stateConfig)\n    .controller('OrderCollectionsController', OrderCollectionsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.ordertypes.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/ordertypes/ordertype/ordertype.tpl.html',\n            controller: 'OrderTypeController as vm'\n        }},\n        resolve: {\n            ordertype: function() { return {}; },\n            printDocumentTemplates: printDocumentResolver,\n            deliveryPlanningTemplate: deliveryPlanningTemplatesResolver,\n            locations: locationsResolver,\n            languages: languagesResolver,\n            isNewOrderType: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('base.ordertypes.ordertype', {\n        url:'/{ordertypeId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/ordertypes/ordertype/ordertype.tpl.html',\n            controller: 'OrderTypeController as vm'\n        }},\n        resolve: {\n            ordertype: ordertypeResolver,\n            printDocumentTemplates: printDocumentResolver,\n            deliveryPlanningTemplate: deliveryPlanningTemplatesResolver,\n            locations: locationsResolver,\n            languages: languagesResolver,\n            isNewOrderType: function() {return false;}\n        }\n    });\n\n}\n\n// @ngInject\nfunction ordertypeResolver($stateParams, OrderTypesApiService) {\n    return OrderTypesApiService.getOrderType($stateParams.ordertypeId);\n}\n\n// @ngInject\nfunction printDocumentResolver($stateParams, OrderTypesApiService) {\n    return OrderTypesApiService.getPrintDocumentTemplates();\n}\n// @ngInject\nfunction deliveryPlanningTemplatesResolver($stateParams, OrderTypesApiService) {\n    return OrderTypesApiService.getDeliveryPlanningTemplates();\n    \n}\n\n// @ngInject\nfunction languagesResolver($stateParams, OrderTypesApiService) {\n    return OrderTypesApiService.getLanguages();\n}\n\n// @ngInject\nfunction locationsResolver(OrderTypesApiService) {\n    return OrderTypesApiService.getLocations();\n}\n\n\n// @ngInject\nfunction OrderTypeController($state, ordertype, deliveryPlanningTemplate ,printDocumentTemplates, loadSpinnerService, OrderTypesApiService, OrdersApiService, ToasterService, confirmationDialogService, $translate, isNewOrderType, languages, locations) {\n    var vm = this;\n\n    var ordertypeCopy = {};\n    vm.enableDeliveryPlanning = false;\n\n    vm.ordertype = ordertype;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveOrderType = saveOrderType;\n    vm.deleteOrderType = deleteOrderType;\n    vm.deliveryPlanningTemplate;\n    vm.isNewOrderType = isNewOrderType;\n    vm.isEditing = vm.isNewOrderType;\n\n    vm.printDocumentTemplates = printDocumentTemplates;\n    vm.getDeliveryPlanningTemplates =  deliveryPlanningTemplate;\n\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.languages = languages;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n    vm.locations = locations;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewOrderType) {\n            vm.ordertype = {};\n        }\n\n        appendLocalizations(vm.ordertype, vm.languages);\n        appendLocations(vm.locations);\n        initDeliveryPlanningTemplate();\n        isDeliveryPlanningEnabled();\n    }\n\n    function isDeliveryPlanningEnabled() {\n        OrdersApiService.isDeliveryPlanningEnabled().then(function(response){\n            vm.enableDeliveryPlanning = response;\n        }, function(error){\n            ToasterService.showError(error.message);\n        });\n    }\n\n    function initDeliveryPlanningTemplate(){\n       vm.deliveryPlanningTemplate = vm.ordertype.deliveryPlanningTemplate;\n    }\n    function appendLocalizations(obj, languages) {\n        if (!obj.localizations) {\n            obj.localizations = [];\n        }\n        _.forEach(languages, function(language) {\n            if (_.filter(obj.localizations, { language: { id: language.id}}).length === 0) {\n                obj.localizations.push({ language: language });\n            }\n        });\n    }\n\n    function appendLocations(locations) {\n        locations.push({ id: 0, locationName: '-'});\n    }\n\n    function enableEditing() {\n        ordertypeCopy = angular.copy(vm.ordertype);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.ordertype = ordertypeCopy;\n        vm.isEditing = false;\n    }\n\n    function saveOrderType() {\n        if (vm.isNewOrderType) {\n            saveNewOrderType();\n        } else {\n            updateOrderType();\n        }\n    }\n\n    function saveNewOrderType() {\n        loadSpinnerService.start('mainSpinner');\n        OrderTypesApiService.createOrderType(vm.ordertype).then(function(response) {\n            vm.ordertype = response;\n            prepareData();\n            vm.isNewOrderType = false;\n            vm.isEditing = false;\n            $state.go('base.ordertypes.ordertype', {ordertypeId: vm.ordertype.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateOrderType() {\n        loadSpinnerService.start('mainSpinner');\n        if(vm.enableDeliveryPlanning){\n            if(vm.deliveryPlanningTemplate.id <= 0 || vm.deliveryPlanningTemplate.id === undefined){ \n                vm.deliveryPlanningTemplate.id = null;\n            }\n            vm.ordertype.deliveryPlanningTemplateId = vm.deliveryPlanningTemplate.id;\n        }\n        else {\n            vm.ordertype.deliveryPlanningTemplateId = null;\n        }\n        OrderTypesApiService.updateOrderType(vm.ordertype).then(function(response) {\n            vm.ordertype = response;\n            prepareData();\n            vm.isNewOrderType = false;\n            vm.isEditing = false;\n            $state.go('base.ordertypes.ordertype', {ordertypeId: vm.ordertype.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteOrderType() {\n        confirmationDialogService\n            .showDialog($translate.instant('ordertype.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    OrderTypesApiService.deleteOrderType(vm.ordertype.id).then(function(response) {\n                        vm.ordertype = response;\n                        prepareData();\n                        vm.isNewOrderType = false;\n                        vm.isEditing = false;\n                        $state.go('base.ordertypes');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(ordertype) {\n        ordertype.showEditForm = !ordertype.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.ordertype === undefined) {\n            return;\n        }\n\n        vm.ordertypeCopy = angular.copy(vm.ordertype);\n    }\n\n    function isAllInformationValid() {\n        return true;\n    }\n\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('ordertypes.ordertype', [])\n    .config(stateConfig)\n    .controller('OrderTypeController', OrderTypeController);\n","// @ngInject\nfunction OrderTypesApiService(ResourcesService) {\n\n  var endpoint = 'ordertypes';\n\n  return {\n    getOrderTypes: ResourcesService.apiFactory.get(endpoint),\n    getOrderType: ResourcesService.apiFactory.get(endpoint),\n    getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n    getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n    getPrintDocumentTemplates: ResourcesService.apiFactory.get(endpoint + '/printDocumentTemplates'),\n    getDeliveryPlanningTemplates: ResourcesService.apiFactory.get(endpoint + '/deliveryPlanningTemplates'),\n    createOrderType: ResourcesService.apiFactory.create(endpoint, 'OrderType'),\n    updateOrderType: ResourcesService.apiFactory.update(endpoint, 'OrderType'),\n    deleteOrderType: ResourcesService.apiFactory.delete(endpoint, 'OrderType')\n  };\n}\n\nangular\n  .module('ordertypes.api', [])\n  .factory('OrderTypesApiService', OrderTypesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.ordertypes', {\n        url: '/ordertypes?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/ordertypes/ordertypes.tpl.html',\n            controller: 'OrderTypesController as vm'\n        }},\n        resolve: {\n            ordertypes: ordertypesResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction ordertypesResolver(OrderTypesApiService, $stateParams) {\n    return OrderTypesApiService.getOrderTypes({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n// @ngInject\nfunction OrderTypesController($rootScope, $state, $scope, ordertypes, OrderTypesApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.ordertypes = ordertypes;\n    vm.selectedOrderTypeId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.orderTypeId; }, function(newValue, oldValue) {\n            vm.selectedOrderTypeId = parseInt($state.params.orderTypeId,10);\n        });\n        $rootScope.$on('OrderType.Inserted', function(event, response) {\n        });\n        $rootScope.$on('OrderType.Updated', function(event, response) {\n        });\n        $rootScope.$on('OrderType.Deleted', function(event, response) {\n        });\n        $rootScope.$on('OrderType.Changed', function(event, response) {\n            loadOrderTypes();\n        });\n    }\n\n    function loadOrderTypes() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        OrderTypesApiService.getOrderTypes(request).then(function(response) {\n            vm.ordertypes = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadOrderTypes();\n    }\n\n}\n\nangular\n    .module('base.ordertypes', ['ordertypes.api','ordertypes.ordertype'])\n    .config(stateConfig)\n    .controller('OrderTypesController', OrderTypesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.paymentterms.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/paymentterms/paymentterm/paymentterm.tpl.html',\n            controller: 'PaymentTermController as vm'\n        }},\n        resolve: {\n            paymentterm: function() { return {}; },\n            languages: languagesResolver,\n            isNewPaymentTerm: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('base.paymentterms.paymentterm', {\n        url:'/{paymenttermId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/paymentterms/paymentterm/paymentterm.tpl.html',\n            controller: 'PaymentTermController as vm'\n        }},\n        resolve: {\n            paymentterm: paymenttermResolver,\n            languages: languagesResolver,\n            isNewPaymentTerm: function() {return false;}\n        }\n    });\n\n}\n\n// @ngInject\nfunction paymenttermResolver($stateParams, PaymentTermsApiService) {\n    return PaymentTermsApiService.getPaymentTerm($stateParams.paymenttermId);\n}\n\n// @ngInject\nfunction languagesResolver($stateParams, PaymentTermsApiService) {\n    return PaymentTermsApiService.getLanguages();\n}\n\n// @ngInject\nfunction PaymentTermController($state, paymentterm, loadSpinnerService, PaymentTermsApiService, ToasterService, confirmationDialogService, $translate, isNewPaymentTerm, languages) {\n    var vm = this;\n\n    var paymenttermCopy = {};\n\n    vm.paymentterm = paymentterm;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.savePaymentTerm = savePaymentTerm;\n    vm.deletePaymentTerm = deletePaymentTerm;\n\n    vm.isNewPaymentTerm = isNewPaymentTerm;\n    vm.isEditing = vm.isNewPaymentTerm;\n\n    vm.isPaymentTermCodeValid = isPaymentTermCodeValid;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.languages = languages;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewPaymentTerm) {\n            vm.paymentterm = {};\n        }\n\n        appendLocalizations(vm.paymentterm, vm.languages);\n\n    }\n\n    function appendLocalizations(obj, languages) {\n        if (!obj.localizations) {\n            obj.localizations = [];\n        }\n        _.forEach(languages, function(language) {\n            if (_.filter(obj.localizations, { language: { id: language.id}}).length === 0) {\n                obj.localizations.push({ language: language });\n            }\n        });\n    }\n\n    function enableEditing() {\n        paymenttermCopy = angular.copy(vm.paymentterm);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.paymentterm = paymenttermCopy;\n        vm.isEditing = false;\n    }\n\n    function savePaymentTerm() {\n        if (vm.isNewPaymentTerm) {\n            saveNewPaymentTerm();\n        } else {\n            updatePaymentTerm();\n        }\n    }\n\n    function saveNewPaymentTerm() {\n        loadSpinnerService.start('mainSpinner');\n        PaymentTermsApiService.createPaymentTerm(vm.paymentterm).then(function(response) {\n            vm.paymentterm = response;\n            prepareData();\n            vm.isNewPaymentTerm = false;\n            vm.isEditing = false;\n            $state.go('base.paymentterms.paymentterm', {paymenttermId: vm.paymentterm.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updatePaymentTerm() {\n        loadSpinnerService.start('mainSpinner');\n\n        PaymentTermsApiService.updatePaymentTerm(vm.paymentterm).then(function(response) {\n            vm.paymentterm = response;\n            prepareData();\n            vm.isNewPaymentTerm = false;\n            vm.isEditing = false;\n            $state.go('base.paymentterms.paymentterm', {paymenttermId: vm.paymentterm.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deletePaymentTerm() {\n        confirmationDialogService\n            .showDialog($translate.instant('paymentterm.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    PaymentTermsApiService.deletePaymentTerm(vm.paymentterm.id).then(function(response) {\n                        vm.paymentterm = response;\n                        prepareData();\n                        vm.isNewPaymentTerm = false;\n                        vm.isEditing = false;\n                        $state.go('base.paymentterms');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(paymentterm) {\n        paymentterm.showEditForm = !paymentterm.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.paymentterm === undefined) {\n            return;\n        }\n\n        vm.paymenttermCopy = angular.copy(vm.paymentterm);\n    }\n\n    function isAllInformationValid() {\n        return isPaymentTermCodeValid();\n    }\n\n    function isPaymentTermCodeValid() {\n        if (!vm.paymentterm.code) { return false; }\n        if (vm.paymentterm.code.length > 20) { return false; }\n\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('paymentterms.paymentterm', [])\n    .config(stateConfig)\n    .controller('PaymentTermController', PaymentTermController);\n","// @ngInject\nfunction PaymentTermsApiService(ResourcesService) {\n\n  var endpoint = 'paymentterms';\n\n  return {\n    getPaymentTerms: ResourcesService.apiFactory.get(endpoint),\n    getPaymentTerm: ResourcesService.apiFactory.get(endpoint),\n    getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n    createPaymentTerm: ResourcesService.apiFactory.create(endpoint, 'PaymentTerm'),\n    updatePaymentTerm: ResourcesService.apiFactory.update(endpoint, 'PaymentTerm'),\n    deletePaymentTerm: ResourcesService.apiFactory.delete(endpoint, 'PaymentTerm')\n  };\n\n}\n\nangular\n  .module('paymentterms.api', [])\n  .factory('PaymentTermsApiService', PaymentTermsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.paymentterms', {\n        url: '/paymentterms?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/paymentterms/paymentterms.tpl.html',\n            controller: 'PaymentTermsController as vm'\n        }},\n        resolve: {\n            paymentterms: paymenttermsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction paymenttermsResolver(PaymentTermsApiService, $stateParams) {\n    return PaymentTermsApiService.getPaymentTerms({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction PaymentTermsController($rootScope, $state, $scope, paymentterms, PaymentTermsApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.paymentterms = paymentterms;\n    vm.selectedPaymentTermId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.paymentTermId; }, function(newValue, oldValue) {\n            vm.selectedPaymentTermId = parseInt($state.params.paymentTermId,10);\n        });\n        $rootScope.$on('PaymentTerm.Inserted', function(event, response) {\n        });\n        $rootScope.$on('PaymentTerm.Updated', function(event, response) {\n        });\n        $rootScope.$on('PaymentTerm.Deleted', function(event, response) {\n        });\n        $rootScope.$on('PaymentTerm.Changed', function(event, response) {\n            loadPaymentTerms();\n        });\n    }\n\n    function loadPaymentTerms() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        PaymentTermsApiService.getPaymentTerms(request).then(function(response) {\n            vm.paymentterms = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadPaymentTerms();\n    }\n\n}\n\nangular\n    .module('base.paymentterms', ['paymentterms.api','paymentterms.paymentterm'])\n    .config(stateConfig)\n    .controller('PaymentTermsController', PaymentTermsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.paymenttypes.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/paymenttypes/paymenttype/paymenttype.tpl.html',\n            controller: 'PaymentTypeController as vm'\n        }},\n        resolve: {\n            paymentType: function() { return {}; },\n            isNewPaymentType: function() {return true;},\n            accounts: accountsResolver\n        }\n    });\n\n    $stateProvider.state('base.paymenttypes.paymenttype', {\n        url:'/{paymentTypeId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/paymenttypes/paymenttype/paymenttype.tpl.html',\n            controller: 'PaymentTypeController as vm'\n        }},\n        resolve: {\n            paymentType: paymentTypeResolver,\n            isNewPaymentType: function() {return false;},\n            accounts: accountsResolver\n        }\n    });\n\n}\n\n// @ngInject\nfunction paymentTypeResolver($stateParams, PaymentTypesApiService) {\n    return PaymentTypesApiService.getPaymentType($stateParams.paymentTypeId);\n}\n\n// @ngInject\nfunction accountsResolver(PaymentTypesApiService) {\n    return PaymentTypesApiService.getAccounts();\n}\n\n\n// @ngInject\nfunction PaymentTypeController($state, paymentType, loadSpinnerService, PaymentTypesApiService, ToasterService, confirmationDialogService, $translate, isNewPaymentType, accounts) {\n    var vm = this;\n\n    //Properties\n    var paymentTypeCopy = {};\n    vm.paymentType = paymentType;\n    vm.accounts = accounts;\n    vm.isNewPaymentType = isNewPaymentType;\n    vm.isEditing = vm.isNewPaymentType;\n\n    //Methods\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.savePaymentType = savePaymentType;\n    vm.deletePaymentType = deletePaymentType;\n    vm.isPaymentTypeCodeValid = isPaymentTypeCodeValid;\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    actipaymentTypee();\n\n    function actipaymentTypee() {\n        prepareData();\n        if (vm.isNewPaymentType) {\n            vm.paymentType = {};\n        }\n\n        appendLocalizations(vm.paymentType, vm.languages);\n    }\n\n    function appendLocalizations(obj, languages) {\n        if (!obj.localizations) {\n            obj.localizations = [];\n        }\n        _.forEach(languages, function(language) {\n            if (_.filter(obj.localizations, { language: { id: language.id}}).length === 0) {\n                obj.localizations.push({ language: language });\n            }\n        });\n    }\n\n    function enableEditing() {\n        paymentTypeCopy = angular.copy(vm.paymentType);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.paymentType = paymentTypeCopy;\n        vm.isEditing = false;\n    }\n\n    function savePaymentType() {\n        if (vm.isNewPaymentType) {\n            // saveNewPaymentType();\n        } else {\n            updatePaymentType();\n        }\n    }\n\n    // function saveNewPaymentType() {\n    //     loadSpinnerService.start('mainSpinner');\n    //     PaymentTypesApiService.createPaymentType(vm.paymentType).then(function(response) {\n    //         vm.paymentType = response;\n    //         prepareData();\n    //         vm.isNewPaymentType = false;\n    //         vm.isEditing = false;\n    //         $state.go('base.paymentTypes.paymentType', {paymentTypeId: vm.paymentType.id});\n    //     }, function(error) {\n    //         console.log(error);\n    //         ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n    //     }).then(function() {\n    //         loadSpinnerService.stop('mainSpinner');\n    //     });\n    // }\n\n    function updatePaymentType() {\n        loadSpinnerService.start('mainSpinner');\n\n        PaymentTypesApiService.updatePaymentType(vm.paymentType).then(function(response) {\n            vm.paymentType = response;\n            prepareData();\n            vm.isNewPaymentType = false;\n            vm.isEditing = false;\n            $state.go('base.paymenttypes.paymenttype', {paymentTypeId: vm.paymentType.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deletePaymentType() {\n        confirmationDialogService\n            .showDialog($translate.instant('paymentType.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    PaymentTypesApiService.deletePaymentType(vm.paymentType.id).then(function(response) {\n                        vm.paymentType = response;\n                        prepareData();\n                        vm.isNewPaymentType = false;\n                        vm.isEditing = false;\n                        $state.go('base.paymentTypes');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(paymentType) {\n        paymentType.showEditForm = !paymentType.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.paymentType === undefined) {\n            return;\n        }\n\n        vm.paymentTypeCopy = angular.copy(vm.paymentType);\n    }\n\n\n    function isPaymentTypeCodeValid() {\n        if (!vm.paymentType.paymentTypeCode) { return false; }\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('paymenttypes.paymenttype', [])\n    .config(stateConfig)\n    .controller('PaymentTypeController', PaymentTypeController);\n","// @ngInject\nfunction PaymentTypesApiService(ResourcesService) {\n\n  var endpoint = 'paymenttypes';\n\n  return {\n    getAccounts: ResourcesService.apiFactory.get(endpoint + '/accounts'),\n    getPaymentTypes: ResourcesService.apiFactory.get(endpoint),\n    getPaymentType: ResourcesService.apiFactory.get(endpoint),\n    createPaymentType: ResourcesService.apiFactory.create(endpoint, 'PaymentType'),\n    updatePaymentType: ResourcesService.apiFactory.update(endpoint, 'PaymentType'),\n    deletePaymentType: ResourcesService.apiFactory.delete(endpoint, 'PaymentType')\n  };\n\n}\n\nangular\n  .module('paymenttypes.api', [])\n  .factory('PaymentTypesApiService', PaymentTypesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.paymenttypes', {\n        url: '/paymenttypes?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/paymenttypes/paymenttypes.tpl.html',\n            controller: 'PaymentTypesController as vm'\n        }},\n        resolve: {\n            paymentTypes: paymentTypesResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction paymentTypesResolver(PaymentTypesApiService, $stateParams) {\n    return PaymentTypesApiService.getPaymentTypes({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction PaymentTypesController($rootScope, $state, $scope, paymentTypes, PaymentTypesApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.paymentTypes = paymentTypes;\n    vm.selectedPaymentTypeId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.paymentTypeId; }, function(newValue, oldValue) {\n            vm.selectedPaymentTypeId = parseInt($state.params.paymentTypeId,10);\n        });\n        $rootScope.$on('PaymentType.Inserted', function(event, response) {\n        });\n        $rootScope.$on('PaymentType.Updated', function(event, response) {\n        });\n        $rootScope.$on('PaymentType.Deleted', function(event, response) {\n        });\n        $rootScope.$on('PaymentType.Changed', function(event, response) {\n            loadPaymentTypes();\n        });\n    }\n\n    function loadPaymentTypes() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        PaymentTypesApiService.getPaymentTypes(request).then(function(response) {\n            vm.paymentTypes = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadPaymentTypes();\n    }\n\n}\n\nangular\n    .module('base.paymenttypes', ['paymenttypes.api','paymenttypes.paymenttype'])\n    .config(stateConfig)\n    .controller('PaymentTypesController', PaymentTypesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.returnreasons.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/returnreasons/returnreason/returnreason.tpl.html',\n            controller: 'ReturnReasonController as vm'\n        }},\n        resolve: {\n            returnreason: function() { return {}; },\n            locations: locationsResolver,\n            isNewReturnReason: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('base.returnreasons.returnreason', {\n        url:'/{returnreasonId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/returnreasons/returnreason/returnreason.tpl.html',\n            controller: 'ReturnReasonController as vm'\n        }},\n        resolve: {\n            returnreason: returnreasonResolver,\n            locations: locationsResolver,\n            isNewReturnReason: function() {return false;}\n        }\n    });\n\n}\n\n// @ngInject\nfunction returnreasonResolver($stateParams, ReturnReasonsApiService) {\n    return ReturnReasonsApiService.getReturnReason($stateParams.returnreasonId);\n}\n\n// @ngInject\nfunction locationsResolver(ReturnReasonsApiService) {\n    return ReturnReasonsApiService.getLocations();\n}\n\n// @ngInject\nfunction ReturnReasonController($state, returnreason, loadSpinnerService, ReturnReasonsApiService, ToasterService, confirmationDialogService, $translate, isNewReturnReason, locations, $scope, FeatureSwitchService) {\n    var vm = this;\n\n    var returnreasonCopy = {};\n    var locationCopy = {};\n\n    vm.returnreason = returnreason;\n    vm.locations = [];\n    vm.location = {};\n    vm.featureStockLocationEnabled = FeatureSwitchService.hasAdvancedReturnReason();\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveReturnReason = saveReturnReason;\n    vm.deleteReturnReason = deleteReturnReason;\n\n    vm.isNewReturnReason = isNewReturnReason;\n    vm.isEditing = vm.isNewReturnReason;\n\n    vm.isReturnReasonCodeValid = isReturnReasonCodeValid;\n    vm.isAllInformationValid = isAllInformationValid;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        vm.locations = locations.data;\n        vm.locations.unshift(getNoLocationLocation());\n        vm.location = vm.locations[0];\n        _.forEach(vm.locations, function(location) { \n            if (vm.returnreason.stockLocationId && location.id === vm.returnreason.stockLocationId) {\n                vm.location = location;\n            }\n         });\n         \n\n        prepareData();\n        if (vm.isNewReturnReason) {\n            vm.returnreason = {};\n        }\n\n        $scope.$watch(function() {\n            return vm.location.id;\n        }, \n        function(newValue, oldValue) {\n            if (oldValue !== newValue) {\n                vm.returnreason.stockLocationId = newValue;\n            }\n        });\n\n        $scope.$watch(function() {\n            return vm.returnreason.adjustStock;\n        }, \n        function(newValue, oldValue) {\n            if (newValue !== oldValue && !newValue) {\n                vm.location = getNoLocationLocation();\n            }\n        });\n\n    }\n\n    function enableEditing() {\n        returnreasonCopy = angular.copy(vm.returnreason);\n        locationCopy = angular.copy(vm.location);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.returnreason = returnreasonCopy;\n        vm.location = locationCopy;\n        vm.isEditing = false;\n    }\n\n    function saveReturnReason() {\n        if (vm.isNewReturnReason) {\n            saveNewReturnReason();\n        } else {\n            updateReturnReason();\n        }\n    }\n\n    function saveNewReturnReason() {\n        loadSpinnerService.start('mainSpinner');\n        ReturnReasonsApiService.createReturnReason(vm.returnreason).then(function(response) {\n            vm.returnreason = response;\n            prepareData();\n            vm.isNewReturnReason = false;\n            vm.isEditing = false;\n            $state.go('base.returnreasons.returnreason', {returnreasonId: vm.returnreason.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateReturnReason() {\n        loadSpinnerService.start('mainSpinner');\n\n        ReturnReasonsApiService.updateReturnReason(vm.returnreason).then(function(response) {\n            vm.returnreason = response;\n            prepareData();\n            vm.isNewReturnReason = false;\n            vm.isEditing = false;\n            $state.go('base.returnreasons.returnreason', {returnreasonId: vm.returnreason.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteReturnReason() {\n        confirmationDialogService\n            .showDialog($translate.instant('returnreason.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    ReturnReasonsApiService.deleteReturnReason(vm.returnreason.id).then(function(response) {\n                        vm.returnreason = response;\n                        prepareData();\n                        vm.isNewReturnReason = false;\n                        vm.isEditing = false;\n                        $state.go('base.returnreasons');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(returnreason) {\n        returnreason.showEditForm = !returnreason.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.returnreason === undefined) {\n            return;\n        }\n\n        vm.returnreasonCopy = angular.copy(vm.returnreason);\n    }\n\n    function isAllInformationValid() {\n        return isReturnReasonCodeValid();\n    }\n\n    function isReturnReasonCodeValid() {\n        if (!vm.returnreason.code) { return false; }\n        if (vm.returnreason.code.length > 20) { return false; }\n\n        return true;\n    }\n\n    function getNoLocationLocation() {\n        return { id: null, locationName: '---' };\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('returnreasons.returnreason', [])\n    .config(stateConfig)\n    .controller('ReturnReasonController', ReturnReasonController);\n","// @ngInject\nfunction ReturnReasonsApiService(ResourcesService, DSHttpAdapter, DS, $q) {\n\n  var endpoint = 'returnreasons';\n\n  return {\n    getReturnReasons: ResourcesService.apiFactory.get(endpoint),\n    getReturnReason: ResourcesService.apiFactory.get(endpoint),\n    getLocations: GetLocations,\n    createReturnReason: ResourcesService.apiFactory.create(endpoint),\n    updateReturnReason: ResourcesService.apiFactory.update(endpoint, 'ReturnReason'),\n    deleteReturnReason: ResourcesService.apiFactory.delete(endpoint, 'ReturnReason')\n  };\n\n  function GetLocations() \n  {\n    var deferred = $q.defer();\n\n    DSHttpAdapter.GET(DS.defaults.basePath + \"/returnreasons\" + \"/locations\").then(function(response) {\n        deferred.resolve(response);\n    }, function(error) {\n        deferred.reject(error);\n    });\n\n    return deferred.promise;\n\n  }\n\n}\n\nangular\n  .module('returnreasons.api', [])\n  .factory('ReturnReasonsApiService', ReturnReasonsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.returnreasons', {\n        url: '/returnreasons?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/returnreasons/returnreasons.tpl.html',\n            controller: 'ReturnReasonsController as vm'\n        }},\n        resolve: {\n            returnreasons: returnreasonsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction returnreasonsResolver(ReturnReasonsApiService, $stateParams) {\n    return ReturnReasonsApiService.getReturnReasons({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction ReturnReasonsController($rootScope, $state, $scope, returnreasons, ReturnReasonsApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.returnreasons = returnreasons;\n    vm.selectedReturnReasonId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.returnReasonId; }, function(newValue, oldValue) {\n            vm.selectedReturnReasonId = parseInt($state.params.returnReasonId,10);\n        });\n        $rootScope.$on('ReturnReason.Inserted', function(event, response) {\n        });\n        $rootScope.$on('ReturnReason.Updated', function(event, response) {\n        });\n        $rootScope.$on('ReturnReason.Deleted', function(event, response) {\n        });\n        $rootScope.$on('ReturnReason.Changed', function(event, response) {\n            loadReturnReasons();\n        });\n    }\n\n    function loadReturnReasons() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        ReturnReasonsApiService.getReturnReasons(request).then(function(response) {\n            vm.returnreasons = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadReturnReasons();\n    }\n\n}\n\nangular\n    .module('base.returnreasons', ['returnreasons.api','returnreasons.returnreason'])\n    .config(stateConfig)\n    .controller('ReturnReasonsController', ReturnReasonsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.shippingmethods.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/shippingmethods/shippingmethod/shippingmethod.tpl.html',\n            controller: 'ShippingMethodController as vm'\n        }},\n        resolve: {\n            shippingmethod: function() { return {}; },\n            languages: languagesResolver,\n            isNewShippingMethod: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('base.shippingmethods.shippingmethod', {\n        url:'/{shippingmethodId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/shippingmethods/shippingmethod/shippingmethod.tpl.html',\n            controller: 'ShippingMethodController as vm'\n        }},\n        resolve: {\n            shippingmethod: shippingmethodResolver,\n            languages: languagesResolver,\n            isNewShippingMethod: function() {return false;}\n        }\n    });\n\n}\n\n// @ngInject\nfunction shippingmethodResolver($stateParams, ShippingMethodsApiService) {\n    return ShippingMethodsApiService.getShippingMethod($stateParams.shippingmethodId);\n}\n\n// @ngInject\nfunction languagesResolver($stateParams, ShippingMethodsApiService) {\n    return ShippingMethodsApiService.getLanguages();\n}\n\n// @ngInject\nfunction ShippingMethodController($state, shippingmethod, loadSpinnerService, ShippingMethodsApiService, ToasterService, confirmationDialogService, $translate, isNewShippingMethod, languages) {\n    var vm = this;\n\n    var shippingmethodCopy = {};\n\n    vm.shippingmethod = shippingmethod;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveShippingMethod = saveShippingMethod;\n    vm.deleteShippingMethod = deleteShippingMethod;\n\n    vm.isNewShippingMethod = isNewShippingMethod;\n    vm.isEditing = vm.isNewShippingMethod;\n\n    vm.isShippingMethodCodeValid = isShippingMethodCodeValid;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.languages = languages;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewShippingMethod) {\n            vm.shippingmethod = {};\n        }\n\n        appendLocalizations(vm.shippingmethod, vm.languages);\n\n    }\n\n    function appendLocalizations(obj, languages) {\n        if (!obj.localizations) {\n            obj.localizations = [];\n        }\n        _.forEach(languages, function(language) {\n            if (_.filter(obj.localizations, { language: { id: language.id}}).length === 0) {\n                obj.localizations.push({ language: language });\n            }\n        });\n    }\n\n    function enableEditing() {\n        shippingmethodCopy = angular.copy(vm.shippingmethod);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.shippingmethod = shippingmethodCopy;\n        vm.isEditing = false;\n    }\n\n    function saveShippingMethod() {\n        if (vm.isNewShippingMethod) {\n            saveNewShippingMethod();\n        } else {\n            updateShippingMethod();\n        }\n    }\n\n    function saveNewShippingMethod() {\n        loadSpinnerService.start('mainSpinner');\n        ShippingMethodsApiService.createShippingMethod(vm.shippingmethod).then(function(response) {\n            vm.shippingmethod = response;\n            prepareData();\n            vm.isNewShippingMethod = false;\n            vm.isEditing = false;\n            $state.go('base.shippingmethods.shippingmethod', {shippingmethodId: vm.shippingmethod.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateShippingMethod() {\n        loadSpinnerService.start('mainSpinner');\n\n        ShippingMethodsApiService.updateShippingMethod(vm.shippingmethod).then(function(response) {\n            vm.shippingmethod = response;\n            prepareData();\n            vm.isNewShippingMethod = false;\n            vm.isEditing = false;\n            $state.go('base.shippingmethods.shippingmethod', {shippingmethodId: vm.shippingmethod.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteShippingMethod() {\n        confirmationDialogService\n            .showDialog($translate.instant('shippingmethod.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    ShippingMethodsApiService.deleteShippingMethod(vm.shippingmethod.id).then(function(response) {\n                        vm.shippingmethod = response;\n                        prepareData();\n                        vm.isNewShippingMethod = false;\n                        vm.isEditing = false;\n                        $state.go('base.shippingmethods');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(shippingmethod) {\n        shippingmethod.showEditForm = !shippingmethod.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.shippingmethod === undefined) {\n            return;\n        }\n\n        vm.shippingmethodCopy = angular.copy(vm.shippingmethod);\n    }\n\n    function isAllInformationValid() {\n        return isShippingMethodCodeValid();\n    }\n\n    function isShippingMethodCodeValid() {\n        if (!vm.shippingmethod.code) { return false; }\n        if (vm.shippingmethod.code.length > 20) { return false; }\n\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('shippingmethods.shippingmethod', [])\n    .config(stateConfig)\n    .controller('ShippingMethodController', ShippingMethodController);\n","// @ngInject\nfunction ShippingMethodsApiService(ResourcesService) {\n\n  var endpoint = 'shippingmethods';\n\n  return {\n    getShippingMethods: ResourcesService.apiFactory.get(endpoint),\n    getShippingMethod: ResourcesService.apiFactory.get(endpoint),\n    getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n    createShippingMethod: ResourcesService.apiFactory.create(endpoint, 'ShippingMethod'),\n    updateShippingMethod: ResourcesService.apiFactory.update(endpoint, 'ShippingMethod'),\n    deleteShippingMethod: ResourcesService.apiFactory.delete(endpoint, 'ShippingMethod')\n  };\n\n}\n\nangular\n  .module('shippingmethods.api', [])\n  .factory('ShippingMethodsApiService', ShippingMethodsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.shippingmethods', {\n        url: '/shippingmethods?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/shippingmethods/shippingmethods.tpl.html',\n            controller: 'ShippingMethodsController as vm'\n        }},\n        resolve: {\n            shippingmethods: shippingmethodsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction shippingmethodsResolver(ShippingMethodsApiService, $stateParams) {\n    return ShippingMethodsApiService.getShippingMethods({ page: 0, searchTerm:$stateParams.searchTerm, pageSize: null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction ShippingMethodsController($rootScope, $state, $scope, shippingmethods, ShippingMethodsApiService, loadSpinnerService,searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.shippingmethods = shippingmethods;\n    vm.selectedShippingMethodId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.shippingMethodId; }, function(newValue, oldValue) {\n            vm.selectedShippingMethodId = parseInt($state.params.shippingMethodId,10);\n        });\n        $rootScope.$on('ShippingMethod.Inserted', function(event, response) {\n        });\n        $rootScope.$on('ShippingMethod.Updated', function(event, response) {\n        });\n        $rootScope.$on('ShippingMethod.Deleted', function(event, response) {\n        });\n        $rootScope.$on('ShippingMethod.Changed', function(event, response) {\n            loadShippingMethods();\n        });\n    }\n\n    function loadShippingMethods() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        ShippingMethodsApiService.getShippingMethods(request).then(function(response) {\n            vm.shippingmethods = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadShippingMethods();\n    }\n\n}\n\nangular\n    .module('base.shippingmethods', ['shippingmethods.api','shippingmethods.shippingmethod'])\n    .config(stateConfig)\n    .controller('ShippingMethodsController', ShippingMethodsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('base.vats.new', {\n        url:'/new',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/vats/vat/vat.tpl.html',\n            controller: 'VatController as vm'\n        }},\n        resolve: {\n            vat: function() { return {}; },\n            isNewVat: function() {return true;},\n            accounts: accountsResolver\n        }\n    });\n\n    $stateProvider.state('base.vats.vat', {\n        url:'/{vatId}',\n        views: {\n            'baseView@base': {\n            templateUrl: 'main/base/vats/vat/vat.tpl.html',\n            controller: 'VatController as vm'\n        }},\n        resolve: {\n            vat: vatResolver,\n            isNewVat: function() {return false;},\n            accounts: accountsResolver\n        }\n    });\n\n}\n\n// @ngInject\nfunction vatResolver($stateParams, VatsApiService) {\n    return VatsApiService.getVat($stateParams.vatId);\n}\n\n// @ngInject\nfunction accountsResolver(VatsApiService) {\n    return VatsApiService.getAccounts();\n}\n\n// @ngInject\nfunction languagesResolver($stateParams, VatsApiService) {\n    return VatsApiService.getLanguages();\n}\n\n// @ngInject\nfunction VatController($state, vat, loadSpinnerService, VatsApiService, ToasterService, confirmationDialogService, $translate, isNewVat, accounts) {\n    var vm = this;\n\n    //Properties\n    var vatCopy = {};\n    vm.vat = vat;\n    vm.accounts = accounts;\n    vm.isNewVat = isNewVat;\n    vm.isEditing = vm.isNewVat;\n\n    //Methods\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveVat = saveVat;\n    vm.deleteVat = deleteVat;\n    vm.isVatCodeValid = isVatCodeValid;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewVat) {\n            vm.vat = {};\n        }\n\n        appendLocalizations(vm.vat, vm.languages);\n    }\n\n    function appendLocalizations(obj, languages) {\n        if (!obj.localizations) {\n            obj.localizations = [];\n        }\n        _.forEach(languages, function(language) {\n            if (_.filter(obj.localizations, { language: { id: language.id}}).length === 0) {\n                obj.localizations.push({ language: language });\n            }\n        });\n    }\n\n    function enableEditing() {\n        vatCopy = angular.copy(vm.vat);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.vat = vatCopy;\n        vm.isEditing = false;\n    }\n\n    function saveVat() {\n        if (vm.isNewVat) {\n            saveNewVat();\n        } else {\n            updateVat();\n        }\n    }\n\n    function saveNewVat() {\n        loadSpinnerService.start('mainSpinner');\n        VatsApiService.createVat(vm.vat).then(function(response) {\n            vm.vat = response;\n            prepareData();\n            vm.isNewVat = false;\n            vm.isEditing = false;\n            $state.go('base.vats.vat', {vatId: vm.vat.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateVat() {\n        loadSpinnerService.start('mainSpinner');\n\n        VatsApiService.updateVat(vm.vat).then(function(response) {\n            vm.vat = response;\n            prepareData();\n            vm.isNewVat = false;\n            vm.isEditing = false;\n            $state.go('base.vats.vat', {vatId: vm.vat.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteVat() {\n        confirmationDialogService\n            .showDialog($translate.instant('vat.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    VatsApiService.deleteVat(vm.vat.id).then(function(response) {\n                        vm.vat = response;\n                        prepareData();\n                        vm.isNewVat = false;\n                        vm.isEditing = false;\n                        $state.go('base.vats');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(vat) {\n        vat.showEditForm = !vat.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.vat === undefined) {\n            return;\n        }\n\n        vm.vatCopy = angular.copy(vm.vat);\n    }\n\n    function isAllInformationValid() {\n        return isVatCodeValid();\n    }\n\n    function isVatCodeValid() {\n        if (!vm.vat.vatCode) { return false; }\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('vats.vat', [])\n    .config(stateConfig)\n    .controller('VatController', VatController);\n","\n// @ngInject\nfunction VatsApiService($q, $rootScope, DS, DSHttpAdapter, ResourcesService) {\n  var endpoint = 'vats';\n  \n  return {\n    getAccounts: getAccounts,\n    getVats: getVats,\n    getVat: ResourcesService.apiRms2Factory.get(endpoint),\n    createVat: ResourcesService.apiRms2Factory.create(endpoint, 'Vat'),\n    updateVat: ResourcesService.apiRms2Factory.update(endpoint, 'Vat'),\n    deleteVat: ResourcesService.apiRms2Factory.delete(endpoint, 'Vat')\n\n  };\n  function getAccounts() {\n    var deferred = $q.defer();\n\n    DSHttpAdapter.GET(DS.defaults.rms2Path + endpoint + '/accounts').then(function (response) {\n      deferred.resolve(response.data.accounts);\n    }, function (error) {\n      deferred.reject(handleError(error));\n    });\n    return deferred.promise;\n\n  }\n  \n  function getVats(params) {\n    var deferred = $q.defer();\n\n    DSHttpAdapter.GET(DS.defaults.rms2Path + endpoint, { params: params } ).then(function (response) {\n      deferred.resolve(response.data.vats);\n    }, function (error) {\n      deferred.reject(handleError(error));\n    });\n\n    return deferred.promise;\n  }\n}\n\n  angular\n    .module('vats.api', [])\n    .factory('VatsApiService', VatsApiService);","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('base.vats', {\n        url: '/vats?searchTerm',\n        views: {\n            'baseList': {\n            templateUrl: 'main/base/vats/vats.tpl.html',\n            controller: 'VatsController as vm'\n        }},\n        resolve: {\n            vats: vatsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction vatsResolver(VatsApiService, $stateParams) {\n    return VatsApiService.getVats({ page: 0, searchTerm:$stateParams.searchTerm, pageSize:null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction VatsController($rootScope, $state, $scope, vats, VatsApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.vats = vats;\n    vm.selectedVatId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.vatId; }, function(newValue, oldValue) {\n            vm.selectedVatId = parseInt($state.params.vatId,10);\n        });\n        $rootScope.$on('Vat.Inserted', function(event, response) {\n        });\n        $rootScope.$on('Vat.Updated', function(event, response) {\n        });\n        $rootScope.$on('Vat.Deleted', function(event, response) {\n        });\n        $rootScope.$on('Vat.Changed', function(event, response) {\n            loadVats();\n        });\n    }\n\n    function loadVats() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        VatsApiService.getVats(request).then(function(response) {\n            vm.vats = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadVats();\n    }\n\n}\n\nangular\n    .module('base.vats', ['vats.api','vats.vat'])\n    .config(stateConfig)\n    .controller('VatsController', VatsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('budget', {\n        url: '/budget',\n        parent: 'main',\n        abstract: true,\n        templateUrl: \"main/budget/budget.tpl.html\",\n        controller: \"MainBudgetController as vm\"\n    });\n}\n\n// @ngInject\nfunction MainBudgetController() {\n    var vm = this;\n}\n\nangular\n    .module('main.budget', ['budgets.api', 'budget.budgets'])\n    .config(stateConfig)\n    .controller('MainBudgetController', MainBudgetController);\n","// @ngInject\nfunction BudgetsApiService($q, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = \"budgets\";\n\n    return {\n        getSalesBudgets: getSalesBudgets,\n        getBudgetsForItemGroupAndCollection: getBudgetsForItemGroupAndCollection,\n        getBudgetForItemGroupLocationAndCollection: getBudgetForItemGroupLocationAndCollection,\n        getBudgetForCollection: getBudgetForCollection,\n        getBudgetsForCompany: getBudgetsForCompany,\n        importBudgets: ResourcesService.apiFactory.save(endpoint + '/salesbudgets/import')\n    };\n\n    function getSalesBudgets(page, filter, pageSize) {\n\n        var params = {\n            filter: '',\n            page: 1,\n            pageSize: 20\n        };\n\n        if (page && page > 1) {\n            params.page = page;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.filter = filter;\n        }\n\n        var args = { params: params };\n\n        return ResourcesService.apiFactory.get(endpoint + '/sales')(args);\n    }\n\n    function getBudgetsForItemGroupAndCollection(itemGroupId, collectionId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'budgets/itemgroup/' + itemGroupId + '/collection/' + collectionId).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getBudgetForItemGroupLocationAndCollection(itemGroupId, locationId, collectionId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'budgets/itemgroup/' + itemGroupId + '/location/' + locationId + '/collection/' + collectionId).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getBudgetForCollection(collectionId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'budgets/collection/' + collectionId).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getBudgetsForCompany(companyId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'budgets/company/' + companyId).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular.module('budgets.api', [])\n    .factory('BudgetsApiService', BudgetsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('budget.budgets', {\n        url: '',\n        templateUrl: 'main/budget/budgets/budgets.tpl.html',\n        controller: 'BudgetsController as vm'\n    });\n}\n\n// @ngInject\nfunction BudgetsController($rootScope, $state, $translate, loadSpinnerService, BudgetsApiService) {\n    var vm = this;\n\n    vm.budgets = [];\n    vm.currentPage = 1;\n    vm.itemsPerPage = 15;\n    vm.totalItems= 0;\n    vm.filter = '';\n\n    vm.loadSpinnerService = loadSpinnerService;\n    vm.BudgetsApiService = BudgetsApiService;\n    vm.onBudgetImported = onBudgetImported;\n\n    function onBudgetImported(budgets) {\n        BudgetsApiService.importBudgets({budgets:budgets}).then(function (response) {\n            loadBudgets();\n        })\n        .catch(function (error) {\n            console.error(error);\n        });\n    }\n\n    function loadBudgets() {\n        vm.loadSpinnerService.start('mainSpinner');\n        vm.BudgetsApiService.getSalesBudgets(vm.currentPage, vm.filter, vm.itemsPerPage).then(function (response) {\n            vm.budgets = response.results;\n            vm.totalItems = response.total;\n        }).finally(function() {\n            vm.loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    vm.loadBudgets = loadBudgets;\n    loadBudgets();\n}\n\n\nangular\n    .module('budget.budgets', ['budgets.api'])\n    .config(stateConfig)\n    .controller('BudgetsController', BudgetsController);\n","angular.module('components.caBudgetImport', [])\n.component('caBudgetImport', {\n    templateUrl: 'main/budget/budgets/components/budgetImport.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        disabledBy: '<',\n        onBudgetImported: '&'\n    },\n    controller: controller\n});\n\n// @ngInject\nfunction controller(GenericComponentService, $translate, loadSpinnerService, confirmationDialogService)  {\n    var vm = this;\n\n    vm.importData = [];\n\n    var fileInputDomElement = $(\"#xlf\")[ 0 ];\n\n    fileInputDomElement.addEventListener('change', handleFile, false);\n\n    function handleFile(element) {\n        var file = element.target.files[0];\n\n        var reader = new FileReader();\n        reader.onload = onLoadFunction;\n        reader.readAsArrayBuffer(file);\n    }\n\n    function onLoadFunction(e) {\n        try {\n            loadSpinnerService.start('mainSpinner');\n\n            var data = \"\";\n            var bytes = new Uint8Array(e.target.result);\n            var length = bytes.byteLength;\n            for (var i = 0; i < length; i++) {\n                data += String.fromCharCode(bytes[i]);\n            }\n            var workbook = XLSX.read(data, {type: 'binary'});\n\n            var firstSheetName = workbook.SheetNames[0];\n\n            var workSheet = workbook.Sheets[firstSheetName];\n\n            vm.importData = XLSX.utils.sheet_to_json(workSheet);\n\n            confirmationDialogService.showDialog($translate.instant('budget.numberOfRows') + \": \" + vm.importData.length).then(function (result) {\n                if (result === true) {\n                    vm.onBudgetImported({budgets:vm.importData});\n                }\n                $(\"#xlf\")[ 0 ].value = \"\";\n            });\n\n        } catch (error) {\n            console.error(error);\n        } finally {\n            loadSpinnerService.stop('mainSpinner');\n        }\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.bulkoperation', {\n        url: '/bulk',\n        views: {\n            \"wideColumnView@contacts\": {\n                templateUrl: 'main/contacts/bulkoperation/bulkoperation.tpl.html',\n                controller: 'BulkOperationController as vm'\n            }\n        }\n    });\n}\n\n//@ngInject\nfunction BulkOperationController($scope, $translate, $q, $rootScope, AuthService, UsersApiService, LocationsApiService, RolesApiService, loadSpinnerService) {\n    var vm = this;\n\n    var flexGrid = {};\n    var originalRowData = [];\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n\n    var currentUserClaims = $rootScope.currentUser.claims;\n\n    vm.dataSource = {};\n    vm.dataSourceChoice = {};\n    vm.dataSourceChoices = [\n        {translationKey: 'bulk.usersandlocations', value: 'usersAndLocations'}\n    ];\n    vm.captureGrid = captureGrid;\n    vm.saveData = saveData;\n    vm.rowCollection = rowCollection;\n    vm.selectAll = selectAll;\n    vm.selectNone = selectNone;\n    vm.searchTerm = \"\";\n    vm.searchTermChanged = searchTermChanged;\n    vm.isAllowedToSave = isAllowedToSave;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return vm.dataSourceChoice.value; },\n            function() {\n                console.log(\"Data source changed.\");\n                getData();\n            });\n    }\n\n    function captureGrid(s) {\n        flexGrid = s;\n        flexGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.None,\n            itemsSource: rowCollection\n        });\n    }\n\n    function getData() {\n        var dataSource = vm.dataSourceChoice.value;\n        if (dataSource === 'usersAndLocations') {\n            prepareUsersAndLocationData();\n        }\n    }\n\n    function saveData() {\n        var dataSource = vm.dataSourceChoice.value;\n        if (dataSource === 'usersAndLocations') {\n            saveUserAndLocationData();\n        }\n    }\n\n    function searchTermChanged() {\n        var dataSource = vm.dataSourceChoice.value;\n        if (dataSource === 'usersAndLocations') {\n            generateUsersAndLocationDataRows();\n        }\n    }\n\n    function isAllowedToSave() {\n        var dataSource = vm.dataSourceChoice.value;\n        if (dataSource === 'usersAndLocations') {\n            if (AuthService.canAccess('user', 'update')) {\n                return true;\n            } else {\n                return false;\n            }\n        }\n    }\n\n    // =======================================\n    //  Getting data and populating grid\n    // =======================================\n    // -------- Users and locations --------\n    function prepareUsersAndLocationData() {\n        loadSpinnerService.start('mainSpinner');\n        vm.dataSource = {};\n        clearGridColumns();\n\n        // Get data\n        $q.all([\n            UsersApiService.getAll({showInactiveUsers:false}),\n            LocationsApiService.getLocations()\n        ]).then(function(responses) {\n            vm.dataSource['users'] = responses[0];\n            vm.dataSource['locations'] = responses[1];\n\n            // Generate columns\n            var rowHeader = new wijmo.grid.Column();\n            rowHeader.binding = \"rowHeader\";\n            rowHeader.header = \" \";\n            rowHeader.allowSorting = false;\n            rowHeader.width = 150;\n            rowHeader.isReadOnly = true;\n            flexGrid.columns.push(rowHeader);\n\n            _.forEach(vm.dataSource['locations'], function(location) {\n                var c = new wijmo.grid.Column();\n                c.binding = location.locationNumber + location.locationName;\n                c.header = location.locationNumber + \" \" + location.locationName;\n                c.allowSorting = false;\n                c.width = 100;\n                c.isReadOnly = false;\n                flexGrid.columns.push(c);\n            });\n\n            generateUsersAndLocationDataRows();\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function generateUsersAndLocationDataRows() {\n        clearRowData();\n        _.forEach(vm.dataSource['users'], function(user) {\n            var r = { rowHeader: user.firstName + \" \" + user.lastName };\n            _.forEach(vm.dataSource['locations'], function(location) {\n                if (_.find(user.locations, function(userLocation) { return userLocation.id === location.id; })) {\n                    r[location.locationNumber + location.locationName] = true;\n                } else {\n                    r[location.locationNumber + location.locationName] = false;\n                }\n            });\n\n            if (vm.searchTerm === '' || (vm.searchTerm !== '' && stringMatchesSearchTerm(r.rowHeader, vm.searchTerm))) {\n                rowData.push(r);\n            }\n        });\n\n        originalRowData = angular.copy(rowData);\n        flexGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n\n    // =======================================\n    //  Persisting data\n    // =======================================\n    function saveUserAndLocationData() {\n        var changedRows = getChangedRows(rowData, originalRowData);\n        var requests = [];\n\n        // Construct request data structure.\n        _.forEach(changedRows, function(row) {\n            var user = _.find(vm.dataSource['users'], function(user) {\n                return user.firstName + \" \" + user.lastName === row.rowHeader;\n            });\n\n            var locations = [];\n            var locationIdentifiers = _.without(Object.keys(row), \"rowHeader\");\n\n            _.forEach(locationIdentifiers, function(identifier) {\n\n                if (row[identifier] === true) {\n                    var location = _.find(vm.dataSource['locations'], function(location) {\n                        return location.locationNumber + location.locationName === identifier;\n                    });\n                    locations.push(location);\n                }\n\n            });\n\n            user.locations = locations;\n            user.password = undefined;\n            requests.push(user);\n        });\n\n        // Send requests and collect promises.\n        var requestPromises = [];\n        loadSpinnerService.start('mainSpinner');\n        _.forEach(requests, function(request) {\n            var promise = UsersApiService.updateUserInfo(request, request.id);\n            requestPromises.push(promise);\n        });\n\n        // Wait for promises to resolve.\n        $q.all(requestPromises).then(function(responses) {\n            vm.dataSource = {};\n            vm.dataSourceChoice = {};\n            loadSpinnerService.stop('mainSpinner');\n            clearGridColumns();\n        });\n    }\n\n    function selectAll() {\n        _.forEach(flexGrid.rows, function(gridRow) {\n            var keys = Object.keys(gridRow.dataItem);\n            _.forEach(keys, function(key) {\n                if (key.indexOf('rowHeader') > -1) {\n\n                } else {\n                    gridRow.dataItem[key] = true;\n                }\n            });\n        });\n\n        flexGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function selectNone() {\n        _.forEach(flexGrid.rows, function(gridRow) {\n            var keys = Object.keys(gridRow.dataItem);\n            _.forEach(keys, function(key) {\n                if (key.indexOf('rowHeader') > -1) {\n\n                } else {\n                    gridRow.dataItem[key] = false;\n                }\n            });\n        });\n\n        flexGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function stringMatchesSearchTerm(str, searchTerm) {\n\n        var splitSearchTerms = searchTerm.split(' ');\n        var matchResults = [];\n\n        for (var i = 0; i < splitSearchTerms.length; i++) {\n            var term = splitSearchTerms[i];\n            if (_.toLower(str).indexOf(_.toLower(term)) > -1) {\n                // Matches\n            } else {\n                // Does not match\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function getChangedRows(data, originalData) {\n        var changedRows = [];\n        for (var i = 0; i < data.length; i++) {\n            var row = data[i];\n            var originalRow = originalData[i];\n            var keys = Object.keys(row);\n            _.forEach(keys, addRowIfValueChanged);\n        }\n\n        return changedRows;\n\n        function addRowIfValueChanged(key) {\n            if (row[key] !== originalRow[key]) {\n                changedRows.push(row);\n                return false;\n            }\n        }\n    }\n\n    function clearGridColumns() {\n        flexGrid.columns.clear();\n        flexGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function clearRowData() {\n        rowData.length = 0;\n        originalRowData.length = 0;\n    }\n\n}\n\n\nangular.module('contacts.bulkoperation', [])\n    .config(stateConfig)\n    .controller('BulkOperationController', BulkOperationController);\n","// @ngInject\nfunction CompaniesApiService(ResourcesService) {\n\n    var endpoint = 'companies';\n\n    return {\n        getAll: ResourcesService.apiFactory.get(endpoint),\n        listAll: ResourcesService.apiFactory.get(endpoint + '/brief'),\n        getCompany: ResourcesService.apiFactory.get(endpoint),\n        createCompany: ResourcesService.apiFactory.create(endpoint,'Company'),\n        updateCompany: updateCompany,\n        getCompanyTypes: ResourcesService.apiFactory.get(endpoint + '/companytypes'),\n        getSuppliers: ResourcesService.apiFactory.get(endpoint + '/suppliers'),\n        getSuppliersBrief: ResourcesService.apiFactory.get(endpoint + '/suppliersbrief'),\n        getDeliveryTerms: ResourcesService.apiFactory.get(endpoint + '/deliveryterms'),\n        getPaymentTerms: ResourcesService.apiFactory.get(endpoint + '/paymentterms'),\n        getShippingMethods: ResourcesService.apiFactory.get(endpoint + '/shippingmethods'),\n        getAddressTypes: ResourcesService.apiFactory.get(endpoint + '/addresstypes'),\n        getContactInfoTypes: ResourcesService.apiFactory.get(endpoint + '/contactinfotypes'),\n        getCurrencies: ResourcesService.apiFactory.get(endpoint + '/currencies'),\n        getActiveUsers: ResourcesService.apiFactory.get(endpoint + '/activeusers'),\n        getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n        getPricingModels: ResourcesService.apiFactory.get(endpoint + '/pricemodels'),\n        getPriceListBriefs: ResourcesService.apiFactory.get(endpoint + '/pricelists')\n    };\n\n    function updateCompany(id, data) {\n\n        // The internal json stringification of DSHttpAdapter seems to cause some object fields to go\n        // missing for some reason.\n        data = JSON.stringify(data);\n\n        return ResourcesService.apiFactory.update(endpoint + '/' + id, 'Company')(data);\n    }\n}\n\n\nangular.module('companies.api', [])\n    .factory('CompaniesApiService', CompaniesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.companies', {\n        url: '/companies?searchTerm',\n        views: {\n            \"contactList@contacts\": {\n                templateUrl: 'main/contacts/companies/companies.tpl.html',\n                controller: 'ContactsCompaniesController as vm'\n            }\n        },\n        resolve: {\n            companies: companiesResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction companiesResolver(CompaniesApiService,$stateParams) {\n    return CompaniesApiService.listAll({ filter: $stateParams.searchTerm});\n}\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction ContactsCompaniesController($rootScope, $state, $scope, AuthService, companies, CompaniesApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.companies = companies;\n    vm.selectedCompanyId = 0;\n    vm.searchTerm =  (searchTerm) ? searchTerm : '';\n\n    vm.searchTermChange = searchTermChange;\n    vm.goToCompany = goToCompany;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.brandId; }, function(newValue, oldValue) {\n            vm.selectedCompanyId = parseInt($state.params.companyId, 10);\n        });\n        $rootScope.$on('Company.Changed', function() {\n            reload();\n        });\n    }\n\n    function searchTermChange() {\n        reload();\n    }\n\n    function reload() {\n        loadSpinnerService.start('mainSpinner');\n        CompaniesApiService.listAll({ filter: vm.searchTerm}).then(function (data) {\n            vm.companies = data;\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', { force: true });\n        });\n    }\n\n    function goToCompany(company) {\n        if (AuthService.canAccess('company', 'read')) {\n            vm.selectedCompanyId = company.id;\n            $state.go('contacts.companies.company', {companyId: company.id});\n        }\n    }\n}\n\nangular.module('contacts.companies', ['companies.api','companies.company'])\n    .config(stateConfig)\n    .controller('ContactsCompaniesController', ContactsCompaniesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('contacts.companies.new', {\n        url: '/new/',\n        views: {\n            \"contactView@contacts\": {\n                templateUrl: 'main/contacts/companies/company/company.tpl.html',\n                controller: 'CompanyController as vm'\n            }\n        },\n        resolve: {\n            company: function() {return {};},\n            isNewCompany: function() {return true;},\n            companyTypes: companyTypesResolver,\n            currencies: currenciesResolver,\n            users: usersResolver,\n            languages: languagesResolver,\n            shippingMethods: shippingMethodsResolver,\n            deliveryTerms: deliveryTermsResolver,\n            paymentTerms: paymentTermsResolver,\n            pricingModels: pricingModelResolver,\n            priceLists: priceListResolver\n        }\n    });\n\n    $stateProvider.state('contacts.companies.company', {\n        url: '/{companyId}',\n        views: {\n            \"contactView@contacts\": {\n                templateUrl: 'main/contacts/companies/company/company.tpl.html',\n                controller: 'CompanyController as vm'\n            }\n        },\n        resolve: {\n            company: companyResolver,\n            isNewCompany: function() {return false;},\n            companyTypes: companyTypesResolver,\n            currencies: currenciesResolver,\n            users: usersResolver,\n            languages: languagesResolver,\n            shippingMethods: shippingMethodsResolver,\n            deliveryTerms: deliveryTermsResolver,\n            paymentTerms: paymentTermsResolver,\n            pricingModels: pricingModelResolver,\n            priceLists: priceListResolver\n        }\n    });\n\n}\n\n// @ngInject\nfunction companyResolver($stateParams, CompaniesApiService) {\n    return CompaniesApiService.getCompany($stateParams.companyId);\n}\n\n// @ngInject\nfunction companyTypesResolver(CompaniesApiService) {\n    return CompaniesApiService.getCompanyTypes();\n}\n\n// @ngInject\nfunction currenciesResolver(CompaniesApiService) {\n    return CompaniesApiService.getCurrencies();\n}\n\n// @ngInject\nfunction usersResolver(CompaniesApiService) {\n    return CompaniesApiService.getActiveUsers();\n}\n\n// @ngInject\nfunction languagesResolver(CompaniesApiService) {\n    return CompaniesApiService.getLanguages();\n}\n// @ngInject\nfunction shippingMethodsResolver(CompaniesApiService) {\n    return CompaniesApiService.getShippingMethods();\n}\n// @ngInject\nfunction deliveryTermsResolver(CompaniesApiService) {\n    return CompaniesApiService.getDeliveryTerms();\n}\n// @ngInject\nfunction paymentTermsResolver(CompaniesApiService) {\n    return CompaniesApiService.getPaymentTerms();\n}\n// @ngInject\nfunction pricingModelResolver(CompaniesApiService) {\n    return CompaniesApiService.getPricingModels();\n}\n\n// @ngInject\nfunction priceListResolver(CompaniesApiService) {\n    return CompaniesApiService.getPriceListBriefs();\n}\n\n// @ngInject\nfunction CompanyController($state, $filter, $translate, company, isNewCompany, companyTypes, CompaniesApiService, loadSpinnerService, $scope, AuthService, currencies, users, languages, shippingMethods, deliveryTerms, paymentTerms, ToasterService, pricingModels, priceLists) {\n    var vm = this;\n\n    //Properties\n    vm.companyTypes = companyTypes;\n    vm.pricingModels = pricingModels.priceModels;\n    vm.languages = languages;\n    vm.currencies = currencies;\n    if (isNewCompany === undefined || !isNewCompany) {\n        vm.company = company;\n        vm.company.commissionPercent = vm.company.commissionPercent ? vm.company.commissionPercent * 100 : 0;\n        vm.priceModelObject = $filter('filter')(vm.pricingModels, {'name':vm.company.priceModel})[0];\n\n        if (vm.company && vm.company.addresses) {\n            _.forEach(vm.company.addresses, function (currAddr) {\n                currAddr.addressType = _.find(vm.addressTypes, function(at) { return at.id === currAddr.addressTypeId; });\n            });\n        }\n\n        vm.isEditing = false;\n    } else {\n        vm.company = {\n            id: -1,\n            companyType: vm.companyTypes[0],\n            language: vm.languages[0],\n            purchasingCurrency: vm.currencies[0]\n        };\n        vm.priceModelObject = vm.pricingModels[0];\n        vm.isEditing = true;\n    }\n    vm.users = users;\n    vm.shippingMethods = shippingMethods;\n    vm.paymentTerms = paymentTerms;\n    vm.deliveryTerms = deliveryTerms;\n    vm.isNewCompany = isNewCompany;\n    var companyCopy = angular.copy(vm.company);\n    vm.canAccess = AuthService.canAccess;\n    vm.newAddress = {};\n    vm.newContactInfo = {};\n    vm.availableAddressTypes = [];\n    vm.availableContactInfoTypes = [];\n    vm.addressTypes = [];\n    vm.contactInfoTypes = [];\n    vm.priceLists = priceLists;\n    vm.resellerPriorities = [];\n    vm.company.selectedPriority = {};\n\n    //Methods\n    vm.addNewAddress = addNewAddress;\n    vm.removeAddress = removeAddress;\n    vm.addNewContactInfo = addNewContactInfo;\n    vm.removeContactInfo = removeContactInfo;\n    vm.save = save;\n    vm.startEdit = startEdit;\n    vm.cancelEdit = cancelEdit;\n    vm.allInformationIsValid = allInformationIsValid;\n    vm.hasCompanyName = hasCompanyName;\n    vm.hasDeliveryTerm = hasDeliveryTerm;\n    vm.hasPaymentTerm = hasPaymentTerm;\n    vm.hasShippingMethod = hasShippingMethod;\n    vm.hasResellerPriceList = hasResellerPriceList;\n\n    activate();\n\n    function activate() {\n        CompaniesApiService.getAddressTypes().then(function(types) {\n            vm.addressTypes = types;\n\n            if (vm.company && vm.company.addresses) {\n                for (var index = 0; index < vm.company.addresses.length; index++) {\n                    var currAddr = vm.company.addresses[index];\n                    currAddr.addressType = _.find(vm.addressTypes, function(at) { return at.id === currAddr.addressTypeId; });\n                }\n            }\n\n            resetTypes();\n        });\n        CompaniesApiService.getContactInfoTypes().then(function(types) {\n            vm.contactInfoTypes = types;\n            resetTypes();\n        });\n\n        if (vm.isNewCompany) {\n            vm.isEditing = true;\n        }\n\n        vm.resellerPriorities = [\n            { code: 'A', displayName: 'A - ' + $translate.instant('resellerorder.priorityA') },\n            { code: 'B', displayName: 'B - ' + $translate.instant('resellerorder.priorityB') },\n            { code: 'C', displayName: 'C - ' + $translate.instant('resellerorder.priorityC') },\n            { code: 'D', displayName: 'D - ' + $translate.instant('resellerorder.priorityD') },\n            { code: 'S', displayName: 'S - ' + $translate.instant('resellerorder.priorityS') }\n        ];\n\n        applyResellerPriority();\n    }\n\n    $scope.$watch(function() { return vm.priceModelObject.id; }, function(oldValue, newValue) {\n        vm.company.priceModel = vm.priceModelObject.name;\n    });\n\n    function hasCompanyName() {\n        return vm.company.companyName && vm.company.companyName.trim().length > 0;\n    }\n    function hasDeliveryTerm() {\n        return vm.company.deliveryTerm && vm.company.deliveryTerm.id > 0;\n    }\n    function hasPaymentTerm() {\n        return vm.company.paymentTerm && vm.company.paymentTerm.id > 0;\n    }\n    function hasShippingMethod() {\n        return vm.company.shippingMethod && vm.company.shippingMethod.id > 0;\n    }\n    function hasResellerPriceList() {\n        if (vm.company.companyType && vm.company.companyType.type === 'reseller') {\n            return vm.company.resellerPriceList && vm.company.resellerPriceList.id > 0;\n        }\n        else { return false; }\n    }\n\n    function allInformationIsValid() {\n        return hasCompanyName() && hasDeliveryTerm() && hasPaymentTerm() && hasShippingMethod();\n    }\n\n    function createCompanyObject(company) {\n        if (company.addresses) {\n            for (var index = 0; index < company.addresses.length; index++) {\n                var currAddr = company.addresses[index];\n                currAddr.addressTypeId = currAddr.addressType.id;\n            }\n        }\n\n        return {\n            addresses: company.addresses,\n            alternativeCompanyId: company.alternativeCompanyId,\n            brands: company.brands,\n            commissionPercent: company.commissionPercent / 100,\n            companyName: company.companyName,\n            companySystemType: company.companyType !== null && company.companyType !== undefined ? company.companyType.companySystemType : 0,\n            companyTypeId: company.companyType !== null && company.companyType !== undefined ? company.companyType.id : null,\n            contactInfos: company.contactInfos,\n            deliveryTermsId: company.deliveryTerm !== null && company.deliveryTerm !== undefined ? company.deliveryTerm.id : null,\n            languageId: company.language !== null && company.language !== undefined ? company.language.id : null,\n            leadTime: company.leadTime,\n            organizationNumber: company.organizationNumber,\n            paymentTermsId: company.paymentTerm !== null && company.paymentTerm !== undefined ? company.paymentTerm.id : null,\n            priceModel: company.priceModel,\n            primaryPurchaserId: company.primaryPurchaser !== null && company.primaryPurchaser !== undefined ? company.primaryPurchaser.id : null,\n            priority: company.selectedPriority.code,\n            purchasingCurrencyId: company.purchasingCurrency !== null && company.purchasingCurrency !== undefined ? company.purchasingCurrency.id : null,\n            resellerPriceListId: company.resellerPriceList !== null && company.resellerPriceList !== undefined ? company.resellerPriceList.id : null,\n            shippingMethodId: company.shippingMethod !== null && company.shippingMethod !== undefined ? company.shippingMethod.id : null\n        };\n    }\n\n    function saveNewCompany() {\n        loadSpinnerService.start('mainSpinner');\n        var companyObject = createCompanyObject(vm.company);\n        CompaniesApiService.createCompany(companyObject).then(function(response) {\n            $state.go('contacts.companies.company', { companyId: response.id });\n            vm.isEditing = false;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateCompany() {\n        loadSpinnerService.start('mainSpinner');\n\n        var companyObject = createCompanyObject(vm.company);\n\n        CompaniesApiService.updateCompany(vm.company.id, companyObject).then(function(response) {\n            vm.company = response;\n            vm.company.commissionPercent = vm.company.commissionPercent ? vm.company.commissionPercent * 100 : 0;\n\n            if (vm.company && vm.company.addresses) {\n                for (var index = 0; index < vm.company.addresses.length; index++) {\n                    var currAddr = vm.company.addresses[index];\n                    currAddr.addressType = _.find(vm.addressTypes, function(at) { return at.id === currAddr.addressTypeId; });\n                }\n            }\n\n            companyCopy = angular.copy(response);\n\n            applyResellerPriority();\n\n            vm.isEditing = false;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n     function addNewAddress() {\n        vm.company.addresses = vm.company.addresses || [];\n        vm.company.addresses.push(_.clone(vm.newAddress));\n        resetTypes();\n    }\n\n    function addNewContactInfo() {\n        vm.company.contactInfos = vm.company.contactInfos || [];\n        vm.company.contactInfos.push(_.clone(vm.newContactInfo));\n        resetTypes();\n    }\n\n    function removeAddress(address) {\n        vm.company.addresses.splice(_.findIndex(vm.company.addresses,{addressType:{typeName:address.addressType.typeName}}),1);\n        resetTypes();\n    }\n\n    function removeContactInfo(contactInfo) {\n        vm.company.contactInfos.splice(_.findIndex(vm.company.contactInfos,{contactInfoType:{typeName:contactInfo.contactInfoType.typeName}}),1);\n        resetTypes();\n    }\n\n    function getAvailableAddressTypes() {\n        return _.filter(vm.addressTypes, function(obj) {\n            if (!vm.company.addresses) {\n                return true;\n            } else {\n                return !_.find(vm.company.addresses, { addressType: { id: obj.id }});\n            }\n        });\n    }\n\n    function getAvailableContactInfoTypes() {\n        return _.filter(vm.contactInfoTypes, function(obj) { return !_.find(vm.company.contactInfos, {contactInfoType: { id: obj.id }}); });\n    }\n\n    function resetTypes() {\n        vm.newAddress = {};\n        vm.newContactInfo = {};\n        vm.availableAddressTypes = getAvailableAddressTypes();\n        vm.availableContactInfoTypes = getAvailableContactInfoTypes();\n    }\n\n    function save() {\n        if (vm.isNewCompany) {\n            saveNewCompany();\n        } else {\n            updateCompany();\n        }\n    }\n\n    function startEdit() {\n        companyCopy = angular.copy(vm.company);\n        resetTypes();\n        vm.isEditing = true;\n    }\n\n    function cancelEdit() {\n        vm.company = angular.copy(companyCopy);\n        vm.isEditing = false;\n    }\n\n    function applyResellerPriority() \n    {\n        if (vm.company.priority) {\n            vm.company.selectedPriority = _.find(vm.resellerPriorities, function(o) {\n                return o.code.toLowerCase() === vm.company.priority.toLowerCase();\n            });\n        } else {\n            vm.company.selectedPriority = vm.resellerPriorities[4];\n        }\n    }\n}\n\nangular.module('companies.company', [])\n    .config(stateConfig)\n    .controller('CompanyController', CompanyController);\n","angular.module('components.caAddressForm', [])\n    .component('caAddressForm', {\n        templateUrl: 'main/contacts/components/addressform.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            address: '=',\n            isEditing: '<',\n            onAddressUpdated: '&',\n            onAddressDeleted: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller() {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.addressUpdated = addressUpdated;\n    vm.deleteAddress = deleteAddress;\n\n    function onInit() {\n        if (vm.isEditing === undefined) {\n            vm.isEditing = false;\n        }\n    }\n    function onChanges(changes) {\n    }\n    function onDestroy() {\n    }\n\n    function addressUpdated(address) {\n        vm.address.addressLine1 = address.addressLine1;\n        vm.address.addressLine2 = address.addressLine2;\n        vm.address.addressLine3 = address.addressLine3;\n        vm.address.postalCode = address.postalCode;\n        vm.address.city = address.city;\n        vm.address.country = address.country;\n    }\n\n    function deleteAddress(address) {\n        vm.onAddressDeleted({address: address});\n    }\n}\n","angular.module('components.caContactInfoForm', [])\n    .component('caContactInfoForm', {\n        templateUrl: 'main/contacts/components/contactinfoform.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            contactInfo: '=',\n            isEditing: '<',\n            onContactInfoUpdated: '&',\n            onContactInfoDeleted: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller() {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.contactInfoUpdated = contactInfoUpdated;\n    vm.deleteContactInfo = deleteContactInfo;\n\n    function onInit() {\n        if (vm.isEditing === undefined) {\n            vm.isEditing = false;\n        }\n    }\n    function onChanges(changes) {\n    }\n    function onDestroy() {\n    }\n\n    function contactInfoUpdated(contactInfo) {\n        vm.contactInfo.value = contactInfo.value;\n        // vm.onContactInfoUpdated({contactInfo: contactInfo});\n    }\n\n    function deleteContactInfo(contactInfo) {\n        vm.onContactInfoDeleted({contactInfo: contactInfo});\n    }\n\n\n}\n","angular.module('components.caNewAddressForm', [])\n    .component('caNewAddressForm', {\n        templateUrl: 'main/contacts/components/newaddressform.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            addressTypes: '<',\n            onAddressCreated: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller() {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.createAddress = createAddress;\n\n    vm.selectedAddressType = {};\n\n    function onInit() {\n        if (vm.addressTypes.length !== 0) {\n            vm.selectedAddressType = vm.addressTypes[0];\n        }\n    }\n    function onChanges(changes) {\n    }\n    function onDestroy() {\n    }\n\n    function createAddress() {\n        var newAddress = {\n            addressType: vm.selectedAddressType,\n            addressLine1: '',\n            addressLine2: '',\n            addressLine3: '',\n            postalcode: '',\n            city: '',\n            country: ''\n        };\n\n        vm.onAddressCreated({address: newAddress});\n    }\n}\n","angular.module('components.caNewContactInfoForm', [])\n    .component('caNewContactInfoForm', {\n        templateUrl: 'main/contacts/components/newcontactinfoform.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            contactInfoTypes: '<',\n            onContactInfoCreated: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller() {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.createContactInfo = createContactInfo;\n\n    vm.selectedContactInfoType = {};\n\n    function onInit() {\n        if (vm.contactInfoTypes.length !== 0) {\n            vm.selectedContactInfoType = vm.contactInfoTypes[0];\n        }\n    }\n    function onChanges(changes) {\n    }\n    function onDestroy() {\n    }\n\n    function createContactInfo() {\n        var newContactInfo = {\n            contactInfoType: vm.selectedContactInfoType,\n            value: ''\n        };\n\n        vm.onContactInfoCreated({contactInfo: newContactInfo});\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts', {\n        url: '/contacts',\n        parent: 'main',\n        abstract: true,\n        templateUrl: \"main/contacts/contacts.tpl.html\",\n        controller: \"MainContactsController as vm\"\n    });\n}\n\n// @ngInject\nfunction MainContactsController() {\n    var vm = this;\n}\n\nangular.module('main.contacts', ['contacts.locations', 'contacts.users', 'contacts.companies', 'contacts.roles', 'contacts.bulkoperation'])\n       .config(stateConfig)\n       .controller('MainContactsController', MainContactsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.locations.location', {\n        url: '/{locationId}',\n        views: {\n            \"contactView@contacts\": {\n                templateUrl: 'main/contacts/locations/location/location.tpl.html',\n                controller: 'ContactsLocationController as vm'\n            }\n        },\n        resolve: {\n            location: locationResolver,\n            users: usersResolver,\n            addressTypes: addressTypesResolver,\n            contactInfoTypes: contactInfoTypesResolver,\n            userLocations: userLocationsResolver,\n            pricelists: pricelistsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction locationResolver($stateParams,LocationsApiService) {\n    return LocationsApiService.getLocation($stateParams.locationId);\n}\n\n// @ngInject\nfunction usersResolver(LocationsApiService) {\n    return LocationsApiService.getUsers();\n}\n\n// @ngInject\nfunction userLocationsResolver(LocationsApiService) {\n    return LocationsApiService.getUserLocations();\n}\n\n// @ngInject\nfunction addressTypesResolver(LocationsApiService) {\n    return LocationsApiService.getAddressTypes();\n}\n\n// @ngInject\nfunction contactInfoTypesResolver(LocationsApiService) {\n    return LocationsApiService.getContactInfoTypes();\n}\n\n// @ngInject\nfunction pricelistsResolver(LocationsApiService) {\n    return LocationsApiService.getPricelists();\n}\n\n// @ngInject\nfunction ContactsLocationController(location, users, addressTypes, contactInfoTypes, LocationsApiService, ToasterService, loadSpinnerService, userLocations, AuthService, currentUser, pricelists) {\n    var vm = this;\n\n    vm.allowUpdate = false;\n    vm.isEditing = false;\n    vm.selectedLocation = location;\n    vm.selectedLocationCopy = angular.copy(location);\n    vm.users = users;\n    vm.addressTypes = addressTypes;\n    vm.contactInfoTypes = contactInfoTypes;\n    vm.userLocations = userLocations;\n    vm.priceLists = pricelists;\n\n    vm.newAddress = {};\n    vm.newContactInfo = {};\n\n    vm.startEditing = startEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.save = save;\n\n    vm.addNewContactInfo = addNewContactInfo;\n    vm.updateContactInfo = updateContactInfo;\n    vm.deleteContactInfo = deleteContactInfo;\n\n    vm.addNewAddress = addNewAddress;\n    vm.updateAddress = updateAddress;\n    vm.deleteAddress = deleteAddress;\n    vm.allowSaveLocation = allowSaveLocation;\n    vm.isAllowedToSetAutoOrder = false;\n\n    activate();\n\n    function activate() {\n        vm.priceLists.unshift({id: 0, pricelistName: '-'});\n        vm.allowUpdate = AuthService.matchAnyDemand(\n            {location: { update: true }},\n            currentUser.claims\n        );\n        vm.isAllowedToSetAutoOrder = AuthService.matchAnyDemand(\n            {stocklogistics: { update: true }},\n            currentUser.claims\n        );\n    }\n\n    function allowSaveLocation() {\n\n        if (!vm.allowUpdate) {\n            return false;\n        }\n\n        if (userLocations.length === 0 || _.includes(userLocations, vm.selectedLocation.id)) {\n            return true;\n        }\n\n        return false;\n    }\n\n    function startEditing() {\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.selectedLocation = angular.copy(vm.selectedLocationCopy);\n        vm.isEditing = false;\n    }\n\n    function save() {\n        loadSpinnerService.start('mainSpinner');\n        LocationsApiService.updateLocation(vm.selectedLocation).then(function(response) {\n            vm.selectedLocation = response;\n            vm.selectedLocationCopy = angular.copy(vm.selectedLocation);\n            vm.isEditing = false;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n\n    }\n\n    function removeContactInfo(contactInfo) {\n        vm.selectedLocation.contactInfos.splice(_.findIndex(vm.selectedLocation.contactInfos,{contactInfoType:{typeName:contactInfo.contactInfoType.typeName}}),1);\n        resetTypes();\n    }\n\n    function resetTypes() {\n        vm.newAddress = {};\n        vm.newContactInfo = {};\n    }\n\n    function addNewContactInfo(contactInfo) {\n        vm.selectedLocation.contactInfos.push(contactInfo);\n    }\n\n    function addNewAddress(address) {\n        vm.selectedLocation.addresses.push(address);\n    }\n\n    function updateAddress(address) {\n        var addressToUpdate = _.find(vm.selectedLocation.addresses, function(addr) { return addr.id === address.id; });\n        if (addressToUpdate !== undefined) {\n            addressToUpdate.addressLine1 = address.addressLine1;\n            addressToUpdate.addressLine2 = address.addressLine2;\n            addressToUpdate.addressLine3 = address.addressLine3;\n            addressToUpdate.postalcode = address.postalcode;\n            addressToUpdate.city = address.city;\n            addressToUpdate.country = address.country;\n        }\n    }\n\n    function deleteAddress(address) {\n        var addressToUpdate = _.find(vm.selectedLocation.addresses, function(addr) { return addr.id === address.id; });\n        if (addressToUpdate !== undefined) {\n            vm.selectedLocation.addresses = _.without(vm.selectedLocation.addresses, addressToUpdate);\n        }\n    }\n\n    function updateContactInfo(contactInfo) {\n        var infoToUpdate = _.find(vm.selectedLocation.contactInfos, function(ci) { return ci.id === contactInfo.id; });\n        if (infoToUpdate !== undefined) {\n            infoToUpdate.value = contactInfo.value;\n            infoToUpdate.contactInfoType = contactInfo.contactInfoType;\n        }\n    }\n\n    function deleteContactInfo(contactInfo) {\n        var infoToUpdate = _.find(vm.selectedLocation.contactInfos, function(ci) { return ci.id === contactInfo.id; });\n        if (infoToUpdate !== undefined) {\n            vm.selectedLocation.contactInfos = _.without(vm.selectedLocation.contactInfos, infoToUpdate);\n        }\n    }\n\n}\n\nangular.module('contacts.locations.location', [])\n    .config(stateConfig)\n    .controller('ContactsLocationController', ContactsLocationController);\n","// @ngInject\nfunction LocationsApiService($q, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'locations';\n\n    return {\n        getLocations: getLocations,\n        listAll: ResourcesService.apiFactory.get(endpoint + '/brief'),\n        getLocation: ResourcesService.apiFactory.get(endpoint),\n        getUsers: ResourcesService.apiFactory.get(endpoint + '/users'),\n        getAddressTypes: ResourcesService.apiFactory.get(endpoint + '/addresstypes'),\n        getContactInfoTypes: ResourcesService.apiFactory.get(endpoint + '/contactinfotypes'),\n        getUserLocations: ResourcesService.apiFactory.get(endpoint + '/user/locations'),\n        updateLocation: updateLocation,\n        getPricelists: ResourcesService.apiFactory.get(endpoint + '/pricelists')\n    };\n\n    function getLocations(request) \n    {\n        console.log(\"LocationsApiService.getLocactions\");\n        var params = {\n            filter: '',\n            page: 1,\n            pageSize: 20\n        };\n\n        //page, filter, pageSize, companyId, showInactiveLocations\n        if (request.currentPage && request.currentPage > 1) {\n            params.page = request.currentPage;\n        }\n\n        if (request.pageSize && request.pageSize > 0) {\n            params.pageSize = request.pageSize;\n        }\n\n        if (!_.isEmpty(request.filter)) {\n            params.filter = request.filter;\n        }\n\n        if (request.companyId) {\n            params.companyId = request.companyId;\n        }\n\n        if (request.showInactiveLocations) {\n            params.showInactiveLocations = request.showInactiveLocations;\n        }\n\n        if(request.matchEntireSearchTerm !== undefined) {\n            params.matchEntireSearchTerm = request.matchEntireSearchTerm;\n        }\n\n        var args = { params: params };\n\n        return ResourcesService.apiFactory.get(endpoint)(args);\n\n    }\n\n    function updateLocation(location) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + endpoint + '/' + location.id, location).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n}\n\nangular.module('locations.api', [])\n       .factory('LocationsApiService', LocationsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.locations', {\n        url: '/locations?currentPage&filter&pageSize&inactive&match',\n        views: {\n            \"contactList@contacts\": {\n                templateUrl: 'main/contacts/locations/locations.tpl.html',\n                controller: 'ContactsLocationsController as vm'\n            }\n        },\n        resolve: {\n            // locations: locationsResolver,\n            searchTerms: searchTermResolver\n        }\n    });\n}\n\n// // @ngInject\n// function locationsResolver(LocationsApiService) {\n//     return LocationsApiService.listAll();\n// }\n\n// @ngInject\nfunction searchTermResolver($stateParams) {\n    return {\n        filter: $stateParams.filter,\n        currentPage: $stateParams.currentPage,\n        pageSize: $stateParams.pageSize,\n        inactive: $stateParams.inactive,\n        match: $stateParams.match\n    };\n}\n\n// @ngInject\nfunction ContactsLocationsController(AuthService, $state, $stateParams, searchTerms, loadSpinnerService, LocationsApiService) {\n    var vm = this;\n\n    vm.isLoading = false;\n\n    vm.locations = [];\n    vm.goToLocation = goToLocation;\n    vm.searchTermChange = searchTermChange;\n\n    vm.filter = ($stateParams.filter === undefined) ? '' : $stateParams.filter; // \"SearchTerm\"\n    vm.currentPage = 1;\n    vm.pageSize = 15;\n    vm.matchExactly = false;\n    vm.inactive = false;\n    vm.totalItems = [];\n\n    activate();\n\n    function activate() {\n        searchTermChange();\n\n        vm.filter = searchTerms.filter ? searchTerms.filter : '';\n        vm.currentPage = searchTerms.currentPage > 1 ? searchTerms.currentPage : 1;\n        vm.pageSize = searchTerms.pageSize >= 20 ? searchTerms.pageSize : 20;\n        vm.matchExactly = searchTerms.match ? searchTerms.match == 'true' ? true : false : false;\n        vm.inactive = searchTerms.inactive ? searchTerms.inactive == 'true' ? true : false : false;\n    }\n\n    function goToLocation(location) {\n        if (AuthService.canAccess('location', 'read')) {\n            $state.go('contacts.locations.location', {\n                locationId: location.id\n            });\n        }\n    }\n\n    function searchTermChange() {\n        if (vm.isLoading) { return; }\n\n        console.log(\"searchTermChange()\");\n\n        if ($stateParams.filter && $stateParams.filter !== vm.filter) {\n            vm.currentPage = 1;\n        }\n\n        $stateParams.filter = vm.filter;\n        $stateParams.currentPage = vm.currentPage;\n        $stateParams.pageSize = vm.pageSize;\n        $stateParams.inactive = vm.inactive;\n        $stateParams.match = vm.matchExactly;\n\n        forceReloadUrl();\n\n        if (vm.filter.length > 2) {\n            loadLocations();\n        } else if (vm.filter.length === 0) {\n            loadLocations();\n        }\n    }\n\n    function forceReloadUrl() {\n        var params = {\n            currentPage: vm.currentPage,\n            pageSize: vm.pageSize,\n            filter: $stateParams.filter,\n            inactive: vm.inactive,\n            match: vm.matchExactly\n        };\n        console.log(\"forceReloadUrl()\", params);\n        $state.go($state.current.name, \n        params,\n        {notify: false}\n        );\n    }\n\n    function loadLocations() {\n        if(vm.isLoading) return;\n\n        vm.isLoading = true;\n\n        loadSpinnerService.start('mainSpinner');\n        var request = {\n            currentPage: vm.currentPage,\n            filter: vm.filter,\n            pageSize: vm.pageSize,\n            showInactiveLocations: vm.inactive,\n            matchEntireSearchTerm: vm.matchExactly\n        };\n\n        LocationsApiService.getLocations(request).then(function(response) {\n            vm.locations = response.data.results;\n            vm.totalItems = response.data.total;\n            vm.pageSize = response.data.limit;\n            vm.currentPage = response.data.page;\n\n            $stateParams.filter = vm.filter;\n            $stateParams.currentPage = vm.currentPage;\n            $stateParams.pageSize = vm.pageSize;\n            $stateParams.inactive = vm.inactive;\n            $stateParams.match = vm.matchExactly;\n        }).finally(function afterGetAllLocations() {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n            if (vm.currentPage === 1 && vm.locations.length === 1 && vm.totalItems === 1) {\n                goToLocation(vm.locations[0]);\n            }\n            vm.isLoading = false;\n        });\n    }\n}\n\nangular.module('contacts.locations', ['locations.api','contacts.locations.location'])\n    .config(stateConfig)\n    .controller('ContactsLocationsController', ContactsLocationsController);\n","//@ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.roles.role', {\n        url: '/{roleId}',\n        views: {\n            \"contactView@contacts\": {\n                templateUrl: 'main/contacts/roles/role/role.tpl.html',\n                controller: 'RoleController as vm'\n            }\n        },\n        resolve: {\n            role: roleResolver,\n            claims: claimsResolver,\n            widgets: widgetsResolver,\n            dataSources: dataSourcesResolver\n        }\n    });\n}\n\n//@ngInject\nfunction roleResolver(RolesApiService, $stateParams) {\n    return RolesApiService.getRole($stateParams.roleId);\n}\n\n//@ngInject\nfunction claimsResolver(RolesApiService) {\n    return RolesApiService.getAllClaims();\n}\n\n//@ngInject\nfunction widgetsResolver(RolesApiService) {\n    return RolesApiService.getAllWidgets();\n}\n\n//@ngInject\nfunction dataSourcesResolver(RolesApiService) {\n    return RolesApiService.getAllDataSources();\n}\n\n//@ngInject\nfunction RoleController($translate, $scope, AuthService, role, claims, RolesApiService, loadSpinnerService, widgets, dataSources) {\n    var vm = this;\n\n    vm.role = role;\n    vm.claims = claims;\n\n    vm.objectTypes = [];\n    vm.claimsRowData = [];\n    vm.claimTypes = [];\n\n    vm.saveRole = saveRole;\n    vm.canAccess = AuthService.canAccess;\n    vm.widgets = widgets;\n    vm.dataSources = dataSources;\n\n    activate();\n\n    function activate() {\n        _.forEach(vm.claims, function(claim) {\n            if (!_.find(vm.claimTypes, function(claimType) { return claimType === claim.claimType; })) {\n                vm.claimTypes.push(claim.claimType);\n            }\n            if (!_.find(vm.objectTypes, function(objectType) { return objectType === claim.objectType; })) {\n                vm.objectTypes.push(claim.objectType);\n            }\n        });\n\n        loadClaimsGridData();\n    }\n\n    function saveRole() {\n        var claimsToSave = [];\n        _.forEach(vm.claimsRowData, function(rowData) {\n            var objectType = rowData[\"rowHeaderSystemType\"];\n            var keys = Object.keys(rowData);\n\n            keys = _.without(keys, \"rowHeaderSystemType\");\n\n            _.forEach(keys, function(claimType) {\n                if (rowData[claimType] === true) {\n                    var foundClaim = _.find(vm.claims, function(claim) {\n                        return claim.objectType === objectType && claim.claimType === claimType;\n                    });\n                    claimsToSave.push(foundClaim);\n                }\n            });\n        });\n\n        vm.role.claims = claimsToSave;\n\n        loadSpinnerService.start('mainSpinner');\n        RolesApiService.updateRole(vm.role).then(function(response) {\n\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n\n    function loadClaimsGridData() {\n        _.forEach(vm.objectTypes, function(objectType) {\n\n            var r = {\n                rowHeaderSystemType: objectType,\n                rowHeaderLabel: $translate.instant('role.' + objectType)\n            };\n            _.forEach(vm.claimTypes, function(claimType) {\n                if (_.find(vm.role.claims, function(claim) { return claim.claimType === claimType && claim.objectType === objectType; })) {\n                    r[claimType] = true;\n                } else {\n                    r[claimType] = false;\n                }\n            });\n            vm.claimsRowData.push(r);\n        });\n\n\n    }\n\n\n}\n\n\nangular.module('contacts.roles.role', [])\n    .config(stateConfig)\n    .controller('RoleController', RoleController);\n","// @ngInject\nfunction RolesApiService(ResourcesService) {\n\n    var endpoint = 'roles';\n\n    return {\n        getAllClaims: ResourcesService.apiFactory.get(endpoint + '/claims'),\n        getAllRoles: ResourcesService.apiFactory.get(endpoint),\n        getAllWidgets: ResourcesService.apiFactory.get(endpoint + '/widgets'),\n        getAllDataSources: ResourcesService.apiFactory.get(endpoint + '/datasources'),\n        getRole: ResourcesService.apiFactory.get(endpoint),\n        updateRole: ResourcesService.apiFactory.update(endpoint)\n    };\n\n}\n\nangular.module('roles.api', [])\n  .factory('RolesApiService', RolesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.roles', {\n        url: '/roles',\n        views: {\n            \"contactList@contacts\": {\n                templateUrl: 'main/contacts/roles/roles.tpl.html',\n                controller: 'RolesController as vm'\n            }\n        },\n        resolve: {\n            roles: rolesResolver\n        }\n    });\n}\n\n//@ngInject\nfunction rolesResolver(RolesApiService) {\n    return RolesApiService.getAllRoles();\n}\n\n//@ngInject\nfunction RolesController($state, roles, RolesApiService, AuthService) {\n    var vm = this;\n\n    vm.searchTerm = \"\";\n    vm.roles = roles;\n    vm.selectedRoleId = 0;\n\n    vm.selectRole = selectRole;\n\n    activate();\n\n    function activate() {\n\n    }\n\n    function selectRole(role) {\n        if (AuthService.canAccess('role', 'read')) {\n            $state.go('contacts.roles.role', {roleId: role.id});\n        }\n    }\n}\n\nangular.module('contacts.roles', ['roles.api','contacts.roles.role'])\n    .config(stateConfig)\n    .controller('RolesController', RolesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.users.new', {\n        url: '/new',\n        views: {\n            \"contactView@contacts\": {\n                templateUrl: 'main/contacts/users/user/user.tpl.html',\n                controller: 'ContactsUserController as vm'\n            }\n        },\n        resolve: {\n            user: function() { return { isActive: true};}\n        }\n    });\n    $stateProvider.state('contacts.users.user', {\n        url: '/{userId}',\n        views: {\n            \"contactView@contacts\": {\n                templateUrl: 'main/contacts/users/user/user.tpl.html',\n                controller: 'ContactsUserController as vm'\n            }\n        },\n        resolve: {\n            user: userResolver\n        }\n    });\n}\n\n// @ngInject\nfunction userResolver($stateParams,UsersApiService) {\n    return UsersApiService.getById($stateParams.userId);\n}\n\n// @ngInject\nfunction ContactsUserController($q,$scope, $rootScope, $state,user,HelperService,UsersApiService,loadSpinnerService,AuthService) {\n    var vm = this;\n    var isNewUser = !user.id;\n\n    //Properties\n    vm.isEditing = false;\n    vm.addressTypes = [];\n    vm.contactInfoTypes = [];\n    vm.availableAddressTypes = [];\n    vm.availableContactInfoTypes = [];\n    vm.selectedLocations = [];\n    vm.selectedBrands = [];\n    vm.locations = [];\n    vm.brands = [];\n    vm.newAddress = {};\n    vm.newContactInfo = {};\n    vm.selectedUser = user;\n    vm.selectedUserCopy = angular.copy(vm.selectedUser);\n    vm.validationErrors = [];\n    vm.salaryTypes = ['T', 'M'];\n    vm.canAccess = AuthService.canAccess;\n    vm.isEmailValid = false;\n    var mailformat = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/;\n\n    //Methods\n    vm.isNewUser = isNewUser;\n    vm.save = save;\n    vm.startEdit = startEdit;\n    vm.cancelEdit = cancelEdit;\n    vm.addNewAddress = addNewAddress;\n    vm.removeAddress = removeAddress;\n    vm.addNewContactInfo = addNewContactInfo;\n    vm.removeContactInfo = removeContactInfo;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.hasEmail = hasEmail;\n    vm.validateEmail = validateEmail;\n    vm.hasFirstName = hasFirstName;\n    vm.hasLastName = hasLastName;\n    vm.hasUserName = hasUserName;\n    vm.hasPassword = hasPassword;\n    vm.hasRole = hasRole;\n    vm.isEmailInfo = isEmailInfo;\n\n    validateEmail();\n    activate();\n\n    function activate() {\n        UsersApiService.getAddressTypes().then(function(types) {\n            vm.addressTypes = types;\n            resetTypes();\n        });\n        UsersApiService.getContactInfoTypes().then(function(types) {\n            vm.contactInfoTypes = types;\n            if (isNewUser) {\n\n                vm.isEditing = true;\n                vm.selectedUserCopy.contactInfos = vm.selectedUserCopy.contactInfos || [];\n                const contactInfoTypeEmail = vm.contactInfoTypes.find(x => x.systemTypeName === \"Email\") ;\n                const emailContactInfo = \n                {\n                    contactInfoType : contactInfoTypeEmail\n                }\n                vm.selectedUserCopy.contactInfos.push(emailContactInfo);\n    \n            }\n\n            resetTypes();\n        });\n        UsersApiService.getLocations().then(function(locations) {\n            vm.locations = locations;\n        });\n        UsersApiService.getValidRoles().then(function(roles) {\n            vm.roles = roles;\n        });\n        UsersApiService.getBrands().then(function(brands) {\n            vm.brands = brands;\n        });\n\n        var intervalId = window.setInterval(function(){\n            if(vm.isEditing)\n                validateEmail();\n        }, 3000)\n    }\n\n    function addNewAddress() {\n        vm.selectedUserCopy.addresses = vm.selectedUserCopy.addresses || [];\n        vm.selectedUserCopy.addresses.push(_.clone(vm.newAddress));\n        resetTypes();\n    }\n\n    function addNewContactInfo() {\n        vm.selectedUserCopy.contactInfos = vm.selectedUserCopy.contactInfos || [];\n        vm.selectedUserCopy.contactInfos.push(_.clone(vm.newContactInfo));\n        resetTypes();\n    }\n\n    function save() {\n        if (isNewUser) {\n            return saveNewUser();\n        } else {\n            return updateUser();\n        }\n    }\n\n    function startEdit() {\n        vm.selectedUserCopy = angular.copy(user);\n        vm.selectedLocations = vm.selectedUserCopy.locations || [];\n        vm.selectedBrands = vm.selectedUserCopy.brands || [];\n        resetTypes();\n        vm.isEditing = true;\n    }\n\n    function resetTypes() {\n        vm.newAddress = {};\n        vm.newContactInfo = {};\n        vm.availableAddressTypes = getAvailableAddressTypes();\n        vm.availableContactInfoTypes = getAvailableContactInfoTypes();\n    }\n\n    function cancelEdit() {\n        vm.selectedUserCopy = angular.copy(user);\n        vm.validationErrors = [];\n        vm.isEditing = false;\n    }\n\n    function getAvailableAddressTypes() {\n        return _.filter(vm.addressTypes, function(obj) {\n            if (!vm.selectedUserCopy.addresses) {\n                return true;\n            } else {\n                return !_.find(vm.selectedUserCopy.addresses, { addressType: { id: obj.id }});\n            }\n        });\n    }\n\n    function getAvailableContactInfoTypes() {\n        return _.filter(vm.contactInfoTypes, function(obj) { return !_.find(vm.selectedUserCopy.contactInfos, {contactInfoType: { id: obj.id }}); });\n    }\n\n    function removeAddress(address) {\n        vm.selectedUserCopy.addresses.splice(_.findIndex(vm.selectedUserCopy.addresses,{addressType:{typeName:address.addressType.typeName}}),1);\n        resetTypes();\n    }\n\n    function removeContactInfo(contactInfo) {\n        vm.selectedUserCopy.contactInfos.splice(_.findIndex(vm.selectedUserCopy.contactInfos,{contactInfoType:{typeName:contactInfo.contactInfoType.typeName}}),1);\n        resetTypes();\n    }\n\n    function updateUser() {\n        vm.validationErrors = [];\n\n        vm.selectedUserCopy.brands = vm.selectedBrands;\n        vm.selectedUserCopy.locations = vm.selectedLocations;\n\n        var propertiesToInspect = ['firstName','lastName','username', 'usernamePos', 'password','addresses','contactInfos','locations','role','isActive','startDate','employeeNumber', 'usesTimeStamping', 'salaryType', 'socialSecurityNumber', 'brands', 'isAllowedToViewCommonReports'];\n\n        HelperService.setUndefinedToNull(user, propertiesToInspect);\n        var changedData = HelperService.getChangedData(user, vm.selectedUserCopy, propertiesToInspect);\n        changedData.role = vm.selectedUserCopy.role\n\n        if (!_.isEmpty(changedData)) {\n            loadSpinnerService.start('mainSpinner');\n            UsersApiService.updateUserInfo(changedData,user.id).then(function(response) {\n                user = angular.copy(response);\n                vm.selectedUserCopy = angular.copy(response);\n                vm.cancelEdit();\n                $rootScope.$emit('User.Changed', response);\n            }, function(error) {\n                if (error.errors) {\n                    error.errors.forEach(function (error) {\n                        vm.validationErrors.push(error);\n                    }, this);\n                }\n                if (error.message.length > 0) {\n                    vm.validationErrors.push({ message: error.message});\n                }\n            }).finally(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function saveNewUser() {\n        vm.validationErrors = [];\n\n        vm.selectedUserCopy.brands = vm.selectedBrands;\n        vm.selectedUserCopy.locations = vm.selectedLocations;\n\n        if (!vm.selectedUserCopy.startDate) {\n            var today = new Date();\n            var dd = today.getDate();\n            var mm = today.getMonth() + 1; //January is 0!\n            var yyyy = today.getFullYear();\n\n            if (dd < 10) {\n                dd = '0' + dd;\n            }\n\n            if (mm < 10) {\n                mm = '0' + mm;\n            }\n\n            today = yyyy + '-' + mm + '-' + dd; //2015-05-13T22:00:00.000Z\n            vm.selectedUserCopy.startDate = today;\n        }\n\n        loadSpinnerService.start('mainSpinner');\n        UsersApiService.newUser(vm.selectedUserCopy).then(function(response) {\n            $state.go('contacts.users.user', {userId: response.id});\n            $rootScope.$emit('User.Inserted', response);\n            vm.cancelEdit();\n        }, function(error) {\n            if (error.errors) {\n                error.errors.forEach(function(error) {\n                    vm.validationErrors.push(error);\n                }, this);\n            }\n            if (error.message.length > 0) {\n                vm.validationErrors.push({ message: error.message});\n            }\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function isAllInformationValid() {\n        return hasFirstName() &&\n                hasLastName() &&\n                hasUserName() &&\n                hasPassword() &&\n                hasEmail() &&\n                hasRole() &&\n                vm.isEmailValid;\n    }\n    function hasFirstName() {\n        return vm.selectedUserCopy && vm.selectedUserCopy.firstName && vm.selectedUserCopy.firstName.length > 0;\n    }\n    function hasLastName() {\n        return vm.selectedUserCopy && vm.selectedUserCopy.lastName && vm.selectedUserCopy.lastName.length > 0;\n    }\n    function hasUserName() {\n        return vm.selectedUserCopy && vm.selectedUserCopy.username && vm.selectedUserCopy.username.length > 0;\n    }\n    function hasPassword() {\n        return vm.selectedUserCopy && vm.selectedUserCopy.password && vm.selectedUserCopy.password.length > 0;\n    }\n    function hasRole() {\n        return vm.selectedUserCopy && vm.selectedUserCopy.role && vm.selectedUserCopy.role.id != -1;\n    }\n    function hasEmail() {\n        return vm.selectedUserCopy && vm.selectedUserCopy.contactInfos && vm.selectedUserCopy.contactInfos.find(info => info.contactInfoType.systemTypeName === \"Email\");\n    }\n    function isEmailInfo(contactInfo) {\n        console.log(contactInfo);\n    }\n\n\n    function validateEmail()\n    {\n        if(vm.selectedUserCopy.contactInfos !== undefined) {\n            var length = vm.selectedUserCopy.contactInfos.length;\n            try{\n                for (let i = 0; i < length; i++){\n                    if(vm.selectedUserCopy.contactInfos[i].contactInfoType.systemTypeName === \"Email\"){\n                        var email = vm.selectedUserCopy.contactInfos[i];\n                        vm.isEmailValid = email.value.match(mailformat);\n                        break;\n                    }\n                    vm.isEmailValid = false;\n                }\n            }catch(err){\n                vm.isEmailValid = false;\n            }\n        }\n        else{\n            vm.isEmailValid = false;\n        }\n    }\n}\n\nangular.module('contacts.users.user', [])\n    .config(stateConfig)\n    .controller('ContactsUserController', ContactsUserController);\n","// @ngInject\nfunction UsersApiService($q,DS,DSHttpAdapter,ResourcesService) {\n\n    var endpoint = 'users';\n\n    return {\n        getSelf: getSelf,\n        getAll:  ResourcesService.apiFactory.get(endpoint),\n        listAll: ResourcesService.apiFactory.get(endpoint + '/brief'),\n        getById: getById,\n        newUser: newUser,\n        updateUserInfo: updateUserInfo,\n        getAddressTypes: ResourcesService.apiFactory.get(endpoint + '/addresstypes'),\n        getContactInfoTypes: ResourcesService.apiFactory.get(endpoint + '/contactinfotypes'),\n        getValidRoles: ResourcesService.apiFactory.get(endpoint + '/validuserroles'),\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getBrands: ResourcesService.apiFactory.get(endpoint + '/brands')\n    };\n\n    function getSelf() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'users/me').then(function(response) {\n            var user = DS.inject('user', response.data);\n            deferred.resolve(user);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n        return deferred.promise;\n    }\n\n    function getById(id) {\n        var deferred = $q.defer();\n\n        DS.find('user', id, { bypassCache: true }).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function newUser(user) {\n        var deferred = $q.defer();\n\n\n        if (user.brands) {\n            user.brands = _.map(user.brands, _.partialRight(_.pick, \"id\"));\n        }\n\n        if (user.locations) {\n            user.locations = _.map(user.locations, _.partialRight(_.pick, \"id\"));\n        }\n\n        if (user.roles) {\n            user.roles = _.map(user.roles, _.partialRight(_.pick, \"id\"));\n        }\n\n        DS.create('user', user).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateUserInfo(data, id) {\n        var deferred = $q.defer();\n\n        if (data.brands) {\n            data.brands = _.map(data.brands, _.partialRight(_.pick, \"id\"));\n        }\n\n        if (data.locations) {\n            data.locations = _.map(data.locations, _.partialRight(_.pick, \"id\"));\n        }\n\n        if (data.roles) {\n            data.roles = _.map(data.roles, _.partialRight(_.pick, \"id\"));\n        }\n\n        DS.update('user', id, data, { cacheResponse: false }).then(function(response) {\n            var user = DS.get('user', id);\n            user.firstName = response.firstName;\n            user.lastName = response.lastName;\n            user.username = response.username;\n            user.isActive = response.isActive;\n            user.addresses = response.addresses;\n            user.employeeNumber = response.employeeNumber;\n            user.usernamePos = response.usernamePos;\n            user.startDate = response.startDate;\n            user.locations = response.locations;\n            user.brands = response.brands;\n            user.contactInfos = response.contactInfos;\n            DS.inject('user',user);\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('users.api',[])\n    .factory('UsersApiService', UsersApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.users', {\n        url: '/users?searchTerm',\n        views: {\n            \"contactList@contacts\": {\n                templateUrl: 'main/contacts/users/users.tpl.html',\n                controller: 'ContactsUsersController as vm'\n            }\n        },\n        resolve: {\n            users: usersResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction usersResolver(UsersApiService,$stateParams) {\n    return UsersApiService.getAll({searchTerm:$stateParams.searchTerm,showInactiveUsers:false});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction ContactsUsersController($scope,$state, $rootScope, users,UsersApiService,loadSpinnerService,AuthService, searchTerm) {\n    var vm = this;\n\n    vm.userList = generateUserList(users);\n    vm.selectedUserId = 0;\n    vm.selectUser = selectUser;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.searchTermChanged = searchTermChanged;\n    vm.canAccess = AuthService.canAccess;\n    vm.showExtraOptions = false;\n    vm.showInactiveUsers = false;\n\n    activate();\n\n    function activate() {\n        $rootScope.$on('User.Inserted', function(event, response) {\n            loadUsers();\n        });\n        $rootScope.$on('User.Changed', function(event, response) {\n            loadUsers();\n        });\n    }\n\n    function selectUser(user) {\n        if (AuthService.canAccess('user', 'read')) {\n            $state.go('contacts.users.user', {userId: user.id});\n        }\n    }\n\n    function generateUserList(users) {\n        var list = [];\n\n        _.forEach(users,function(user) {\n            if(!isCleverAppsUser(user) || cleverAppsLoggedIn()){\n                var userCopy = _.clone(user);\n                var mobileNumber = _.find(user.contactInfos, { contactInfoType: { systemTypeName: 'Mobile'}});\n                userCopy.mobileNumber = mobileNumber ? mobileNumber.value : '';\n                list.push(userCopy);\n            }\n        });\n\n        return _.sortBy(list, ['firstName']);\n    }\n\n    function searchTermChanged() {\n        loadUsers();\n    }\n\n    function loadUsers() {\n        loadSpinnerService.start('mainSpinner');\n        UsersApiService.getAll({searchTerm: vm.searchTerm, showInactiveUsers: vm.showInactiveUsers}).then(function (response) {\n            vm.userList = generateUserList(response);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', { force: true });\n        });\n    }\n\n    function isCleverAppsUser(user){\n        return user.firstName.toLowerCase() === \"cleverapps\"\n            && (user.lastName.toLowerCase() === \"superuser\" || \n                user.lastName.toLowerCase() === \"support\" || \n                user.lastName.toLowerCase() === \"thomas sverker\" || \n                user.lastName.toLowerCase().includes(\"integration\"))\n            && (user.username.toLowerCase() === \"superuser\" || \n                user.username.toLowerCase() === \"support\" || \n                user.username.toLowerCase() === \"thsv\" || \n                user.username.toLowerCase().includes(\"integration\"))\n    }\n\n    function cleverAppsLoggedIn(){\n        return $rootScope.currentUser.firstName === \"CleverApps\"\n            && ($rootScope.currentUser.lastName === \"Superuser\" || \n                $rootScope.currentUser.lastName === \"Support\" || \n                $rootScope.currentUser.lastName === \"Thomas Sverker\")\n            && ($rootScope.currentUser.username === \"superuser\" || \n                $rootScope.currentUser.username === \"support\" || \n                $rootScope.currentUser.username === \"thsv\")\n    }\n\n    $scope.$watch(function() { return $state.params.userId; }, function(newValue, oldValue) {\n        vm.selectedUserId = parseInt($state.params.userId,10);\n    });\n}\n\nangular.module('contacts.users', ['users.api', 'contacts.users.user'])\n    .config(stateConfig)\n    .controller('ContactsUsersController', ContactsUsersController);\n","// @ngInject\nfunction CustomerInvoiceApiService($q, $window, $cookies, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'customerinvoices';\n\n    return {\n        downloadAsPdf: downloadAsPdf,\n        getAll: getAll,\n        getAllUnboundInvoiceRow: getAllUnboundInvoiceRow,\n        getById: ResourcesService.apiFactory.get(endpoint),\n        setStatus: ResourcesService.apiFactory.get(endpoint + '/status'),\n        saveCustomerInvoice: ResourcesService.apiFactory.save(endpoint + '/save')\n    };\n\n    function getAll(page, filter, pageSize) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (filter && !_.isEmpty(filter.term)) {\n            params.searchTerm = filter.term;\n        }\n        if (filter && (filter.dueDateMin || filter.dueDateMax || filter.invoiceDateMin || filter.invoiceDateMax)) {\n            params.dueDateMin = filter.dueDateMin;\n            params.dueDateMax = filter.dueDateMax;\n            params.invoiceDateMin = filter.invoiceDateMin;\n            params.invoiceDateMax = filter.invoiceDateMax;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint, {params: params}).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getAllUnboundInvoiceRow(page, filter, pageSize) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter.term)) {\n            params.searchTerm = filter.term;\n        }\n        if (filter.createdDateMin || filter.createdDateMax) {\n            params.createdDateMin = filter.createdDateMin;\n            params.createdDateMax = filter.createdDateMax;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/unboundrows', {params: params}).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n\n    function downloadAsPdf(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + request.invoiceId + '/aspdf', { params: request, responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'invoice.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s]){1,}.pdf/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n}\n\nangular\n    .module('customerinvoices.api', [])\n    .factory('CustomerInvoiceApiService', CustomerInvoiceApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('customerinvoice', {\n        url: '/customerinvoice',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/customerinvoice/customerinvoice.tpl.html',\n        controller: 'MainCustomerInvoiceController as vm'\n    });\n}\n\n// @ngInject\nfunction MainCustomerInvoiceController() {\n    var vm = this;\n}\n\nangular\n    .module('main.customerinvoice', ['customerinvoices.api','customerinvoice.customerinvoicesearch', 'customerinvoice.customerinvoicerowsearch'])\n    .config(stateConfig)\n    .controller('MainCustomerInvoiceController', MainCustomerInvoiceController);\n","var module = angular.module('main.customerinvoice');\n\nmodule.component('caCustomerInvoice',{\n    templateUrl: 'main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicecontent.cmp.tpl.html',\n    bindings: {\n        invoiceId: '<',\n        navigated: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($rootScope, $scope, $http, $cookies, DS, $state, $stateParams, $translate, CustomerInvoiceApiService,\n    confirmationDialogService, printInvoiceDialogService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    //Properties\n    vm.customerInvoice = {};\n    vm.customerInvoiceCopy = {};\n    vm.showInvoiceHead = true;\n    vm.isEditing = false;\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.toggleInvoiceHead = toggleInvoiceHead;\n    vm.canAccess = $rootScope.canAccess;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getTypeTranslation = getTypeTranslation;\n    vm.getSelectedInvoiceAsPdf = getSelectedInvoiceAsPdf;\n    vm.showInvoicePrintDialog = showInvoicePrintDialog;\n    vm.startEdit = startEdit;\n    vm.saveEdit = saveEdit;\n    vm.cancelEdit = cancelEdit;\n    vm.invoiceStatusAllowsEdit = invoiceStatusAllowsEdit;\n\n    function onInit() {\n    }\n    function onChanges() {\n        if (vm.invoiceId) {\n            CustomerInvoiceApiService.getById(vm.invoiceId)\n                .then(function(response) {\n                    vm.customerInvoice = response;\n                });\n        }\n    }\n\n    function toggleInvoiceHead() {\n        vm.showInvoiceHead = !vm.showInvoiceHead;\n    }\n\n    function getStatusTranslation(text) {\n        return $translate.instant('customerinvoice.status' + text);\n    }\n    function getTypeTranslation(text) {\n        return $translate.instant('customerinvoice.type' + text);\n    }\n\n    function startEdit() {\n        vm.isEditing = true;\n        vm.customerInvoiceCopy = angular.copy(vm.customerInvoice);\n    }\n    function saveEdit() {\n        //Change status\n        loadSpinnerService.start('mainSpinner', { message: $translate.instant('customerinvoice.savingCustomerInvoice') });\n        CustomerInvoiceApiService.saveCustomerInvoice(vm.customerInvoice).then(function(response) {\n            if (response && response.id !== 0) {\n                vm.customerInvoice = response;\n                vm.customerInvoiceCopy = {};\n                vm.isEditing = false;\n\n                ToasterService.showSuccess($translate.instant('customerinvoice.customerInvoiceSaved'), $translate.instant('common.success'));\n            }\n        }, function (error) {\n            console.log(error);\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n            vm.customerInvoice = angular.copy(vm.customerInvoiceCopy);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n            vm.isEditing = false;\n        });\n    }\n    function cancelEdit() {\n        vm.isEditing = false;\n        vm.customerInvoice = vm.customerInvoiceCopy;\n    }\n\n    function isRowInvalid(row) {\n        return (\n                isTextInvalid(row.intrastatCode) ||\n                (!row.weight || row.weight <= 0) ||\n                isTextInvalid(row.currencyCode) ||\n                isTextInvalid(row.countryOfOriginCode)\n                );\n    }\n    function isTextInvalid(text) {\n        return (text === undefined || text.trim().length === 0);\n    }\n\n    function allRowsValid() {\n        var rowsAreValid = true;\n        _.forEach(vm.customerInvoice.invoiceRows, function(row) {\n            if (isRowInvalid(row)) {\n                rowsAreValid = false;\n                return;\n            }\n        });\n        return rowsAreValid;\n    }\n\n    function invoiceStatusAllowsEdit() {\n        return vm.customerInvoice && vm.customerInvoice.invoiceStatus &&\n            vm.customerInvoice.invoiceStatus.invoiceSystemStatus.toLowerCase() === \"created\";\n    }\n\n    function getSelectedInvoiceAsPdf() {\n        if (vm.customerInvoice.invoiceStatus.invoiceSystemStatus.toLowerCase() === \"invoiced\") {\n            showInvoicePrintDialog();\n        } else if (vm.customerInvoice.invoiceStatus.invoiceSystemStatus.toLowerCase() === \"created\") {\n            //Check that no rows are invalid\n            if (!allRowsValid()) {\n                ToasterService.showError($translate.instant('customerinvoice.errorNotAllRowsValid'));\n                return;\n            }\n\n            var confirmationMessage = $translate.instant(\"customerinvoice.confirmFinalizeInvoice\").replace(/%1/g, '<br>');\n            confirmationDialogService.showDialog(confirmationMessage).then(function (result) {\n                if (result === true) {\n                    loadSpinnerService.start('mainSpinner', { message: $translate.instant('customerinvoice.creatingPrint') });\n                    CustomerInvoiceApiService.setStatus(vm.invoiceId).then(function(response) {\n                        vm.customerInvoice = response;\n                        vm.customerInvoice.invoiceStatus.invoiceSystemStatus = \"invoiced\";\n                        showInvoicePrintDialog();\n                    }).finally(function () {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n        }\n    }\n\n    function showInvoicePrintDialog() {\n        printInvoiceDialogService.showDialog($translate.instant(\"analysis.confirmDeleteReport\")).then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                CustomerInvoiceApiService.downloadAsPdf({\n                    invoiceId: vm.customerInvoice.id,\n                    invoiceNumber: vm.customerInvoice.invoiceNumber,\n                    languageCode: result.languageCode,\n                    weightSetting: result.weightSetting\n                }).finally(function() {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n}\n","var module = angular.module('main.customerinvoice');\n\nmodule.component('caCustomerInvoiceRows',{\n    templateUrl: 'main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicerows.cmp.tpl.html',\n    bindings: {\n        customerInvoice: '=',\n        isEditing: '<',\n        navigated: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($state, $translate, CustomerInvoiceApiService) {\n    var vm = this;\n\n    vm.customerInvoice = {};\n\n    //Properties\n    vm.currentRow = {};\n    vm.rowCopy = {};\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.goToArticleVariant = goToArticle;\n    vm.getEllipsis = getEllipsis;\n    vm.isRowInvalid = isRowInvalid;\n    vm.isTextInvalid = isTextInvalid;\n    vm.getTotalCustomerinvoiceQuantity = getTotalCustomerinvoiceQuantity;\n    vm.getTotalCustomerinvoiceAmount = getTotalCustomerinvoiceAmount;\n    vm.getTotalCustomerinvoiceTotalAmount = getTotalCustomerinvoiceTotalAmount;\n    vm.getTotalCustomerinvoiceVat = getTotalCustomerinvoiceVat;\n    vm.getTotalCustomerinvoiceTotalVat = getTotalCustomerinvoiceTotalVat;\n    vm.getTotalCustomerinvoiceWeight = getTotalCustomerinvoiceWeight;\n    vm.getTotalCustomerinvoiceTotalWeight = getTotalCustomerinvoiceTotalWeight;\n\n    function onInit() {\n\n    }\n    function onChanges() {\n    }\n\n    function getEllipsis(text, len) {\n        if (text && text.length > len) {\n            return text.substr(0, len) + '...';\n        } else {\n            return text;\n        }\n    }\n\n    function isTextDifferent(text, field) {\n        return vm.rowCopy[field] !== text;\n    }\n\n    function isRowInvalid(row) {\n        return vm.isEditing ||\n            (\n                isTextInvalid(row.intrastatCode) ||\n                (!row.weight || row.weight <= 0) ||\n                isTextInvalid(row.currencyCode) ||\n                isTextInvalid(row.countryOfOriginCode)\n            );\n    }\n\n    function isTextInvalid(text) {\n        return (text === undefined || text.trim().length === 0);\n    }\n\n    function getTotalCustomerinvoiceQuantity() {\n        if (!vm.customerInvoice || !vm.customerInvoice.invoiceRows) { return 0; }\n        return _.sumBy(vm.customerInvoice.invoiceRows, function(row) {\n            return row.quantity;\n        });\n    }\n    function getTotalCustomerinvoiceAmount() {\n        if (!vm.customerInvoice || !vm.customerInvoice.invoiceRows) { return 0; }\n        var sum = _.sumBy(vm.customerInvoice.invoiceRows, function(row) {\n            return row.quantity > 0 ? (row.invoiceAmountExVat / row.quantity) : 0;\n        });\n        return sum;\n    }\n    function getTotalCustomerinvoiceTotalAmount() {\n        if (!vm.customerInvoice || !vm.customerInvoice.invoiceRows) { return 0; }\n        var sum = _.sumBy(vm.customerInvoice.invoiceRows, function(row) {\n            return row.invoiceAmountExVat;\n        });\n        return sum;\n    }\n    function getTotalCustomerinvoiceVat() {\n        if (!vm.customerInvoice || !vm.customerInvoice.invoiceRows) { return 0; }\n        var sum = _.sumBy(vm.customerInvoice.invoiceRows, function(row) {\n            return row.quantity > 0 ? (row.vatAmount / row.quantity) : 0;\n        });\n        return sum;\n    }\n    function getTotalCustomerinvoiceTotalVat() {\n        if (!vm.customerInvoice || !vm.customerInvoice.invoiceRows) { return 0; }\n        var sum = _.sumBy(vm.customerInvoice.invoiceRows, function(row) {\n            return row.vatAmount;\n        });\n        return sum;\n    }\n    function getTotalCustomerinvoiceWeight() {\n        if (!vm.customerInvoice || !vm.customerInvoice.invoiceRows) { return 0; }\n        return _.sumBy(vm.customerInvoice.invoiceRows, function(row) {\n            return row.quantity > 0 ? (row.weight / row.quantity) : 0;\n        });\n    }\n    function getTotalCustomerinvoiceTotalWeight() {\n        if (!vm.customerInvoice || !vm.customerInvoice.invoiceRows) { return 0; }\n        return _.sumBy(vm.customerInvoice.invoiceRows, function(row) {\n            return row.weight;\n        });\n    }\n\n    function goToArticle(articleId) {\n        $state.go('order.ordersearch.ordercontent.orderarticle', {orderArticleId: articleId});\n    }\n}\n","var module = angular.module('main.customerinvoice');\n\nmodule.component('caCustomerInvoiceSearch',{\n    templateUrl: 'main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicesearch.cmp.tpl.html',\n    bindings: {\n        searchTerm: '<',\n        onCustomerInvoiceSelected: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($rootScope, $scope, $state, $stateParams, $translate, CustomerInvoiceApiService,\n    loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    //Properties\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.loadCustomerInvoices = loadCustomerInvoices;\n    vm.searchTermChange = searchTermChange;\n    vm.resetFilters = resetFilters;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getTypeTranslation = getTypeTranslation;\n    vm.selectInvoice = selectInvoice;\n\n    activate();\n\n    function onInit() {\n        vm.customerInvoices = [];\n        vm.searchTerm = {};\n        vm.searchTerm.term =  ($stateParams.searchTerm) ? $stateParams.searchTerm : '';\n        vm.searchTerm.dueDateMin = new Date();\n        vm.searchTerm.dueDateMax = new Date();\n        vm.searchTerm.invoiceDateMin = new Date();\n        vm.searchTerm.invoiceDateMax = new Date();\n        vm.searchTerm.invoiceTypes = [];\n\n        vm.dueDate = '';\n        vm.invoiceDate = '';\n        vm.dueMinStartDate = new Date();\n        vm.dueMinEndDate = new Date();\n        vm.dueMinStartDate = new Date();\n        vm.dueMinEndDate = new Date();\n        vm.invoiceMinEndDate = new Date(2020, 1, 1);\n        vm.invoiceMaxEndDate = new Date(2020, 1, 1);\n\n        vm.currentPage = 1;\n        vm.totalItems = 0;\n        vm.itemsPerPage = 15;\n    }\n    function onChanges() {\n    }\n\n    function activate() {\n        loadCustomerInvoices();\n        $scope.$watch(function () {\n            return vm.searchTerm.dueDateMin + vm.searchTerm.dueDateMax + vm.searchTerm.invoiceDateMin + vm.searchTerm.invoiceDateMax;\n        }, function (oldValue, newValue) {\n            if (oldValue !== newValue) {\n                searchTermChange();\n            }\n        });\n    }\n\n    function loadCustomerInvoices() {\n        loadSpinnerService.start('mainSpinner');\n        CustomerInvoiceApiService.getAll(vm.currentPage, vm.searchTerm, vm.itemsPerPage).then(function (response) {\n            vm.customerInvoices = response.data;\n            vm.totalItems = response.totalItems;\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function selectInvoice(invoiceId) {\n        vm.onCustomerInvoiceSelected({ invoiceId: invoiceId });\n    }\n\n    function getStatusTranslation(text) {\n        return $translate.instant('customerinvoice.status' + text);\n    }\n\n    function getTypeTranslation(text) {\n        return $translate.instant('customerinvoice.type' + text);\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadCustomerInvoices();\n    }\n\n    function resetFilters() {\n        vm.searchTerm.dueDateMin = new Date();\n        vm.searchTerm.dueDateMax = new Date();\n        vm.searchTerm.invoiceDateMin = new Date();\n        vm.searchTerm.invoiceDateMax = new Date();\n        vm.searchTerm.term = '';\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('customerinvoice.customerinvoicerowsearch', {\n        url: '/customerinvoicerowsearch',\n        templateUrl: 'main/customerinvoice/customerinvoicesearch/customerinvoicerowsearch.tpl.html',\n        controller: 'CustomerInvoiceRowSearchController as vm',\n        params: {\n            searchTerm: ''\n        }\n    });\n}\n\n// @ngInject\nfunction CustomerInvoiceRowSearchController($state, $stateParams, $window, $scope, $translate, CustomerInvoiceApiService, loadSpinnerService, ResourcesService, AuthService) {\n    var vm = this;\n\n    //Properties\n    vm.customerInvoices = [];\n    vm.searchTerm = {};\n    vm.searchTerm.term =  ($stateParams.searchTerm) ? $stateParams.searchTerm : '';\n    vm.searchTerm.createdDateMin = new Date();\n    vm.searchTerm.createdDateMax = new Date();\n\n    vm.createdMinEndDate = new Date(2020, 1, 1);\n    vm.createdMaxEndDate = new Date(2020, 1, 1);\n\n    vm.searchTerm.invoiceTypes = [];\n    vm.currentPage = 1;\n    vm.totalItems = 0;\n    vm.itemsPerPage = 15;\n    vm.selectedInvoiceRow = {};\n    vm.canAccess = AuthService.canAccess;\n    vm.showSearchFields = true;\n    vm.dueDate = '';\n    vm.invoiceRowDate = '';\n\n    //Public methods\n    vm.loadCustomerInvoiceRows = loadCustomerInvoiceRows;\n    vm.searchTermChange = searchTermChange;\n    vm.selectInvoiceRow = selectInvoiceRow;\n    vm.toggleSearchFields = toggleSearchFields;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getTypeTranslation = getTypeTranslation;\n    vm.resetFilters = resetFilters;\n    vm.goToCompleteInvoices = goToCompleteInvoices;\n\n    activate();\n\n    function activate() {\n        loadCustomerInvoiceRows();\n        $scope.$watch(function () {\n            return vm.searchTerm.createdDateMin + vm.searchTerm.createdDateMax;\n        }, function () {\n            searchTermChange();\n        });\n    }\n\n    function loadCustomerInvoiceRows() {\n        loadSpinnerService.start('mainSpinner');\n        CustomerInvoiceApiService.getAllUnboundInvoiceRow(vm.currentPage, vm.searchTerm, vm.itemsPerPage).then(function (response) {\n            vm.customerInvoiceRows = response;\n            vm.totalItems = response.totalItems;\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function searchTermChange() {\n        $state.go('customerinvoice.customerinvoicerowsearch');\n        vm.currentPage = 1;\n        vm.showBackButton = false;\n        loadCustomerInvoiceRows();\n    }\n\n    function selectInvoiceRow(invoiceRowId) {\n        var invoiceRow = _.find(vm.customerInvoiceRows, function (invoiceRow) {\n            return invoiceRow.id === invoiceRowId;\n        });\n\n        if (invoiceRow !== null) {\n            vm.selectedInvoiceRow = invoiceRow;\n            vm.totalItems = 1;\n            vm.showSearchFields = false;\n        }\n    }\n\n    function goToCompleteInvoices() {\n        $state.go('customerinvoice.customerinvoicesearch');\n    }\n\n    function toggleSearchFields() {\n        vm.showSearchFields = !vm.showSearchFields;\n    }\n\n    function getStatusTranslation(text) {\n        return $translate.instant('customerinvoice.status' + text);\n    }\n\n    function getTypeTranslation(text) {\n        return $translate.instant('customerinvoice.type' + text);\n    }\n\n    function resetFilters() {\n        vm.searchTerm.createdDateMin = new Date();\n        vm.searchTerm.createdDateMax = new Date();\n        vm.searchTerm.term = '';\n    }\n}\n\nangular\n    .module('customerinvoice.customerinvoicerowsearch', [])\n    .config(stateConfig)\n    .controller('CustomerInvoiceRowSearchController', CustomerInvoiceRowSearchController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('customerinvoice.customerinvoicesearch', {\n        url: '/search',\n        templateUrl: 'main/customerinvoice/customerinvoicesearch/customerinvoicesearch.tpl.html',\n        controller: 'CustomerInvoiceSearchController as vm',\n        resolve: {\n            customerInvoice: function () {\n                return {};\n            }\n        },\n        params: {\n            searchTerm: ''\n        }\n    });\n    $stateProvider.state('customerinvoice.customerinvoice', {\n        url: '/{invoiceId}',\n        templateUrl: 'main/customerinvoice/customerinvoicesearch/customerinvoicesearch.tpl.html',\n        controller: 'CustomerInvoiceSearchController as vm',\n        resolve: {\n            customerInvoice: customerInvoiceResolver\n        },\n        params: {\n            searchTerm: ''\n        }\n    });\n}\n\n// @ngInject\nfunction customerInvoiceResolver($stateParams, CustomerInvoiceApiService) {\n    return CustomerInvoiceApiService.getById($stateParams.invoiceId);\n}\n\n// @ngInject\nfunction CustomerInvoiceSearchController($rootScope, $state, $stateParams, $window, $scope, $translate, customerInvoice,\n                                            CustomerInvoiceApiService, loadSpinnerService, ResourcesService) {\n    var vm = this;\n\n    //Properties\n    vm.selectedInvoice = customerInvoice;\n    vm.canAccess = $rootScope.canAccess;\n    vm.showSearchFields = true;\n\n    //Public methods\n    vm.transitionToState = transitionToState;\n    vm.toggleSearchFields = toggleSearchFields;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getTypeTranslation = getTypeTranslation;\n    vm.goToUnboundInvoiceRows = goToUnboundInvoiceRows;\n\n    activate();\n\n    function activate() {\n        vm.showSearchFields = true;\n        if (vm.selectedInvoice && vm.selectedInvoice.id) {\n            vm.showSearchFields = false;\n        }\n    }\n\n    function transitionToState(invoiceId) {\n        $state.go('customerinvoice.customerinvoice', { invoiceId: invoiceId });\n    }\n\n    function goToUnboundInvoiceRows() {\n        $state.go('customerinvoice.customerinvoicerowsearch');\n    }\n\n    function toggleSearchFields() {\n        vm.showSearchFields = !vm.showSearchFields;\n    }\n\n    function getStatusTranslation(text) {\n        return $translate.instant('customerinvoice.status' + text);\n    }\n\n    function getTypeTranslation(text) {\n        return $translate.instant('customerinvoice.type' + text);\n    }\n}\n\nangular\n    .module('customerinvoice.customerinvoicesearch', [])\n    .config(stateConfig)\n    .controller('CustomerInvoiceSearchController', CustomerInvoiceSearchController);\n","// @ngInject\nfunction CustomerOrderApiService($q, $window, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'customerorders';\n\n    return {\n        getAll: getAll,\n        getById: ResourcesService.apiFactory.get(endpoint),\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        cancelById: ResourcesService.apiFactory.delete(endpoint),\n        getDeliveryNotePdf: getDeliveryNotePdf\n    };\n\n    function getAll(page, searchTerm, pageSize) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (searchTerm && searchTerm.orderTypes && searchTerm.orderTypes.length > 0) {\n            params.orderTypes = searchTerm.orderTypes;\n        }\n\n        if (searchTerm && searchTerm.selectedFromLocation && searchTerm.selectedFromLocation.id !== undefined) {\n            params.fromLocation = searchTerm.selectedFromLocation.id;\n        }\n\n        if (searchTerm && !_.isEmpty(searchTerm.term)) {\n            params.searchTerm = searchTerm.term;\n        }\n\n        if (searchTerm && searchTerm.onlyOrderNumber !== undefined) {\n            params.onlyOrderNumber = searchTerm.onlyOrderNumber;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint, {params: params}).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getDeliveryNotePdf(orderId) \n    {\n        var deferred = $q.defer();\n\n        var request = {};\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'customerorders/' + orderId + '/deliverynote', request, { responseType: 'arraybuffer' }).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('customerorders.api', [])\n    .factory('CustomerOrderApiService', CustomerOrderApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('customerorder', {\n        url: '/customerorder',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/customerorder/customerorder.tpl.html',\n        controller: 'MainCustomerOrderController as vm'\n    });\n}\n\n// @ngInject\nfunction MainCustomerOrderController() {\n    var vm = this;\n}\n\nangular\n    .module('main.customerorder', ['customerorders.api','customerorder.customerordersearch'])\n    .config(stateConfig)\n    .controller('MainCustomerOrderController', MainCustomerOrderController);\n","var module = angular.module('main.customerorder');\n\nmodule.component('caCustomerOrder',{\n    templateUrl: 'main/customerorder/customerordersearch/customerordercontent/customerordercontent.cmp.tpl.html',\n    bindings: {\n        orderId: '<',\n        navigated: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($rootScope, $translate, CustomerOrderApiService, confirmationDialogService, loadSpinnerService, ToasterService, $window) {\n    var vm = this;\n\n    //Properties\n    vm.customerOrder = {};\n    vm.tabSelection = {\n        orderRows: true,\n        orderDeliveries: false\n    };\n    vm.showOrderHead = true;\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.changeToOrderRowsTab = changeToOrderRowsTab;\n    vm.changeToOrderPaymentsTab = changeToOrderPaymentsTab;\n    vm.changeToOrderDeliveriesTab = changeToOrderDeliveriesTab;\n    vm.changeToOrderRefundsTab = changeToOrderRefundsTab;\n    vm.toggleOrderHead = toggleOrderHead;\n    vm.cancelOrder = cancelOrder;\n    vm.canAccess = $rootScope.canAccess;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getEllipsis = getEllipsis;\n    vm.getOrderTypeTranslation = getOrderTypeTranslation;\n    vm.canCancelOrder = canCancelOrder;\n    vm.isCompanyOrder = isCompanyOrder;\n    vm.printDeliveryNote = printDeliveryNote;\n    vm.showDeliveryMethod = showDeliveryMethod;\n\n    function onInit() {\n    }\n    function onChanges(change) {\n        if (change.orderId && change.orderId.currentValue) {\n            CustomerOrderApiService.getById(change.orderId.currentValue)\n                .then(function(response) {\n                    vm.customerOrder = response;\n                    setUpGridData();\n                    loadGridData();\n                });\n        }\n    }\n\n    function showDeliveryMethod(){\n       return vm.customerOrder.deliveryMethod !== undefined\n    }\n\n    function setUpGridData() {\n    }\n\n    function loadGridData() {\n    }\n\n    function changeToOrderRowsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.orderRows = true;\n    }\n\n    function changeToOrderPaymentsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.orderPayments = true;\n    }\n\n    function changeToOrderDeliveriesTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.orderDeliveries = true;\n    }\n\n    function isCompanyOrder() {\n        return vm.customerOrder.customerKind === \"Company\";\n    }\n\n    function changeToOrderRefundsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.orderRefunds = true;\n    }\n\n    function setAllTabSelectionsToFalse() {\n        var keys = Object.keys(vm.tabSelection);\n        _.forEach(keys, function(key) {\n            vm.tabSelection[key] = false;\n        });\n    }\n\n    function toggleOrderHead() {\n        vm.showOrderHead = !vm.showOrderHead;\n    }\n\n    function canCancelOrder() {\n        var hasOrder = vm.customerOrder !== undefined;\n        var hasOrderStatusCancelled = vm.customerOrder.status === 'cancelled';\n\n        return hasOrder && !hasOrderStatusCancelled;\n    }\n\n    function printDeliveryNote() {\n        loadSpinnerService.start('mainSpinner');\n        CustomerOrderApiService.getDeliveryNotePdf(vm.orderId).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'order.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n            ToasterService.showSuccess();\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError();\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36012-36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s-_]){1,}.(pdf|csv|xls|xlsx)/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n\n    function cancelOrder() {\n        confirmationDialogService\n            .showDialog($translate.instant('customerorder.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    CustomerOrderApiService.cancelById(vm.customerOrder.id).then(function(response) {\n                        vm.customerOrder.status = 'cancelled';\n                        _.forEach(vm.customerOrder.deliveries, function (o) {\n                            o.status = 'cancelled';\n                        });\n                        vm.isEditing = false;\n                        ToasterService.showSuccess($translate.instant('customerorder.orderCancelled'), $translate.instant('customerorder.customerorders'));\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function getStatusTranslation(text) {\n        if (text) {\n            var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n            return $translate.instant('customerorder.status' + textCapital);\n        }\n    }\n\n    function getOrderTypeTranslation(text) {\n        if (text) {\n            var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n            return $translate.instant('customerorder.type' + textCapital);\n        }\n    }\n\n    function getEllipsis(text, len) {\n        if (text && text.length > len) {\n            return text.substr(0, len) + '...';\n        } else {\n            return text;\n        }\n    }\n}\n","var module = angular.module('main.customerorder');\n\nmodule.component('caCustomerOrderDeliveries',{\n    templateUrl: 'main/customerorder/customerordersearch/customerordercontent/customerorderdeliveries.cmp.tpl.html',\n    bindings: {\n        customerOrder: '<',\n        navigated: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($state, $translate, CustomerOrderApiService) {\n    var vm = this;\n\n    //Properties\n    vm.customerOrder = {};\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.getDeliveryStatusTranslation = getDeliveryStatusTranslation;\n    vm.getDeliveryTotal = getDeliveryTotal;\n    vm.getOrderedQuantitySum = getOrderedQuantitySum;\n    vm.getDeliveredQuantitySum = getDeliveredQuantitySum;\n\n    function onInit() {\n\n    }\n    function onChanges() {\n        _.forEach(vm.customerOrder.deliveries, function(delivery) {\n            delivery.showRows = true;\n            _.forEach(delivery.deliveryRows, function(deliveryRow) {\n                _.forEach(vm.customerOrder.orderRows, function(orderRow) {\n                    if (orderRow.id === deliveryRow.orderRow.id) {\n                        deliveryRow.orderRow = angular.copy(orderRow);\n                    }\n                });\n            });\n        });\n    }\n\n    function setUpGridData() {\n    }\n\n    function loadGridData() {\n    }\n\n    function getDeliveryStatusTranslation(text) {\n        if (text) {\n            var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n            return $translate.instant('customerorder.status' + textCapital);\n        }\n    }\n\n    function getDeliveryTotal(delivery) {\n        var sum = 0;\n        _.forEach(delivery.deliveryRows, function(deliveryRow) {\n            sum += (deliveryRow.orderRow.salesPrice * deliveryRow.deliveredQuantity) - (deliveryRow.orderRow.discount * deliveryRow.deliveredQuantity);\n        });\n        return sum;\n    }\n\n    function getOrderedQuantitySum(delivery) {\n        var sum = 0;\n        _.forEach(delivery.deliveryRows, function(deliveryRow) {\n            sum += deliveryRow.orderedQuantity;\n        });\n        return sum;\n    }\n\n    function getDeliveredQuantitySum(delivery) {\n        var sum = 0;\n        _.forEach(delivery.deliveryRows, function(deliveryRow) {\n            sum += deliveryRow.deliveredQuantity;\n        });\n        return sum;\n    }\n}\n","var module = angular.module('main.customerorder');\n\nmodule.component('caCustomerOrderPayments',{\n    templateUrl: 'main/customerorder/customerordersearch/customerordercontent/customerorderpayments.cmp.tpl.html',\n    bindings: {\n        customerOrder: '<',\n        navigated: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($state, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.customerOrder = {};\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n\n    function onInit() {\n    }\n    function onChanges() {\n    }\n\n}\n","var module = angular.module('main.customerorder');\n\nmodule.component('caCustomerOrderRefunds',{\n    templateUrl: 'main/customerorder/customerordersearch/customerordercontent/customerorderrefunds.cmp.tpl.html',\n    bindings: {\n        customerOrder: '<',\n        navigated: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($state, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.customerOrder = {};\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.getTotalRefundQuantity = getTotalRefundQuantity;\n    vm.getTotalRefundAmount = getTotalRefundAmount;\n    vm.getTotalQuantityOfAllRefunds = getTotalQuantityOfAllRefunds;\n    vm.getTotalAmountOfAllRefunds = getTotalAmountOfAllRefunds;\n\n    function onInit() {\n    }\n    function onChanges() {\n    }\n\n    function getTotalRefundQuantity(refund) {\n        var sum = _.sumBy(refund.rows, function(o) { return o.quantity; });\n        return sum;\n    }\n    function getTotalRefundAmount(refund) {\n        var sum = _.sumBy(refund.rows, function(o) { return o.amount; });\n        return sum;\n    }\n\n    function getTotalQuantityOfAllRefunds() {\n        var sum = _.sumBy(vm.customerOrder.refunds, function(o) {\n            return _.sumBy(o.rows, function(o2) {\n                return o2.quantity;\n            });\n        });\n        return sum;\n    }\n\n    function getTotalAmountOfAllRefunds() {\n        var sum = _.sumBy(vm.customerOrder.refunds, function(o) {\n            return _.sumBy(o.rows, function(o2) {\n                return o2.amount;\n            });\n        });\n        return sum;\n    }\n}\n","var module = angular.module('main.customerorder');\n\nmodule.component('caCustomerOrderRows',{\n    templateUrl: 'main/customerorder/customerordersearch/customerordercontent/customerorderrows.cmp.tpl.html',\n    bindings: {\n        customerOrder: '<',\n        navigated: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($state, $translate, CustomerOrderApiService) {\n    var vm = this;\n\n    //Properties\n    vm.hasResellerPrice = false;\n    vm.currentCustomerOrderId = 0;\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.getOrderRowTotalSum = getOrderRowTotalSum;\n    vm.getOrderRowQuantitySum = getOrderRowQuantitySum;\n    vm.showResellerPrice = vm.showResellerPrice;\n\n    function onInit() {\n\n    }\n    function onChanges() {\n    }\n\n    function setUpGridData() {\n    }\n\n    function loadGridData() {\n    }\n\n    function getOrderRowTotalSum(orderRows) {\n        var sum = 0;\n        _.forEach(orderRows, function (row) {\n            sum += (row.salesPrice * row.quantity);\n        });\n        return sum;\n    }\n\n    function getOrderRowQuantitySum(orderRows) {\n        var sum = 0;\n        _.forEach(orderRows, function (row) {\n            sum += row.quantity;\n        });\n        return sum;\n    }\n\n    function showResellerPrice() {\n        if (!vm.customerOrder) { return false; }\n        if (vm.customerOrder.id === vm.currentCustomerOrderId && vm.hasResellerPrice) {\n            return true;\n        }\n\n        vm.currentCustomerOrderId = vm.customerOrder.id;\n        var hasResellerPrice = _.find(vm.customerOrder.orderRows, function(row) {\n            return row.resellerSalesPrice !== 0 || row.resellerVatAmount !== 0;\n        });\n        vm.hasResellerPrice = hasResellerPrice !== undefined;\n\n        return vm.hasResellerPrice;\n    }\n}\n","var module = angular.module('main.customerorder');\n\nmodule.component('caCustomerOrderSearch',{\n    templateUrl: 'main/customerorder/customerordersearch/customerordercontent/customerordersearch.cmp.tpl.html',\n    bindings: {\n        searchTerm: '<',\n        onCustomerOrderSelected: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($rootScope, $scope, $state, $stateParams, $translate, CustomerOrderApiService,\n    confirmationDialogService, loadSpinnerService) {\n    var vm = this;\n\n    //Properties\n    vm.filterAll = true;\n    vm.filterCreated = true;\n    vm.filterPending = true;\n    vm.filterDelivered = true;\n    vm.filterRested = true;\n    vm.filterPayed = true;\n    vm.filterCancelled = true;\n\n    //Functions\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.loadCustomerOrders = loadCustomerOrders;\n\n    vm.searchTermChange = searchTermChange;\n    vm.searchTermChangeDebounced = _.debounce(searchTermChange, 2000);\n    vm.flushDebouncedIfEnterKey = flushDebouncedIfEnterKey;\n    vm.filterAllChanged = filterAllChanged;\n\n    vm.selectOrder = selectOrder;\n\n    activate();\n\n    function onInit() {\n        vm.customerOrders = [];\n        vm.searchTerm = {};\n        vm.searchTerm.term = ($stateParams.searchTerm) ? $stateParams.searchTerm : '';\n        vm.searchTerm.orderTypes = [];\n        vm.searchTerm.locations = [];\n        vm.searchTerm.selectedFromLocation = {};\n        vm.searchTerm.onlyOrderNumber = true;\n\n        vm.currentPage = 1;\n        vm.totalItems = 0;\n        vm.itemsPerPage = 15;\n    }\n    function onChanges() {\n    }\n\n    function activate() {\n        loadLocations();\n    }\n\n    function loadCustomerOrders() {\n        loadSpinnerService.start('mainSpinner');\n        setSearchTermOrderTypes()\n        CustomerOrderApiService.getAll(vm.currentPage, vm.searchTerm, vm.itemsPerPage).then(function (response) {\n            vm.customerOrders = response.data;\n            vm.totalItems = response.totalItems;\n            console.log(vm.customerOrders);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function filterAllChanged(){\n        vm.filterCreated = vm.filterAll;\n        vm.filterPending = vm.filterAll;\n        vm.filterDelivered = vm.filterAll;\n        vm.filterRested = vm.filterAll;\n        vm.filterPayed = vm.filterAll;\n        vm.filterCancelled = vm.filterAll;\n\n        searchTermChange();\n    }\n\n    function setSearchTermOrderTypes(){\n        vm.searchTerm.orderTypes = []\n        vm.filterAll = true;\n\n        if(vm.filterCreated)\n            vm.searchTerm.orderTypes.push('Created');\n        else\n            vm.filterAll = false;\n\n        if(vm.filterPending)\n            vm.searchTerm.orderTypes.push('Pending');\n        else\n            vm.filterAll = false;\n        \n        if(vm.filterDelivered)\n            vm.searchTerm.orderTypes.push('Delivered');\n        else\n            vm.filterAll = false;\n        \n        if(vm.filterRested)\n            vm.searchTerm.orderTypes.push('Rested');\n        else\n            vm.filterAll = false;\n        \n        if(vm.filterPayed)\n            vm.searchTerm.orderTypes.push('Payed');\n        else\n            vm.filterAll = false;\n        \n        if(vm.filterCancelled)\n            vm.searchTerm.orderTypes.push('Cancelled');\n        else\n            vm.filterAll = false;\n\n    }\n\n    function loadLocations() {\n        loadSpinnerService.start('mainSpinner');\n        CustomerOrderApiService.getLocations().then(function (response) {\n            vm.locations = response.data.results;\n            var newEmptyLocation = {\n                id: -1,\n                locationName: $translate.instant('common.allLocations')\n            };\n            vm.locations.unshift(newEmptyLocation);\n            vm.searchTerm.selectedFromLocation = vm.locations[0];\n\n            $scope.$watch(function () {\n                return vm.searchTerm.selectedFromLocation ? vm.searchTerm.selectedFromLocation.id : undefined;\n            }, function(oldValue, newValue) {\n                if (oldValue !== newValue || newValue === -1) {\n                    searchTermChange();\n                }\n            });\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadCustomerOrders();\n    }\n\n    function flushDebouncedIfEnterKey(keycode) {\n        if (keycode ===  13) {\n            vm.searchTermChangeDebounced.flush();\n        }\n    }\n\n    function selectOrder(orderId) {\n        vm.onCustomerOrderSelected({ orderId: orderId });\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('customerorder.customerordersearch', {\n        url: '/search',\n        templateUrl: 'main/customerorder/customerordersearch/customerordersearch.tpl.html',\n        controller: 'CustomerOrderSearchController as vm',\n        resolve: {\n            customerOrder: function() {\n                return {};\n            }\n        },\n        params: {\n            searchTerm: ''\n        }\n    });\n    $stateProvider.state('customerorder.customerorder', {\n        url: '/{orderId}',\n        templateUrl: 'main/customerorder/customerordersearch/customerordersearch.tpl.html',\n        controller: 'CustomerOrderSearchController as vm',\n        resolve: {\n            customerOrder: customerOrderResolver\n        },\n        params: {\n            searchTerm: ''\n        }\n    });\n}\n\n// @ngInject\nfunction customerOrderResolver($stateParams, CustomerOrderApiService) {\n    return CustomerOrderApiService.getById($stateParams.orderId);\n}\n\n// @ngInject\nfunction CustomerOrderSearchController($rootScope, $state, $translate, customerOrder) {\n    var vm = this;\n\n    //Properties\n    vm.selectedOrder = customerOrder;\n    vm.canAccess = $rootScope.canAccess;\n    vm.showSearchFields = true;\n\n    //Public methods\n    vm.transitionToState = transitionToState;\n    vm.toggleSearchFields = toggleSearchFields;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getOrderTypeTranslation = getOrderTypeTranslation;\n    vm.showSearchToggle = showSearchToggle;\n\n    activate();\n\n    function activate() {\n        vm.showSearchFields = true;\n        if (vm.selectedOrder && vm.selectedOrder.id) {\n            vm.showSearchFields = false;\n        }\n    }\n\n    function transitionToState(orderId) {\n        $state.go('customerorder.customerorder', { orderId: orderId });\n    }\n\n    function toggleSearchFields() {\n        vm.showSearchFields = !vm.showSearchFields;\n    }\n\n    function showSearchToggle() {\n        return vm.selectedOrder && vm.selectedOrder.id;\n    }\n\n    function getStatusTranslation(text) {\n        var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n        return $translate.instant('customerorder.status' + textCapital);\n    }\n\n    function getOrderTypeTranslation(text) {\n        var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n        return $translate.instant('customerorder.type' + textCapital);\n    }\n}\n\nangular\n    .module('customerorder.customerordersearch', [])\n    .config(stateConfig)\n    .controller('CustomerOrderSearchController', CustomerOrderSearchController);\n","angular.module('components.caDiscountMultiselect', [])\n    .component('caDiscountMultiselect', {\n        templateUrl: 'main/discountManagement/component/discountMultiselect.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            model: '=',\n            choices: '<',\n            placeholder: '<',\n            filterBy: '<',\n            orderBy: '<',\n            disabledBy: '<',\n            itemRenderer: '<'\n        },\n        controller: controller\n});\n\n// @ngInject\nfunction controller($scope) {\n    var vm = this;\n    \n    vm.filter = '';\n    vm.filteredChoices = [];\n\n    vm.$onChanges = onChanges;\n    vm.$onInit = onInit;\n\n    vm.filterChanged = filterChanged;\n    vm.selectItem = selectItem;\n    vm.deselectItem = deselectItem;\n    vm.formatRenderer = formatRenderer;\n    vm.hideSelected = false;\n\n    vm.deselectSelection = deselectSelection;\n    vm.selectFilterSelection = selectFilterSelection;\n    vm.areThereItems = areThereItems;\n\n    activate();\n\n\n    function onInit() {\n    }\n\n    function activate(){\n        $scope.$watch(function() {\n            if(_.isUndefined(vm.model)){\n                return vm.model;\n            }\n            \n            return vm.model.length;\n        },function(){\n            filterChanged();\n          });      \n    }\n\n    function areThereItems(){\n        return vm.model.length > 0 || vm.filteredChoices.length > 0;\n    }\n\n    function onChanges(changes){\n        if(vm.model === undefined){\n            vm.model = [];\n        }\n        filterChanged();\n    }\n\n    function formatRenderer(value){\n        var renderValue = '';\n        _.forEach(vm.itemRenderer, function(item){\n            renderValue += value[item] + ' ';\n        })\n        return renderValue;\n    }\n\n    function deselectItem(item){\n        vm.filteredChoices.push(item);\n        const index = vm.model.indexOf(item);\n        vm.model.splice(index, 1);\n    }\n\n    function selectItem(item){\n        vm.model.push(item);\n        const index = vm.filteredChoices.indexOf(item);\n        vm.filteredChoices.splice(index, 1);\n\n        // Resets filter when we've selected an item and there are no more items after that.\n        if(vm.filter !== '' && vm.filteredChoices.length === 0){\n            vm.filter = '';\n            filterChanged();\n        }\n    }\n\n    function deselectSelection(){\n        vm.model = [];\n        vm.filter = \"\";\n        filterChanged();\n    }\n    function selectFilterSelection(){\n        vm.model = vm.model.concat(vm.filteredChoices)\n        vm.filteredChoices = [];\n        vm.filter = '';\n        filterChanged();\n    }\n\n    function alreadyAdded(choice){\n        var alreadyAdded = false;\n        _.forEach(vm.model, function(item){\n            var filterLength = vm.filterBy.length;\n            _.forEach(vm.filterBy, function(by){\n                if(item[by].toString().toLowerCase().includes(choice[by].toString().toLowerCase())){\n                    filterLength--;\n                }\n            });\n            if(filterLength === 0){\n                alreadyAdded = true;\n            }\n        });\n        return alreadyAdded;\n    }\n    \n    function filterChanged(){\n        console.log('FilterChanged start');\n        vm.filteredChoices = vm.choices.filter( function (choice){\n            if(alreadyAdded(choice))\n                return false;\n\n            if(vm.filter === '')\n                return true;\n\n            var match = false;\n            _.forEach(vm.filterBy, function(by){\n                if(choice[by].toString().toLowerCase().includes(vm.filter.toLowerCase())){\n                    match = true;\n                }\n            });\n            return match;\n        });\n        console.log('FilterChanged completed');\n    }\n}","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('discountManagement', {\n        url: '/discountManagement',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/discountManagement/discountManagement.tpl.html',\n        controller: 'MainDiscountManagementController as vm'\n    });\n}\n\n// @ngInject\nfunction MainDiscountManagementController(){\n    var vm = this;\n}\n\nangular\n    .module('main.discountManagement', ['discountManagement.discounts'])\n    .config(stateConfig)\n    .controller('MainDiscountManagementController', MainDiscountManagementController);","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('discountManagement.discounts.new', {\n        url: '/new',\n        views: {\n            \"discountView@discountManagement\": {\n                templateUrl: 'main/discountManagement/discounts/discount/discount.tpl.html',\n                controller: 'DiscountController as vm'\n            }\n        },\n        resolve: {\n            discount: function () { return {}; },\n            searchTerms: searchTermsResolver,\n            discountTypes: discountTypesResolver,\n            createNew: function () { return true; },\n            createCopy: function () { return false; }\n        }\n    });\n\n    $stateProvider.state('discountManagement.discounts.discount', {\n        url: '/{discountId}',\n        views: {\n            \"discountView@discountManagement\": {\n                templateUrl: 'main/discountManagement/discounts/discount/discount.tpl.html',\n                controller: 'DiscountController as vm'\n            }\n        },\n        resolve: {\n            discount: discountResolver,\n            searchTerms: searchTermsResolver,\n            discountTypes: discountTypesResolver,\n            createNew: function () { return false; },\n            createCopy: function () { return false; }\n        }\n    });\n\n    $stateProvider.state('discountManagement.discounts.copy', {\n        url: '/copy/{discountId}',\n        views: {\n            \"discountView@discountManagement\": {\n                templateUrl: 'main/discountManagement/discounts/discount/discount.tpl.html',\n                controller: 'DiscountController as vm'\n            }\n        },\n        resolve: {\n            discount: discountCopyResolver,\n            searchTerms: searchTermsResolver,\n            discountTypes: discountTypesResolver,\n            createNew: function () { return false; },\n            createCopy: function () { return true; }\n        }\n    });\n}\n// @ngInject\nfunction discountCopyResolver($stateParams, DiscountsApiService) {\n    return DiscountsApiService.getDiscountCopy($stateParams.discountId);\n}\n// @ngInject\nfunction discountTypesResolver(DiscountsApiService) {\n    return DiscountsApiService.getDiscountTypes();\n}\n// @ngInject\nfunction discountResolver($stateParams, DiscountsApiService) {\n    return DiscountsApiService.getDiscount($stateParams.discountId);\n}\n\n// @ngInject\nfunction searchTermsResolver($stateParams) {\n    return {\n        filter: $stateParams.filter ? $stateParams.filter : '',\n        showCancelled: $stateParams.canc,\n        showApproved: $stateParams.appr,\n        showCompleted: $stateParams.comp\n    };\n}\n\n// @ngInject\nfunction DiscountController($state, discount, discountTypes, loadSpinnerService, DiscountsApiService, createNew, createCopy, $scope, $translate, ToasterService, searchTerms, confirmationDialogService) {\n    var vm = this;\n\n    vm.descriptionMaxLength = descriptionMaxLength;\n    vm.discount = discount.discount;\n    vm.links = discount.links\n    vm.discountTypes = discountTypes;\n    vm.salesChannels = [];\n    vm.mainGroups = [];\n    vm.brands = [];\n    vm.itemGroups = [];\n    vm.isEditing = false;\n    vm.isNew = false;\n    vm.discountCopy = {};\n    vm.step = 1;\n    vm.maxSteps = 5;\n    vm.itemGroupValidationErrors = [];\n    vm.approveDiscount = false;\n    vm.filter = '';\n    vm.showCancelled = false;\n    vm.showApproved= false;\n    vm.showCompleted = false;\n\n    vm.brandsChanged = false;\n    vm.mainGroupsChanged = false;\n\n    if(searchTerms){\n        vm.filter = searchTerms.filter ? searchTerms.filter : '';\n        vm.showCancelled = searchTerms.showCancelled ? searchTerms.showCancelled == 'true' ? true : false : false;\n        vm.showApproved = searchTerms.showApproved ? searchTerms.showApproved == 'true' ? true : false : false;\n        vm.showCompleted = searchTerms.showCompleted ? searchTerms.showCompleted == 'true' ? true : false : false;\n    }\n\n    // functions\n    vm.save = save;\n    vm.enableEditing = enableEditing;\n    vm.enableEditingFromCopy = enableEditingFromCopy;\n    vm.cancelEditing = cancelEditing;\n    vm.delete = deleteDiscount;\n    \n    vm.isApproveDiscountEnabled = isApproveDiscountEnabled;\n    vm.approve = approve;\n    vm.cancel = cancel;\n    vm.itemGroupsEmpty = itemGroupsEmpty;\n    vm.getSalesChannels = getSalesChannels;\n    vm.timeSinceLastCall = 0;\n    vm.setStepRotation = setStepRotation;\n    vm.changeStep = changeStep;\n    vm.setStep = setStep;\n    vm.transformDiscountPercentToDecimal = transformDiscountPercentToDecimal\n    vm.itemGroupStillBlocking = itemGroupStillBlocking;\n    vm.validateItemGroups = validateItemGroups;\n    vm.isSalesChannelSelected = isSalesChannelSelected;\n    vm.endDateLessThanStartDate = endDateLessThanStartDate;\n    vm.validatePercentRange = validatePercentRange;\n    vm.removeErrorItemGroups = removeErrorItemGroups;\n    vm.valueXandYValid = valueXandYValid;\n\n    vm.formatDate = formatDate;\n\n    // links\n    vm.canEdit = canEdit;\n    vm.canApprove = canApprove;\n    vm.canCancel = canCancel;\n    vm.canDelete = canDelete;\n    vm.claimCanUpdate = claimCanUpdate;\n    vm.claimCanCreate = claimCanCreate;\n    vm.claimCanDelete = claimCanDelete;\n\n    if (createNew || createCopy) {\n        vm.isNew = true;\n        vm.isEditing = true;\n        \n        if(createNew)\n            vm.discount = {};\n\n        getSalesChannels();\n    }\n    \n    activate();\n\n\n\n    function activate(){\n        vm.discount.startDate = new Date(vm.discount.startDate);\n        vm.discount.endDate = new Date(vm.discount.endDate);\n\n        transformDiscountPercentToDisplayValue();\n\n        $scope.$watch(function() { \n            if(vm.discount.itemGroups !== undefined)\n            {\n                return vm.discount.itemGroups.length;\n            }\n\n            return vm.discount.itemGroups; \n        \n        }, function() {\n            if(vm.step === 4){\n                validateItemGroups();\n            }\n        });\n\n        $scope.$watch(function() { \n            if(!_.isUndefined(vm.discount.brands)){\n                return vm.discount.brands.length;\n            }\n\n            return vm.discount.brands\n        }, function() {\n            vm.brandsChanged = true;\n        });\n        \n        $scope.$watch(function() { \n            if(!_.isUndefined(vm.discount.mainGroups)){\n                return vm.discount.mainGroups.length;\n            }\n\n            return vm.discount.mainGroups\n        }, function() {\n            vm.mainGroupsChanged = true;\n        });\n    }\n\n    function endDateLessThanStartDate(){\n        return vm.discount.endDate <= vm.discount.startDate;\n        \n    }\n\n    function isSalesChannelSelected(){\n        if (vm.discount.salesChannel !== undefined){\n            return vm.discount.salesChannel.id > 0\n        }\n        return false;\n    }\n\n    function itemGroupStillBlocking(error){\n        var resp = _.findIndex(vm.discount.itemGroups, function(ig) { return ig.id === error.itemGroupId; });\n        \n        return resp >= 0;\n    }\n\n    function transformDiscountPercentToDisplayValue(){\n        if(vm.discount.discountPercent !== undefined)\n            vm.discount.discountPercent = vm.discount.discountPercent * 100\n    }\n\n    function transformDiscountPercentToDecimal(){\n        if(vm.discount.discountPercent !== undefined)\n            vm.discount.discountPercent = vm.discount.discountPercent * 0.01\n    }\n\n    function isApproveDiscountEnabled(){\n        var response = true;\n        \n        response = !itemGroupsEmpty();\n\n        return response;\n    }\n\n    function itemGroupsEmpty(){\n        var response = false;\n\n        if(_.isUndefined(vm.discount.itemGroups)){\n            response = true;\n        } else {\n            if(vm.discount.itemGroups.length === 0){\n                response = true;\n            }\n        }\n\n        return response;\n    }\n\n    function changeStep(increase){\n        if(vm.step < vm.maxSteps && increase){\n            vm.step++;\n        }\n        else if(vm.step > 1 && !increase){\n            vm.step--;\n        }\n\n        getNecessaryData();\n    }\n\n    function setStep(stepIndex){\n        vm.step = stepIndex;\n\n        if(vm.step > vm.maxSteps){\n            vm.step = vm.maxSteps;\n        }\n        else if(vm.step < 1){\n            vm.step = 1;\n        }\n\n        getNecessaryData();\n    }\n\n    function getNecessaryData(){\n        if(vm.step === 2){ //MainGroups\n            loadSpinnerService.start('mainSpinner');\n            DiscountsApiService.getMainGroups().then(function(result){\n                vm.mainGroups = result;\n            }, function (error) {\n                \n            }).finally(function(){\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n        else if(vm.step === 3){ //Brands\n            loadSpinnerService.start('mainSpinner');\n            DiscountsApiService.getBrands(vm.discount.mainGroups).then(function(result){\n                vm.brands = result;\n\n                // To ensure that no \"old\" brand is left behind\n                var brandIds = [];\n                _.forEach(result, function(n){\n                    brandIds.push(n.id);\n                });\n                // Removes brands on the discount object that aren't on the list!\n                vm.discount.brands = _.remove(vm.discount.brands, function(brand){\n                    return brandIds.includes(brand.id);\n                });\n\n            }, function (error) {\n                \n            }).finally(function(){\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n        else if(vm.step === 4){ //ItemGroups\n            loadSpinnerService.start('mainSpinner');\n            vm.itemGroups = [];\n            DiscountsApiService.getItemGroups(vm.discount.brands, vm.discount.mainGroups).then(function(result){\n                vm.itemGroups = angular.copy(result);\n                if(_.isUndefined(vm.discount.itemGroups) || vm.discount.itemGroups.length === 0 || vm.brandsChanged || vm.mainGroupsChanged){\n                    vm.brandsChanged = false;\n                    vm.mainGroupsChanged = false;\n                    vm.discount.itemGroups = angular.copy(result);\n                }\n            }, function(error){\n\n            }).finally(function(){\n                loadSpinnerService.stop('mainSpinner');\n                validateItemGroups();\n            });\n        }\n    }\n\n    function validateItemGroups(){\n        loadSpinnerService.start('mainSpinner');        \n        DiscountsApiService.validateItemGroups(vm.discount.id, vm.discount.itemGroups, vm.discount.startDate, vm.discount.endDate, vm.discount.salesChannel.id).then(function(result){\n            vm.itemGroupValidationErrors = result;\n        }, function(error){\n\n        }).finally(function(){\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function removeErrorItemGroups(){\n        var indexes = [];\n        _.forEach(vm.itemGroupValidationErrors, function(error){\n            _.forEach(vm.discount.itemGroups, function(itemGroup){\n                if(itemGroup.id === error.itemGroupId){\n                    indexes.push(vm.discount.itemGroups.indexOf(itemGroup));\n                }\n            })\n        });\n        for(var i = indexes.length -1; i >= 0; i--){\n            vm.discount.itemGroups.splice(indexes[i], 1);\n        }\n\n        validateItemGroups();\n    }\n\n    function setStepRotation(){\n        var style = {};\n\n        var degrees =  250 + (-35 * (vm.step - 1));\n\n        style['transform'] = 'rotate(' + degrees + 'deg)';\n\n        return style;\n    }\n\n    function descriptionMaxLength(maxLength){\n        if(vm.discount.description.length > maxLength){\n            vm.discount.description = vm.discount.description.substring(0, maxLength);\n        }\n    }\n\n    function getSalesChannels(){\n        DiscountsApiService.getSalesChannels().then(function(result){\n            vm.salesChannels = result;\n            if(vm.discount.salesChannel != undefined)\n                vm.discount.salesChannel = _.find(vm.salesChannels, function(salesChannel){ return salesChannel.id === vm.discount.salesChannel.id});\n        }, function (error) {\n            \n        });\n    }\n\n    function formatDate(date) {\n        if(date === null)\n            return date;\n        if(angular.isNumber(date)){\n            date = new Date(date);\n        }\n        const offset = date.getTimezoneOffset()\n        date = new Date(date.getTime() - (offset*60*1000))\n        return date.toISOString().split('T')[0]\n    }\n\n    function save() {\n        transformDiscountPercentToDecimal();\n        loadSpinnerService.start('mainSpinner');\n        DiscountsApiService.saveDiscount(vm.discount).then(function (result) {\n            vm.discount.id = result.id.id;\n            vm.isEditing = false;\n            vm.isNew = false;\n            ToasterService.showSuccess('\"' + vm.discount.name + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"discount.discount\"));\n            transformDiscountPercentToDisplayValue();\n            vm.step = 1;\n            if(vm.approveDiscount){\n                approve();\n            }\n            else {\n            }\n        }, function (error) {\n            ToasterService.showError(error.data.message, $translate.instant(\"discount.discount\"), 20000);\n            loadSpinnerService.stop('mainSpinner');\n        }).finally(function() {\n            if(!vm.approveDiscount){\n                $state.go('discountManagement.discounts.discount', { discountId: vm.discount.id }, {reload: 'discountManagement.discounts'});\n                loadSpinnerService.stop('mainSpinner');\n            }\n        });\n    }\n\n    function approve() {\n        confirmationDialogService.showDialog($translate.instant(\"discount.confirmApprove\")).then(function (approveConfirmed) {\n            if(approveConfirmed === true) {\n                loadSpinnerService.start('mainSpinner');\n                DiscountsApiService.approveDiscount(vm.discount.id).then(function (result) {\n                    vm.approveDiscount = false;\n                    ToasterService.showSuccess($translate.instant(\"discount.status.approved\"), $translate.instant(\"discount.discount\"), 20000);\n                }, function (error) {\n                    ToasterService.showError(error.data.message, $translate.instant(\"discount.discount\"), 20000);\n                }).finally(function() {\n                    $state.go('discountManagement.discounts.discount', { discountId: vm.discount.id }, {reload: 'discountManagement.discounts'});\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function cancel(){\n        confirmationDialogService.showDialog($translate.instant(\"discount.confirmCancel\"), 'danger').then(function (cancelConfirmed) {\n            if(cancelConfirmed === true) {\n                loadSpinnerService.start('mainSpinner');\n                DiscountsApiService.cancelDiscount(vm.discount.id).then(function(response){\n                    ToasterService.showSuccess($translate.instant(\"discount.status.cancelled\"), $translate.instant(\"discount.discount\"), 20000);\n                }, function (error) {\n                    ToasterService.showError(error.data.message, $translate.instant(\"discount.discount\"), 20000);\n                }).finally(function() {\n                    $state.go('discountManagement.discounts.discount', { discountId: vm.discount.id }, {reload: 'discountManagement.discounts'});\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function enableEditing() {\n        vm.discountCopy = angular.copy(vm.discount);\n        vm.discount.startDate = new Date(vm.discount.startDate);\n        vm.discount.endDate = new Date(vm.discount.endDate);\n        vm.step = 1;\n        vm.isEditing = true;\n        getSalesChannels();\n    }\n    \n    function enableEditingFromCopy() {\n        getSalesChannels();\n        $state.go('discountManagement.discounts.copy', {discountId: vm.discount.id});\n    }\n\n    function cancelEditing() {\n        vm.discount = angular.copy(vm.discountCopy);\n        vm.step = 1;\n        vm.isEditing = false;\n    }\n\n    function deleteDiscount() {\n        confirmationDialogService.showDialog($translate.instant(\"discount.confirmDelete\"), 'danger').then(function (deleteConfirmed) {\n            if(deleteConfirmed === true) {\n                loadSpinnerService.start('mainSpinner');\n                DiscountsApiService.deleteDiscount(vm.discount.id).then(function() {\n                    ToasterService.showSuccess('\"' + vm.discount.name + '\" ' + $translate.instant(\"common.wasDeleted\"), $translate.instant(\"discount.discount\"));\n                }, function (error) {\n                    ToasterService.showError($translate.instant(error.data.message), $translate.instant(\"discount.discount\"));\n                }).finally(function () {\n                    vm.isEditing = false;\n                    vm.isNew = false;\n                    vm.step = 1;\n                    $state.go('discountManagement.discounts',{},{reload: 'discountManagement.discounts'});\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function validatePercentRange(minValue, maxValue) {\n        if(vm.discount.discountPercent < minValue){\n            vm.discount.discountPercent = minValue;\n        }\n        if(vm.discount.discountPercent > maxValue){\n            vm.discount.discountPercent = maxValue;\n        }\n\n    }\n\n    function valueXandYValid() {\n        if(vm.discount.discriminator.value === 'BuyXgetYDiscount'){\n            return vm.discount.valueX < vm.discount.valueY && vm.discount.valueX > 0 && vm.discount.valueY > 0\n        }\n        else if(vm.discount.discriminator.value === 'BuyXgetCheapestDiscount'){\n            return vm.discount.valueX > 0\n        }\n        return true;\n    }\n\n    /* DISCOUNT LINKS */\n    function canEdit() {\n        return DiscountsApiService.canEditDiscount(vm.links);\n    }\n    function canApprove(){\n        return DiscountsApiService.canApproveDiscount(vm.links);\n    }\n    function canCancel(){\n        return DiscountsApiService.canCancelDiscount(vm.links);\n    }\n    function canDelete(){\n        return DiscountsApiService.canDeleteDiscount(vm.links);\n    }\n    function claimCanUpdate(){\n        return DiscountsApiService.claimCanUpdateDiscount(vm.links);\n    }\n    function claimCanCreate(){\n        return DiscountsApiService.claimCanCreateDiscount(vm.links);        \n    }\n    function claimCanDelete(){\n        return DiscountsApiService.claimCanDeleteDiscount(vm.links);        \n    }\n\n}\n\nangular\n    .module('discounts.discount', [])\n    .config(stateConfig)\n    .controller('DiscountController', DiscountController);","// @ngInject\nfunction DiscountsApiService($rootScope, $q, $window, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'discounts';\n  \n    return {\n      getDiscounts: getDiscounts,\n      getDiscount: getDiscount,\n      getDiscountCopy: getDiscountCopy,\n      saveDiscount: saveDiscount,\n      validateItemGroups: validateItemGroups,\n      deleteDiscount: ResourcesService.apiFactory.delete(endpoint, 'Discount'),\n      getSalesChannels: ResourcesService.apiFactory.get(endpoint + '/saleschannels'),\n      getMainGroups: ResourcesService.apiFactory.get(endpoint + '/maingroups'),\n      getDiscountTypes: ResourcesService.apiFactory.get(endpoint + '/types'),\n      getBrands: getBrands,\n      getItemGroups: getItemGroups,\n      approveDiscount: approveDiscount,\n      cancelDiscount: cancelDiscount,\n\n      // Links\n      canEditDiscount: canEditDiscount,\n      canApproveDiscount: canApproveDiscount,\n      canCancelDiscount: canCancelDiscount,\n      canDeleteDiscount: canDeleteDiscount,\n      claimCanCreateDiscount: claimCanCreateDiscount,\n      claimCanUpdateDiscount: claimCanUpdateDiscount,\n      claimCanDeleteDiscount: claimCanDeleteDiscount\n    };\n\n    function hasLink(links, rel) {\n      var link = _.find(links, function (o) {\n          return o.rel === rel;\n      });\n\n      if (link) {\n          return true;\n      }\n\n      return false;\n    }\n\n    function canEditDiscount(links) {\n      return hasLink(links, 'can_edit');\n    }\n    \n    function canApproveDiscount(links) {\n      return hasLink(links, 'can_approve');\n    }\n\n    function canCancelDiscount(links) {\n      return hasLink(links, 'can_cancel');\n    }\n    \n    function canDeleteDiscount(links) {\n      return hasLink(links, 'can_delete');\n    }\n\n    function claimCanUpdateDiscount(links) {\n      return hasLink(links, 'claim_can_update');\n    }\n    function claimCanCreateDiscount(links) {\n      return hasLink(links, 'claim_can_create');\n    }\n    function claimCanDeleteDiscount(links) {\n      return hasLink(links, 'claim_can_delete');\n    }\n\n    function approveDiscount(discountId){\n      var deferred = $q.defer();\n\n      DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + discountId + '/confirmation')\n        .then(function (response) {\n          deferred.resolve(response.data);\n        }, function (error) {\n          deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n    \n    function cancelDiscount(discountId){\n      var deferred = $q.defer();\n\n      DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + discountId + '/cancellation')\n        .then(function (response) {\n          deferred.resolve(response.data);\n        }, function (error) {\n          deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function validateItemGroups(discountId, itemGroups, startDate, endDate, salesChannelId){\n      var deferred = $q.defer();\n\n      var tempStartDate = startDate;\n      tempStartDate = new Date(tempStartDate);\n      startDate = new Date(Date.UTC(tempStartDate.getFullYear(), tempStartDate.getMonth(), tempStartDate.getDate()));\n      var tempEndDate = endDate;\n      tempEndDate = new Date(tempEndDate);\n      endDate = new Date(Date.UTC(tempEndDate.getFullYear(), tempEndDate.getMonth(), tempEndDate.getDate(), 23, 59, 59, 0));\n\n      var request = {\n        'discountId': discountId,\n        'itemGroups' : itemGroups,\n        'startDate': startDate,\n        'endDate': endDate,\n        'salesChannelId': salesChannelId\n      };\n\n      var jsonRequest = JSON.stringify(request);\n\n      DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/validateitemgroups', jsonRequest).then(function(response){\n        deferred.resolve(response.data);\n      },function(error) {\n        deferred.reject(handleError(error));\n      });\n\n      return deferred.promise;\n    }\n\n    function getBrands(mainGroups) {\n      var deferred = $q.defer();\n      var request = [];\n\n      _.forEach(mainGroups, function(mainGroup){\n        request.push(mainGroup.id);\n      });\n\n      var jsonRequest = JSON.stringify(request);\n\n      DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/brands', jsonRequest).then(function (response) {\n        deferred.resolve(response.data);\n      }, function(error) {\n        deferred.reject(handleError(error));\n      });\n\n      return deferred.promise;\n    }\n\n    function getItemGroups(brands, mainGroups) {\n      var deferred = $q.defer();\n\n      var request = {\n        mainGroupIds: [],\n        brandIds: []\n      };\n\n      _.forEach(mainGroups, function(mainGroup){\n        request.mainGroupIds.push(mainGroup.id);\n      });\n      _.forEach(brands, function(brand){\n        request.brandIds.push(brand.id);\n      });\n\n      var jsonRequest = JSON.stringify(request);\n\n      DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/itemgroups', jsonRequest).then(function (response) {\n        deferred.resolve(response.data);\n      }, function(error) {\n        deferred.reject(handleError(error));\n      });\n\n      return deferred.promise;\n    }\n\n    function getDiscounts(filter, currentPage, pageSize, showCancelled, showApproved, showCompleted, monthsBack) {\n      var deferred = $q.defer();\n\n      var params = {};\n      if(!_.isEmpty(filter)){\n        params.filter = filter;\n      }\n      params.currentPage = currentPage;\n      params.pageSize = pageSize;\n      params.showCancelled = showCancelled;\n      params.showApproved = showApproved;\n      params.showCompleted = showCompleted;\n      params.monthsBack = monthsBack;\n\n      DSHttpAdapter.GET(DS.defaults.basePath + endpoint, { params: params}).then(function (response) {\n        deferred.resolve(response.data);\n      }, function (error) {\n        deferred.reject(error);\n      });\n\n      return deferred.promise;\n    }\n\n    function getDiscount(id) {\n      var deferred = $q.defer();\n      DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + id)\n        .then(function (response) {\n          deferred.resolve(response.data);\n        }, function (error) {\n          deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function getDiscountCopy(id) {\n      var deferred = $q.defer();\n      DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + id + '/copy')\n        .then(function (response) {\n          deferred.resolve(response.data);\n        }, function (error) {\n          deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function saveDiscount(discount) {\n      \n      var deferred = $q.defer();\n\n      var discountData = discount;\n      /*var discountData = {\n        id : discount.id,\n        name : discount.name,\n        startDate : discount.startDate,\n        endDate : discount.endDate,\n        status : discount.status,\n        salesChannel : discount.salesChannel,\n        itemGroups : discount.itemGroups,\n        description : discount.description\n      }*/\n\n      var sendDiscountData = angular.copy(discountData);\n\n      var startDate = sendDiscountData.startDate;\n      startDate = new Date(startDate);\n      sendDiscountData.startDate = new Date(Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()));\n      var endDate = sendDiscountData.endDate;\n      endDate = new Date(endDate);\n      sendDiscountData.endDate = new Date(Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate()));\n\n      var jsonData = JSON.stringify(sendDiscountData);\n\n      DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/save', jsonData).then(function (response) {\n        deferred.resolve(response.data);\n        $rootScope.$emit('Discount.Updated', response.data);\n        $rootScope.$emit('Discount.Changed', response.data);\n      }, function (error) {\n        deferred.reject(error);\n      });\n\n      return deferred.promise;\n    }\n}\n    angular\n      .module('discounts.api', [])\n      .factory('DiscountsApiService', DiscountsApiService);\n  ","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('discountManagement.discounts', {\n        url: '/discounts?show&canc&appr&comp&months&filter&currPage&pageSize',\n        views: {\n            'discountList@discountManagement': {\n                templateUrl: 'main/discountManagement/discounts/discounts.tpl.html',\n                controller: 'DiscountsController as vm'\n            }\n        },\n        resolve: {\n            searchTerms: searchTermsResolver,\n            discounts: discountsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction discountsResolver($stateParams, DiscountsApiService){\n    return DiscountsApiService.getDiscounts($stateParams.filter, $stateParams.currPage, $stateParams.pageSize,  $stateParams.canc, $stateParams.appr, $stateParams.comp, $stateParams.months);\n}\n\n// @ngInject\nfunction searchTermsResolver($stateParams) {\n    return {\n        showDropDown : $stateParams.show,\n        filter: $stateParams.filter ? $stateParams.filter : '',\n        currentPage: $stateParams.currPage,\n        pageSize : $stateParams.pageSize,\n        showCancelled: $stateParams.canc,\n        showApproved: $stateParams.appr,\n        showCompleted: $stateParams.comp,\n        monthsBack: $stateParams.months\n    };\n}\n\n// @ngInject\nfunction DiscountsController($scope ,$rootScope, $state, $stateParams, discounts, loadSpinnerService, DiscountsApiService, ToasterService, confirmationDialogService, $translate, searchTerms) {\n    var vm = this;\n\n    vm.filter = '';\n    vm.discounts = discounts.data.results;\n    vm.selectedDiscountId = 0;\n    vm.filterDropdownIsVisisble = false;\n    vm.showCancelled = false;\n    vm.showCompleted = false;\n    vm.showApproved = false;\n    vm.monthsOptions = [0, 1, 2, 4, 6, 8, 12, 9999]\n    vm.monthsBackOption = 0;\n    vm.currentDate = new Date();\n    vm.currentPage = discounts.data.page;\n    vm.pageSize = discounts.data.limit;\n    vm.totalDiscounts = discounts.data.total;\n\n    vm.searchTermChanged = searchTermChanged;\n    vm.forceReloadUrl = forceReloadUrl;\n    vm.selectDiscount = selectDiscount;\n    vm.selectedDiscountId = 0;\n    vm.listBackgroundStyle = listBackgroundStyle\n    vm.flipDropDownFilter = flipDropDownFilter;\n    vm.flipCancelled = flipCancelled;\n    vm.flipApproved = flipApproved;\n    vm.flipCompleted = flipCompleted;\n    vm.monthChanged = monthChanged;\n    vm.claimCanCreate = claimCanCreate;\n\n    //$scope.$watch(function() { return vm.showCancelled; }, function(oldValue, newValue) {\n    //    searchTermChanged(true);\n    //});\n    //$scope.$watch(function() { return vm.showCompleted; }, function(oldValue, newValue) {\n    //    searchTermChanged(true);\n    //});\n//#region OldCalendarStuff\n    // properties\n    vm.discountsOld = [\n        { \n            'name': \"Test Rabatt\",\n            'code': \"XHGY21\",\n            'startDate': new Date(2022, 1, 10),\n            'endDate': new Date(2022, 1, 16),\n            'description': \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet tellus cras adipiscing enim eu turpis. Bibendum arcu vitae elementum curabitur vitae nunc sed velit. Risus nec feugiat in fermentum posuere.\"\n        },\n        { \n            'name': \"Test Rabatt 2\",\n            'code': \"XHGY22\",\n            'startDate': new Date(2022, 1, 1),\n            'endDate': new Date(2022, 1, 8),\n            'description': \"Nunc mi ipsum faucibus vitae aliquet nec ullamcorper. Nullam non nisi est sit amet. Nisi lacus sed viverra tellus in hac habitasse platea dictumst. Ullamcorper dignissim cras tincidunt lobortis feugiat.\"\n        },\n        { \n            'name': \"Test Rabatt 3\",\n            'code': \"XHGY23\",\n            'startDate': new Date(2022, 2, 2),\n            'endDate': new Date(2022, 2, 10),\n            'description': \"Quis vel eros donec ac odio tempor orci. Tempus urna et pharetra pharetra massa massa ultricies mi.\"\n        },\n        { \n            'name': \"Test Rabatt 4\",\n            'code': \"XHGY24\",\n            'startDate': new Date(2022, 1, 12),\n            'endDate': new Date(2022, 1, 18),\n            'description': \"Duis tristique sollicitudin nibh sit amet commodo nulla facilisi. Mus mauris vitae ultricies leo integer malesuada nunc vel risus. Consectetur libero id faucibus nisl tincidunt.\"\n        },\n        { \n            'name': \"Test Rabatt 5\",\n            'code': \"XHGY25\",\n            'startDate': new Date(2022, 4, 1),\n            'endDate': new Date(2022, 4, 31),\n            'description': \"Duis tristique sollicitudin nibh sit amet commodo nulla facilisi. Mus mauris vitae ultricies leo integer malesuada nunc vel risus. Consectetur libero id faucibus nisl tincidunt.\"\n        }\n    ];\n    //vm.selectedDiscount = discount;\n    vm.dates = [];\n    vm.selectedMonth = new Date().getMonth();\n    vm.selectedYear = new Date().getFullYear();\n\n    vm.increaseMonth = increaseMonth;\n    vm.decreaseMonth = decreaseMonth;\n    vm.shouldDisplayDiscount = shouldDisplayDiscount;\n    vm.getColspanForDiscount = getColspanForDiscount;\n    vm.shouldSkipRepeat = shouldSkipRepeat;\n\n    vm.months = [\n        { 'name': \"jan\", 'days': [] },\n        { 'name': \"feb\", 'days': [] },\n        { 'name': \"mar\", 'days': [] },\n        { 'name': \"apr\", 'days': [] },\n        { 'name': \"may\", 'days': [] },\n        { 'name': \"jun\", 'days': [] },\n        { 'name': \"jul\", 'days': [] },\n        { 'name': \"aug\", 'days': [] },\n        { 'name': \"sep\", 'days': [] },\n        { 'name': \"oct\", 'days': [] },\n        { 'name': \"nov\", 'days': [] },\n        { 'name': \"dec\", 'days': [] },\n    ]\n\n    var weekday = [\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];\n//#endregion\n    activate();\n\n    function activate() {   \n        vm.filterDropdownIsVisisble = searchTerms.showDropDown ? searchTerms.showDropDown == 'true' ? true : false : false;\n        vm.filter = searchTerms.filter ? searchTerms.filter : '';\n        vm.showCancelled = searchTerms.showCancelled ? searchTerms.showCancelled == 'true' ? true : false : false;\n        vm.showApproved = searchTerms.showApproved ? searchTerms.showApproved == 'true' ? true : false : false;\n        vm.showCompleted = searchTerms.showCompleted ? searchTerms.showCompleted == 'true' ? true : false : false;\n        vm.monthsBackOption = searchTerms.monthsBack ? searchTerms.monthsBack: 0;\n\n        recalcDaysInMonths();\n\n        console.log(vm.months);\n\n        //$rootScope.$on('Discount.Changed', function () {\n        //    loadDiscounts();\n        //});\n    }\n\n    function claimCanCreate(){\n        return (!_.isUndefined($rootScope.currentUser.claims.discount) && !_.isUndefined($rootScope.currentUser.claims.discount.create)) || $rootScope.currentUser.claims.discount.create\n    }\n\n    function searchTermChanged(reloadUrl){\n        \n        if(reloadUrl){\n            forceReloadUrl();\n        }\n\n        loadDiscounts();\n    }\n\n    function forceReloadUrl(){\n        $state.go('discountManagement.discounts', \n        {\n            currPage: vm.currentPage,\n            pageSize: vm.pageSize,\n            show: vm.filterDropdownIsVisisble,\n            filter: vm.filter,\n            canc: vm.showCancelled,\n            appr: vm.showApproved,\n            comp: vm.showCompleted,\n            months: vm.monthsBackOption\n        },\n            {notify: false}\n        );\n    }\n\n    function loadDiscounts() {\n        console.log(vm.filterDropdownIsVisisble, vm.filter, vm.showCompleted, vm.showApproved, vm.showCancelled, vm.monthsBackOption);\n        loadSpinnerService.start('mainSpinner');\n        DiscountsApiService.getDiscounts(vm.filter, vm.currentPage, vm.pageSize,  vm.showCancelled, vm.showApproved, vm.showCompleted, vm.monthsBackOption).then(function (response) {\n            console.log(response);\n            vm.discounts = response.data.results;\n            vm.currentPage = response.data.page;\n            vm.pageSize = response.data.limit;\n            vm.totalDiscounts = response.data.total;\n\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function selectDiscount(discount) {\n        vm.selectedDiscountId = discount.id;\n        $state.go('discountManagement.discounts.discount', \n            {\n                discountId: discount.id,\n                currPage: vm.currentPage,\n                pageSize: vm.pageSize,\n                show: vm.filterDropdownIsVisisble,\n                filter: vm.filter,\n                canc: vm.showCancelled,\n                appr: vm.showApproved,\n                comp: vm.showCompleted,\n                months: vm.monthsBackOption\n            }\n        );\n    }\n\n    function listBackgroundStyle(discount){\n        var style = {};\n\n        if(discount.status === 'discount.Approved')\n            style['background-color'] = 'rgba(0,255,0,0.06)';\n        else if(discount.status === 'discount.Cancelled')\n            style['background-color'] = 'rgba(255,0,0,0.03)';\n        \n        return style;\n    }\n\n    function monthChanged() {\n        if(vm.monthsBackOption < 0)\n            vm.monthsBackOption = vm.monthsOptions[0];\n        if(vm.monthsBackOption >= vm.monthsOptions.length)\n            vm.monthsBackOption = vm.monthsOptions.length - 1;\n\n        searchTermChanged(true);\n    }\n    function flipDropDownFilter() {\n        vm.filterDropdownIsVisisble = !vm.filterDropdownIsVisisble;\n        forceReloadUrl();\n    }\n    function flipCancelled() {\n        vm.showCancelled = !vm.showCancelled;\n        searchTermChanged(true);\n    }\n    function flipApproved() {\n        vm.showApproved = !vm.showApproved;\n        searchTermChanged(true);\n    }\n    function flipCompleted() {\n        vm.showCompleted = !vm.showCompleted;\n        searchTermChanged(true);\n    }\n\n    function recalcDaysInMonths(){\n        _.forEach(vm.months, function(month){\n            month.days = [];\n            var daysInMonth = 0;\n            if(month.name === 'jan' || month.name === 'mar' || month.name === 'may' || month.name === 'jul' || month.name === 'aug' || month.name === 'oct' || month.name === 'dec'){\n                daysInMonth = 31;\n            }\n            else if(month.name === 'apr' || month.name === 'jun' || month.name === 'sep' || month.name === 'nov'){\n                daysInMonth = 30\n            }\n            else if(month.name === 'feb'){\n                daysInMonth = leapYear(vm.selectedYear) ? 29 : 28;\n            }\n\n            for(let i = 1; i <= daysInMonth; i++){\n                var day = weekday[new Date(vm.selectedYear, vm.selectedMonth, i).getDay()];\n                month.days.push({ 'index': i, 'name': day });\n            }\n        });\n    }\n\n    function increaseMonth(){\n        vm.selectedMonth++;\n        if(vm.selectedMonth >= 12){\n            vm.selectedMonth = 0;\n            vm.selectedYear++;\n            recalcDaysInMonths();\n        }\n    }\n    \n    function decreaseMonth(){\n        vm.selectedMonth--;\n        if(vm.selectedMonth < 0){\n            vm.selectedMonth = 11;\n            vm.selectedYear--;\n            recalcDaysInMonths();\n        }\n    }\n\n    function shouldDisplayDiscount(discount, day){\n        //console.log(vm.selectedYear + \" - \" +  discount.startDate.getFullYear());\n        if(vm.selectedYear === discount.startDate.getFullYear() || vm.selectedYear === discount.endDate.getFullYear()){\n            //console.log(vm.selectedMonth + \" - \" +  discount.startDate.getMonth());\n            if(vm.selectedMonth === discount.startDate.getMonth() || vm.selectedMonth === discount.endDate.getMonth()){\n                //console.log(day.index + \" - \" +  discount.startDate.getDate());\n                if(day.index >= discount.startDate.getDate() && day.index <= discount.endDate.getDate()){\n                    return true;\n                }\n                return false;\n            }\n            return false;\n        }\n        return false;\n    }\n\n    function daysBetween(startDate, endDate) {\n        var millisecondsPerDay = 24 * 60 * 60 * 1000;\n        return (endDate - startDate) / millisecondsPerDay;\n    }\n\n    \n    function shouldSkipRepeat(discount, day){\n        if(shouldDisplayDiscount(discount, day)){\n            if(day.index > discount.startDate.getDate() && day.index <= discount.endDate.getDate()){\n                return true;\n            }\n        }\n\n        return false;        \n    }\n\n    function getColspanForDiscount(discount, day){\n        var colspan = 1;\n\n        if(shouldDisplayDiscount(discount, day)){\n            if(discount.startDate.getDate() === day.index){\n                colspan += daysBetween(discount.startDate, discount.endDate);\n            }\n        }\n\n        return colspan;\n    }\n\n    function leapYear(year)\n    {\n        return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);\n    }\n}\n\nangular.module('discountManagement.discounts', ['discounts.api', 'discounts.discount'])\n    .config(stateConfig)\n    .controller('DiscountsController', DiscountsController);\n","// @ngInject\nfunction EconomyApiService($window, DS, DSHttpAdapter, ResourcesService, $q, $document) {\n\n    var endpoint = 'economy';\n\n    return {\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getAccountConfigMessages: ResourcesService.apiFactory.get(endpoint + '/missingaccountsettings'),\n        downloadSIEFile: downloadSIEFile\n    };\n\n    function downloadSIEFile(fromDate, toDate, organizationNumber) {\n        var deferred = $q.defer();\n        var url = $window.URL || $window.webkitURL;\n\n        var fromDateString = fromDate.getFullYear() + '-' + _.padStart(fromDate.getMonth() + 1 + '', 2, '0') + '-' + _.padStart(fromDate.getDate(), 2, '0');\n        var toDateString = toDate.getFullYear() + '-' + _.padStart(toDate.getMonth() + 1 + '', 2, '0') + '-' + _.padStart(toDate.getDate(), 2, '0');\n\n        var params = {\n            startDate: fromDateString,\n            endDate: toDateString,\n            organizationNumber: organizationNumber\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/siefile', {params: params}).then(function (response) {\n            var blob = new Blob([response.data], { type: 'text/plain' });\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, \"SIE.SI\");\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n                var downloadUrl = url.createObjectURL(blob);\n                a.href = downloadUrl;\n                a.download = \"SIE.SI\";\n                a.click();\n                a.remove();\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n}\n\nangular.module('economy.api', [])\n  .factory('EconomyApiService', EconomyApiService);\n","angular\n    .module('main.economy', ['economy.api','economy.siefileexport']);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('main.siefileexport', {\n        url: '/sie',\n        templateUrl: 'main/economy/siefileexport/siefileexport.tpl.html',\n        controller: 'SieFileExportController as vm',\n        resolve: {\n            locations: locationsResolver,\n            accountMessages: accountMessagesResolver\n        }\n    });\n}\n\n// @ngInject\nfunction locationsResolver(EconomyApiService) {\n    return EconomyApiService.getLocations();\n}\n\n// @ngInject\nfunction accountMessagesResolver(EconomyApiService) {\n    return EconomyApiService.getAccountConfigMessages();\n}\n\n// @ngInject\nfunction SieFileExportController($interval, EconomyApiService, loadSpinnerService, locations, accountMessages) {\n    var vm = this;\n\n    vm.fromDate = new Date();\n    vm.toDate = new Date();\n    vm.organizationNumbers = [];\n    vm.organizationNumber = \"\";\n    vm.accountMessages = accountMessages;\n\n    vm.fetchSieFile = fetchSieFile;\n\n    activate();\n\n    function activate() {\n        _.forEach(locations, function(location) {\n            if (!_.find(vm.organizationNumbers, function (num) { return num === location.organizationNumber; })) {\n                vm.organizationNumbers.push(location.organizationNumber);\n            }\n        });\n    }\n\n    function fetchSieFile() {\n        loadSpinnerService.start('mainSpinner');\n        var orgNr = (vm.organizationNumber !== \"\") ? vm.organizationNumber : \"\";\n        EconomyApiService.downloadSIEFile(vm.fromDate, vm.toDate, vm.organizationNumber).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n}\n\nangular\n    .module('economy.siefileexport', [])\n    .config(stateConfig)\n    .controller('SieFileExportController', SieFileExportController);\n\n\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('main', {\n        parent: 'app',\n        abstract: true,\n        url: '',\n        views: {\n            \"app-content\": {\n                templateUrl: 'main/main.tpl.html',\n                controller: 'MainController as vm'\n            }\n        },\n        data: { claims: ['user']}\n    });\n}\n// @ngInject\nfunction MainController($rootScope, $state, $location, currentUser, AuthService, UserTimeStampingDialogService, TimeStampingApiService, $window, NavigationApiService, VersionService, TimedOutLoginDialogService, ToasterService) {\n    var vm = this;\n\n    $rootScope.currentUser = currentUser;\n\n    vm.currentUserClaims = currentUser.claims;\n    vm.currentLicense = currentUser.licenseConfig;\n    vm.menuNodes = [];\n    vm.latestTimeStamp = {};\n    vm.loginDialog = false;\n    vm.tenant = currentUser.tenant;\n\n    vm.currentUser = currentUser;\n\n    vm.logOut = AuthService.logOut;\n    vm.openTimeStampingModal = openTimeStampingModal;\n    vm.hasVersionChanged = VersionService.hasVersionChanged;\n    vm.isReloading = false;\n    vm.reload = reload;\n    vm.currentTenantLogoPath = \"\";\n    vm.supportViewOptionEnabled = cleverAppsLoggedIn();\n\n    activate();\n\n    function activate() {\n       NavigationApiService.getNavigationNodes().then(function(nodes) {vm.menuNodes = nodes;});\n\n        updateLatestTimeStamp();\n      $(document).on('click', '[ui-toggle]', function (e) {\n          e.preventDefault();\n          var eventTarget = $(e.target);\n          var result = eventTarget.attr('ui-toggle') || (eventTarget = eventTarget.closest('[ui-toggle]'));\n          var $target = $(eventTarget.attr('target')) || eventTarget;\n          $target.toggleClass(eventTarget.attr('ui-toggle'));\n      });\n        console.log($rootScope.currentUser.tenant.tenantStringIdentifier.toLowerCase());\n        $rootScope.$on('Version.Changed', function() {\n            vm.hasVersionChanged = true;\n        });\n\n        var tenantStringIdentifier = $rootScope.currentUser.tenant.tenantStringIdentifier.toLowerCase();\n\n        if(isZalando(tenantStringIdentifier)) tenantStringIdentifier = \"zalando\";\n\n        if(isFutureOfRetail(tenantStringIdentifier)) tenantStringIdentifier = \"for\";\n\n        if(isYabie(tenantStringIdentifier)) tenantStringIdentifier = \"yabie\";\n\n        vm.currentTenantLogoPath = \"./assets/images/\" + tenantStringIdentifier + \"_logo.png\";\n        VersionService.start();\n\n        queueRefreshSession();\n\n        //var t=setInterval(checkToken, 20000);\n    }\n\n    function cleverAppsLoggedIn() {\n        return $rootScope.currentUser.firstName === \"CleverApps\" &&\n            ($rootScope.currentUser.lastName === \"Superuser\" ||\n                $rootScope.currentUser.lastName === \"Support\" ||\n                $rootScope.currentUser.lastName === \"Thomas Sverker\") &&\n            ($rootScope.currentUser.username === \"superuser\" ||\n                $rootScope.currentUser.username === \"support\" ||\n                $rootScope.currentUser.username === \"thsv\");\n    }\n\n    // For our Zalando Customers\n    function isZalando(tenantStringIdentifier) {\n        var currentUrl = $location.$$absUrl.toLowerCase();\n        return currentUrl.includes(\"zalando\");\n        //return (tenantStringIdentifier === \"streetone\" ||\n        //        tenantStringIdentifier === \"amazing\" ||\n        //        tenantStringIdentifier === \"urbanmodern\" ||\n        //        tenantStringIdentifier === \"casualwoman\")\n    }\n\n    // For our FutureOfRetail Customers\n    function isFutureOfRetail(tenantStringIdentifier) {\n        var currentUrl = $location.$$absUrl.toLowerCase();\n        return currentUrl.includes(\"for\");\n        //return (tenantStringIdentifier === \"nordicoutlet\")\n    }\n\n    // For our Yabie customers\n    function isYabie(tenantStringIdentifier) {\n        var currentUrl = $location.$$absUrl.toLowerCase();\n        return currentUrl.includes(\"yabie\");\n    }\n\n    function reload() {\n        vm.isReloading = true;\n        VersionService.reload();\n    }\n\n    function openTimeStampingModal() {\n        UserTimeStampingDialogService.showDialog().finally(function() {\n            updateLatestTimeStamp();\n        });\n    }\n\n    function updateLatestTimeStamp() {\n        TimeStampingApiService.getLatestTimeStamps(1).then(function(response) {\n            if (response.data.length !== 0) {\n                vm.latestTimeStamp = response.data[0];\n            }\n        }, function(error) {\n            console.log(error);\n        });\n    }\n\n    function queueRefreshSession() {\n        if (vm.loginDialog) return;\n\n        AuthService.getTokenExpired().then(function(response) {\n            var expireDate = response.data.expireDate;\n\n            if(expireDate !== null) {\n                var timeUntillExpire = Date.parse(expireDate)-Date.parse(new Date());\n                console.log('Token will expire in: ' + timeUntillExpire);\n                // Displays Dialog 30 minutes before token expires\n                var timeUntillShowDialog = timeUntillExpire-(1000 * 60 * 30); //30 minutes\n                setTimeout(function() {\n                    showRefreshSessionDialog(expireDate);\n                }, timeUntillShowDialog);\n            }\n        });\n    }\n\n    function showRefreshSessionDialog(tokenExpireDate) {\n        vm.loginDialog = true;\n        TimedOutLoginDialogService.showDialog(vm.currentUser.username, tokenExpireDate).then(function(sessionRefreshed) {\n            if(sessionRefreshed) {\n                vm.loginDialog = false;\n                queueRefreshSession();\n            }\n            else {\n                vm.logOut();\n                $state.reload();\n            }\n        }, function(error) {\n            ToasterService.showError(error.data.message);\n        }).finally(function() {\n        });\n    }\n}\n\nangular\n    .module('app.main', [\n        'main.base',\n        'main.contacts',\n        'main.product',\n        'main.order',\n        'main.customerorder',\n        'main.resellerorder',\n        'main.customerinvoice',\n        'main.stock',\n        'main.analysis',\n        'main.stocklogistics',\n        'main.budget',\n        'main.timestamp',\n        'main.economy',\n        'main.sales',\n        'main.support',\n        'timedOutLoginDialog.timedOutLoginDialog',\n        'main.discountManagement'\n    ])\n    .config(stateConfig)\n    .controller('MainController', MainController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order', {\n        url: '/order',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/order/order.tpl.html',\n        controller: 'MainOrderController as vm'\n    });\n}\n\n// @ngInject\nfunction MainOrderController() {\n    var vm = this;\n}\n\nangular\n    .module('main.order', [\n        'orderarticles.api',\n        'orders.api',\n        'orders.api2',\n        'reports.api2',\n        'order.ordersearch',\n        'order.orderdelivery',\n        'order.purchaseorder',\n        'order.purchaseordersearch',\n        'order.service',\n        'order.purchaseorderanalysis',\n        'purchaseorderanalysis.api',\n        'order.transitReports',\n        'order.intrastatReports',\n        'order.deliveryPlanning',\n        'order.deliveryPlanning.editDeliveryPlanningDialog',\n        'order.orderRowCommentDialog'\n    ])\n    .config(stateConfig)\n    .controller('MainOrderController', MainOrderController);\n","// @ngInject\nfunction OrderRowCommentDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(orderArticle) {\n\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: true,\n            controller: 'OrderRowCommentDialogController as vm',\n            templateUrl: 'main/order/orderDialogs/orderRowCommentDialog/orderRowCommentDialog.tpl.html',\n            size: 'xs'\n        };\n\n        modalDefaults.resolve = {\n            orderArticle: function () {\n                return orderArticle;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction OrderRowCommentDialogController($uibModalInstance, orderArticle) {\n    var vm = this;\n\n    vm.orderArticle = orderArticle;\n    vm.closeModal = closeModal;\n    vm.comment = orderArticle.orderRows[0].comment;\n\n    function closeModal(keepChanges) {\n        if(keepChanges){\n            _.forEach(orderArticle.orderRows, function(row){\n                row.comment = vm.comment;\n            });\n\n            $uibModalInstance.close(orderArticle.orderRows);\n        }\n        else\n            $uibModalInstance.close(false);\n    }\n}\n\nangular\n    .module('order.orderRowCommentDialog', [])\n    .service('OrderRowCommentDialogService', OrderRowCommentDialogService)\n    .controller('OrderRowCommentDialogController', OrderRowCommentDialogController);\n","// @ngInject\nfunction OrderService() {\n\n\n    return {\n        canShipOrder: canShipOrder,\n        canDeleteOrder: canDeleteOrder,\n        canCopyOrder: canCopyOrder,\n        canEditOrder: canEditOrder,\n        canDeliverOrder: canDeliverOrder,\n        canApproveOrder : canApproveOrder,\n        isDeliveryPlanningEnabled: isDeliveryPlanningEnabled,\n        canPartDeliverOrder: canPartDeliverOrder,\n        updateCurrencyOnOrderRows: updateCurrencyOnOrderRows,\n        hasQuantity: hasQuantity,\n        isInternalOrder: isInternalOrder,\n        createOrderRowsFromArticleVariants: createOrderRowsFromArticleVariants,\n        canConfirmDeliveryPlan: canConfirmDeliveryPlan,\n        canUndoConfirmDeliveryPlan: canUndoConfirmDeliveryPlan,\n        canChangePredictedDate: canChangePredictedDate,\n        isLeadTimeDeliveryPlan: isLeadTimeDeliveryPlan,\n    };\n\n    function hasLink(links, rel) {\n        var link = _.find(links, function (o) {\n            return o.rel === rel;\n        });\n\n        if (link) {\n            return true;\n        }\n\n        return false;\n    }\n    function isLeadTimeDeliveryPlan(links) {\n        return hasLink(links, 'is_lead_time');\n    }\n    function canConfirmDeliveryPlan(links) {\n        return hasLink(links, 'confirmed');\n    }\n    function canUndoConfirmDeliveryPlan(links) {\n        return hasLink(links, 'undo_confirmed');\n    }\n    function canChangePredictedDate(links) {\n        return hasLink(links, 'predicted_changeable');\n    }\n\n    function canDeliverOrder(links) {\n        return hasLink(links, 'deliver');\n    }\n\n    function isDeliveryPlanningEnabled(links) {\n        return hasLink(links, 'deliveryplan');\n    }\n\n    function canEditOrder(links) {\n        return hasLink(links, 'update');\n    }\n\n    function canDeleteOrder(links) {\n        return hasLink(links, 'delete');\n    }\n\n    function canApproveOrder(links) {\n        return hasLink(links, 'approve');\n    }\n\n    function canCopyOrder(links) {\n        return hasLink(links, 'copy');\n    }\n\n    function canPartDeliverOrder(links) {\n        return hasLink(links, 'part_deliver');\n    }\n\n    function canShipOrder(links) {\n        return hasLink(links, 'ship');\n    }\n\n    function isInternalOrder(order) {\n        return order.orderType.orderSystemType === 'internal';\n    }\n\n    function updateCurrencyOnOrderRows(orderArticles, currency) {\n        _.forEach(orderArticles, function (orderArticle) {\n            _.forEach(orderArticle.orderRows, function (row) {\n                row.purchaseCost = (row.originalPurchasePrice * (1 - row.discountPercent / 100)) * (1 + (row.standardCostAddPercent / 100)) * currency;\n            });\n        });\n    }\n\n    function hasQuantity(orderArticles) {\n        var totalQuantity = 0;\n        _.forEach(orderArticles, function (orderArticle) {\n            _.forEach(orderArticle.orderRows, function (row) {\n               totalQuantity += row.quantity;\n            });\n        });\n\n        return (totalQuantity > 0);\n    }\n\n    function createOrderRowsFromArticleVariants(order, articleVariants, orderArticle, stocks) {\n        var orderRows = [];\n\n        var currencyRate = order.currencyRate;\n\n        if (order.company && order.company.id) {\n            var companyId = order.company.id;\n        }\n\n        var articleVariantIds = [];\n        _.forEach(articleVariants, function(av) { articleVariantIds.push(av.id); });\n        var locationIds = [];\n        if (order.fromLocation) {\n            locationIds.push(order.fromLocation.id);\n        }\n\n        var orderRowWithComment = _.find(orderArticle.orderRows, function(row){\n            return row.comment !== \"\" || row.comment !== undefined || row.comment !== null;\n        })\n        var orderRowComment = orderRowWithComment ? orderRowWithComment.comment : undefined;\n\n        _.forEach(articleVariants, function(articleVariant) {\n            var supplierPrice;\n\n            var orderRow = {\n                id: 0,\n                articleVariant: articleVariant,\n                destination: (order.orderType.orderSystemType.toLowerCase() !== 'return') ? order.destination : order.fromLocation,\n                quantity: 0,\n                deliveryRows: [],\n                summarizedDeliveredQuantity: 0,\n                orderStatus: { orderSystemStatus: 'Created' },\n                status: 'Created',\n                comment: orderRowComment,\n            };\n\n            if (articleVariant.supplierPrices != null && articleVariant.supplierPrices.length > 0) {\n                supplierPrice = _.find(articleVariant.supplierPrices, function(sp) { return sp.companyId === companyId; });\n            }\n\n            if (supplierPrice === undefined) {\n                // we only have the price in SEK, convert it back to the order currency.\n                //orderRow.purchaseCost = articleVariant.purchaseCost;\n                orderRow.discountPercent = 0;\n                orderRow.standardCostAddPercent = 0;\n                orderRow.effectivePurchasePrice = articleVariant.purchaseCost / ((100 + orderRow.standardCostAddPercent) / 100);\n                orderRow.originalPurchasePrice = orderRow.effectivePurchasePrice / ((100 - orderRow.discountPercent) / 100);\n                orderRow.shippingCost = 0;\n                orderRow.customsPercent = 0;\n                orderRow.otherCosts = 0;\n                // calculate the total row sum..\n                orderRow.purchaseCost = getTotalRowSum(orderRow, currencyRate);\n            } else if (supplierPrice.purchasePrice === 0) {\n                // we only have the price in SEK, convert it back to the order currency.\n                //orderRow.purchaseCost = articleVariant.purchaseCost;\n                orderRow.discountPercent = 0;\n                orderRow.standardCostAddPercent = 0;\n                orderRow.effectivePurchasePrice = articleVariant.purchaseCost / ((100 + orderRow.standardCostAddPercent) / 100);\n                orderRow.originalPurchasePrice = orderRow.effectivePurchasePrice / ((100 - orderRow.discountPercent) / 100);\n                orderRow.shippingCost = 0;\n                orderRow.customsPercent = 0;\n                orderRow.otherCosts = 0;\n                // calculate the total row sum..\n                orderRow.purchaseCost = getTotalRowSum(orderRow, currencyRate);\n            } else {\n                // convert forwards to SEK\n                orderRow.originalPurchasePrice = supplierPrice.purchasePrice;\n                orderRow.standardCostAddPercent = supplierPrice.standardCostAddPercent;\n                orderRow.discountPercent = supplierPrice.discountPercent;\n                orderRow.effectivePurchasePrice = orderRow.originalPurchasePrice * ((100 - orderRow.discountPercent) / 100);\n                // orderRow.purchaseCost = (orderRow.effectivePurchasePrice + ((orderRow.standardCostAddPercent) / 100) * orderRow.effectivePurchasePrice) * currencyRate;\n                orderRow.shippingCost = supplierPrice.shippingCost;\n                orderRow.customsPercent = supplierPrice.customsPercent;\n                orderRow.otherCosts = supplierPrice.otherCosts;\n                orderRow.purchaseCost = getTotalRowSum(orderRow, currencyRate);\n            }\n\n            if (order.destination && order.destination.resellerPriceList && order.destination.resellerPriceList.priceListItems) {\n                //Prices on the reseller price list trumps all other prices\n                var resellerPriceListCurrencyRate = order.destination.resellerPriceList.currencyRate;\n                var resellerPriceListItem = _.find(order.destination.resellerPriceList.priceListItems, function(pli) {\n                    return pli.articleVariantId === articleVariant.id;\n                });\n                if (resellerPriceListItem) {\n                    orderRow.purchaseCost = resellerPriceListItem.price;\n                    orderRow.discountPercent = resellerPriceListItem.discountPercent;\n                    orderRow.standardCostAddPercent = resellerPriceListItem.standardCostAddPercent;\n                    orderRow.effectivePurchasePrice = (resellerPriceListItem.price) / ((100 + orderRow.standardCostAddPercent) / 100);\n                    orderRow.originalPurchasePrice = orderRow.effectivePurchasePrice / ((100 - orderRow.discountPercent) / 100);\n                    orderRow.shippingCost = resellerPriceListItem.shippingCost;\n                    orderRow.customsPercent = resellerPriceListItem.customsPercent;\n                    orderRow.otherCosts = resellerPriceListItem.otherCosts;\n                }\n            }\n\n            // Stock purchase cost trumps even reseller prices for internal orders\n            if (order.orderType.orderSystemType.toLowerCase() === 'internal') {\n                var stock = _.find(stocks, function(st) { return st.articleVariant.id === articleVariant.id && st.location.id === order.fromLocation.id; });\n                if (stock !== undefined) {\n                    orderRow.purchaseCost = stock.purchaseCost;\n                    orderRow.discountPercent = 0;\n                    orderRow.standardCostAddPercent = 0;\n                    orderRow.effectivePurchasePrice = stock.purchaseCost;\n                    orderRow.originalPurchasePrice = stock.purchaseCost;\n                    orderRow.shippingCost = 0;\n                    orderRow.customsPercent = 0;\n                    orderRow.otherCosts = 0;\n                }\n            }\n\n            orderRows.push(orderRow);\n        });\n\n        return orderRows;\n\n        function calculateEffectivePurchasePrice(originalPurchasePrice, discountPercent) {\n            var discountAmount = (originalPurchasePrice * discountPercent / 100);\n            return originalPurchasePrice - discountAmount;\n        }\n    \n        function getTotalRowSum(rowItem, currencyRate) {\n            var pp = calculateEffectivePurchasePrice(rowItem.originalPurchasePrice, rowItem.discountPercent);\n            var ppCurrencyConverted = pp * currencyRate;\n            var customsAmount = (ppCurrencyConverted + rowItem.shippingCost) * (rowItem.customsPercent / 100);\n            var standardCostAddAmount = (ppCurrencyConverted + rowItem.shippingCost + customsAmount + rowItem.otherCosts) * (rowItem.standardCostAddPercent / 100);\n    \n            var result = ppCurrencyConverted + rowItem.shippingCost + customsAmount + rowItem.otherCosts + standardCostAddAmount;\n    \n            return result;\n        }\n    }\n}\n\nangular\n    .module('order.service', [])\n    .factory('OrderService', OrderService);\n","// @ngInject\nfunction OrderArticlesApiService($q, DS, ResourcesService) {\n\n    return {\n        getById: getById\n    };\n\n    function getById(id) {\n        var deferred = $q.defer();\n\n        DS.find('orderarticle', id, { bypassCache: true }).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('orderarticles.api', [])\n    .factory('OrderArticlesApiService', OrderArticlesApiService);\n","angular.module('components.caBarcodeScanningInput', [])\n    .component('caBarcodeScanningInput', {\n        templateUrl: 'main/order/orderdelivery/components/barcodescanninginput.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            onOrderArticlesRetrieved: '&',\n            order: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($translate, OrdersApiService, ToasterService, loadSpinnerService, BarcodeService, confirmationDialogService) {\n    var vm = this;\n\n    vm.scannedBarcodes = '';\n\n    vm.getArticlesAndQuantites = getArticlesAndQuantites;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    function onInit() {\n        var fileInputDomElement = $(\"#xlf\")[0];\n\n        fileInputDomElement.addEventListener('change', handleFile, false);\n        function handleFile(e) {\n            var files = e.target.files;\n            var i, f;\n            for (i = 0, f = files[i]; i !== files.length; ++i) {\n                var reader = new FileReader();\n\n                reader.onload = onLoadFunction;\n                loadSpinnerService.start('mainSpinner');\n                reader.readAsArrayBuffer(f);\n            }\n\n            function onLoadFunction(e) {\n                try {\n                    var data = \"\";\n                    var splitData = [];\n                    var bytes = new Uint8Array(e.target.result);\n                    var length = bytes.byteLength;\n                    for (var i = 0; i < length; i++) {\n                        data += String.fromCharCode(bytes[i]);\n                    }\n                    // // linebreak for Windows\n                    // var dos = data.split('\\r\\n');\n                    // // linebreak for Mac OS \n                    // var unix = data.split('\\n');\n                    // var unixNumOfItems = getNumberOfItemSets(unix);\n                    // var dosNumOfItems = getNumberOfItemSets(dos);\n\n                    // if (unix.length > 1) {\n                    //     splitData = unix;\n                    // }\n                    // if (dos.length > 1) {\n                    //     splitData = dos;\n                    // }\n\n                    var splitData = data.split(/\\r?\\n|\\r/g)\n                    _.forEach(splitData, function (textRow) {\n                        var splitRow = textRow.split(',');\n                        if (splitRow[0].toLowerCase() === 'inventering' || splitRow[0].toLowerCase() === 'internorder') {\n                            for (var i = 0; i < splitRow[2]; i++) {\n                                vm.scannedBarcodes += splitRow[1] + \"\\n\";\n                            }\n                        }\n                    });\n                } catch (error) {\n                    console.log(error);\n                } finally {\n                    loadSpinnerService.stop('mainSpinner');\n                }\n            }\n        }\n    }\n    function onChanges() {\n\n    }\n    function onDestroy() {\n\n    }\n    function getNumberOfItemSets(splitData) {\n\n        var lenInventory = splitData[0].toLowerCase().split('inventering').length;\n        var lenInternOrder = splitData[0].toLowerCase.splitData(\"internorder\").length;\n        if (lenInventory > 0) {\n            return splitData.length;\n        }\n        else if (lenInternOrder > 0) {\n            return splitData.length;\n        }\n        return 0;\n\n    }\n    function getArticlesAndQuantites() {\n        var barcodesArray = [];\n\n        vm.scannedBarcodes = BarcodeService.formatBarcodesString(vm.scannedBarcodes);\n\n        _.forEach(vm.scannedBarcodes.split('\\n'), function (barcode) {\n            barcodesArray.push(BarcodeService.cleanBarcode(barcode));\n        });\n\n        var companyId = (vm.order.company !== undefined && \n            vm.order.orderType.orderSystemType !== 'internal') ? vm.order.company.id : 0;\n\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.getOrderArticlesForBarcodes(barcodesArray, companyId, vm.order.currency.id, vm.order.currencyRate).then(function (response) {\n            //If backend returns any unfound barcodes present them to the user to decide how to proceed\n            if (response.notFoundBarcodes && response.notFoundBarcodes.length > 0) {\n                var message = $translate.instant('order.scanNotAllBarcodesCouldBeAdded') + '.<br><br>' +\n                    '<table class=\"table\" style=\"width:100%\">' +\n                    '<thead><tr><th>' + $translate.instant('article.barcode') + '</th><th>' + $translate.instant('order.scanFailureReason') + '</th></tr>' +\n                    '<tbody>';\n                _.forEach(response.notFoundBarcodes, function (nfb) {\n                    if (nfb.reasonCode === 'order.scanErrorBarcodeOnAnotherSupplier') {\n                        message += '<tr><td>' + nfb.barcode + '</td><td>' + $translate.instant(nfb.reasonCode) + ': ' + nfb.supplierName + '</td></tr>';\n                    } else {\n                        message += '<tr><td>' + nfb.barcode + '</td><td>' + $translate.instant(nfb.reasonCode) + '</td></tr>';\n                    }\n                });\n                message += '</tbody></table><br><br>' +\n                    $translate.instant('order.scanAreYouSureYouWantToContinue') + '? ' +\n                    response.articles.length + ' ' + $translate.instant('common.of') + ' ' +\n                    (response.articles.length + response.notFoundBarcodes.length) + ' ' +\n                    $translate.instant('order.scanWillBeAdded') + '.';\n\n                confirmationDialogService.showDialog(message, undefined, 'lg').then(function (result) {\n                    if (result === true) {\n                        handleRetrievedOrderArticles(response.articles);\n                    }\n                });\n            } else {\n                handleRetrievedOrderArticles(response.articles);\n            }\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function handleRetrievedOrderArticles(articles) {\n        if (vm.order.orderType.orderSystemType.toLowerCase() === 'internal' && vm.order.fromLocation && vm.order.fromLocation.id) {\n            var orderRows = [];\n            var articleVariantIds = [];\n            var locationIds = [vm.order.fromLocation.id];\n            _.forEach(articles, function (orderArticle) {\n                _.forEach(orderArticle.orderRows, function (orderRow) {\n                    orderRows.push(orderRow);\n                    articleVariantIds.push(orderRow.articleVariant.id);\n                });\n            });\n            OrdersApiService.getStocksForArticleVariants(articleVariantIds, locationIds).then(function (stocks) {\n                _.forEach(stocks.data, function (stock) {\n                    var orderRow = _.find(orderRows, function (orderRow) {\n                        return orderRow.articleVariant.id === stock.articleVariant.id;\n                    });\n\n                    if (orderRow) {\n                        orderRow.originalPurchasePrice = stock.purchaseCost;\n                        orderRow.effectivePurchasePrice = stock.purchaseCost;\n                        orderRow.purchaseCost = stock.purchaseCost;\n                    }\n\n                });\n                vm.onOrderArticlesRetrieved({ orderArticles: articles });\n\n            }, function (error) { ToasterService.showError(error.message); });\n        } else {\n            vm.onOrderArticlesRetrieved({ orderArticles: articles });\n        }\n\n        vm.scannedBarcodes = '';\n    }\n}\n","angular.module('components.caOrderArticles', [])\n    .component('caOrderArticles', {\n        templateUrl: 'main/order/orderdelivery/components/orderarticles.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orderChangeCount: '=',\n            isModifying: '<',\n            order: '=',\n            disabled: '<',\n            onArticleSelected: '&',\n            links: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $rootScope, $window, OrderService, loadSpinnerService, OrdersApiService, Rms2OrdersApiService, OrderRowCommentDialogService, ToasterService, $translate) {\n    var vm = this;\n\n    var grid = {};\n    var lastDeliveredOrderArticle = {};\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.filteredOrderArticles = [];\n    vm.hiddenDeliveredRows = false;\n    vm.haveOrderArticlePurchaseCostClaim = havePurchaseCostClaim();\n    vm.displayPrices = true;\n    vm.ongoingRequest = false;\n    vm.sortContentBy = undefined;\n    vm.sortContentReverse = undefined;\n\n    vm.restCurrentOrderArticle = false;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.viewOrderArticle = viewOrderArticle;\n    vm.absolute = absolute;\n    vm.captureGrid = captureGrid;\n    vm.hideDeliveredRows = hideDeliveredRows;\n    vm.isRowDelivered = isRowDelivered;\n    vm.updatedQuantity = updatedQuantity;\n    vm.updatedQuantityToDeliver = updatedQuantityToDeliver;\n    vm.canDeliverIn = canDeliverIn;\n    vm.anyNonVariantArticles = anyNonVariantArticles;\n    vm.getCurrentDeliveryQuantity = getCurrentDeliveryQuantity;\n    vm.getTotalQuantityLeftToDeliver = getTotalQuantityLeftToDeliver;\n    vm.deliverNonVariantArticles = deliverNonVariantArticles;\n    vm.isSingleVariantArticle = isSingleVariantArticle;\n    vm.isMultipleVariantArticle = isMultipleVariantArticle;\n    vm.deliver = deliver;\n    vm.isDelivered = isDelivered;\n    vm.hasOnlyOneOrderRow = hasOnlyOneOrderRow;\n    vm.isRowCreated = isRowCreated;\n    vm.setRestFlag = setRestFlag;\n    vm.isAllowedToChangeQuantity = isAllowedToChangeQuantity;\n\n    vm.shouldBeTreatedAsNonVariant = shouldBeTreatedAsNonVariant;\n    vm.shouldBeTreatedAsVariant = shouldBeTreatedAsVariant;\n\n    vm.openOrderRowCommentDialog = openOrderRowCommentDialog;\n\n    function isAllowedToChangeQuantity(){\n        var hasOrderId = vm.order.id !== undefined && vm.order.id > 0;\n        return !hasOrderId || vm.order.systemStatus === \"created\"\n    }\n\n    function hasOnlyOneOrderRow(orderArticle) {\n        return orderArticle.orderRows.length === 1;\n    }\n\n    function shouldBeTreatedAsNonVariant(orderArticle) {\n        return vm.isSingleVariantArticle(orderArticle.article) || (!vm.isModifying && vm.hasOnlyOneOrderRow(orderArticle))\n    }\n\n    function shouldBeTreatedAsVariant(orderArticle) {\n        return !shouldBeTreatedAsNonVariant(orderArticle);\n    }\n\n    function onInit() {\n        vm.filteredOrderArticles = vm.order.orderArticles;\n\n        if (vm.order.orderArticles.length === 1 && vm.order.orderArticles[0].article && vm.shouldBeTreatedAsVariant(vm.order.orderArticles[0])) {\n            viewOrderArticle(vm.order.orderArticles[0].article);\n        }\n\n        $scope.$watch(function() { return vm.orderChangeCount; }, function() {\n            recalculateAggregatedData();\n            hideDeliveredRows();\n        });\n\n        setInitialPriceDisplayChoice();\n        setInitialQuantitiesToDeliver();\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    function isDelivered(orderArticle) {\n        return _.every(orderArticle.orderRows, function (orderRow) {\n            return orderRow.systemStatus === 'delivered';\n        });\n    }\n\n    function setRestFlag(orderArticle) {\n        if ((orderArticle.orderRows[0].quantityToDeliver + orderArticle.summarizedDeliveredQuantity) >= orderArticle.orderRows[0].quantity) {\n            orderArticle.restOrderArticle = false;\n        }\n    }\n\n    function setInitialQuantitiesToDeliver() {\n        _.forEach(vm.order.orderArticles, function(orderArticle) {\n            setNextQuantityToDeliver(orderArticle);\n        });\n    }\n\n    function setNextQuantityToDeliver(orderArticle) {\n        if (isMultipleVariantArticle(orderArticle)) {\n            return true;\n        }\n        orderArticle.restOrderArticle = false;\n        orderArticle.deliveredDate = Date.now();\n        _.forEach(orderArticle.orderRows, function(orderRow) {\n            var deliveredQuantity = _.sumBy(orderRow.deliveryRows, function(deliveryRow) {\n                if (deliveryRow.systemStatus === \"delivered\" && deliveryRow.deliveryRowType === \"deliveryIn\") {\n                    return deliveryRow.quantity;\n                }\n            });\n            if (deliveredQuantity === undefined) {\n                deliveredQuantity = 0;\n            }\n            orderRow.quantityToDeliver = Math.max(orderRow.quantity - deliveredQuantity, 0);\n        });\n    }\n\n    function getCurrentDeliveryQuantity() {\n        var qty = _.sumBy(vm.order.orderArticles, function(orderArticle) {\n            return _.sumBy(orderArticle.orderRows, function(orderRow) {\n                return orderRow.quantityToDeliver;\n            });\n        });\n        return qty;\n    }\n\n    function getTotalQuantityLeftToDeliver() {\n        var sum = 0;\n        _.forEach(vm.order.orderArticles, function (oa) {\n            _.forEach(oa.orderRows, function (r) {\n                sum += r.quantity;\n            });\n        })\n        return sum;\n    }\n\n    function deliver(orderArticle)\n    {\n        if (vm.ongoingRequest) {\n            console.log(\"vm.ongoingRequest: \" + vm.ongoingRequest);\n            return;\n        }\n\n        vm.ongoingRequest = true;\n        lastDeliveredOrderArticle = orderArticle;\n        loadSpinnerService.start('mainSpinner');\n\n        var request = {\n            orderId: vm.order.id,\n            deliveringUserId: $rootScope.currentUser.id,\n            lineItems: []\n        }\n\n        request.lineItems.push({\n            quantity: orderArticle.orderRows[0].quantityToDeliver,\n            lineNumber: orderArticle.orderRows[0].orderLineNumber,\n            date: parseDate(orderArticle.deliveredDate),\n            restDelivery: orderArticle.restOrderArticle\n        });\n\n        var orderSystemType = vm.order.orderType.orderSystemType;\n        \n        switch(orderSystemType) {\n            case 'store':\n                deliverStoreOrder(request);\n                break;\n            case 'automatic':\n                deliverAutoOrder(request);\n                break;\n            case 'internal':\n                deliverInternalOrder(request);\n                break;\n            case 'automaticInternal':\n                deliverAutoInternalOrder(request);\n                break;\n            case 'return':\n                deliverReturnOrder(request);\n                break;\n            default:\n                ToasterService.showError(\"Order type not recognized\")\n                throw new Error(\"Order type not recognized\", orderSystemType);\n        }\n\n        function deliverStoreOrder(request) {\n            Rms2OrdersApiService.deliverStoreOrder(request).then(function(response) {\n                ToasterService.showSuccess($translate.instant(\"common.done\"));\n                reloadOrder();\n            },function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                vm.ongoingRequest = false;\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n\n        function deliverAutoOrder(request) {\n            Rms2OrdersApiService.deliverAutoOrder(request).then(function(response) {\n                ToasterService.showSuccess($translate.instant(\"common.done\"));\n                reloadOrder();\n            },function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                vm.ongoingRequest = false;\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n\n        function deliverInternalOrder(request) {\n            Rms2OrdersApiService.deliverInternalOrder(request).then(function(response) {\n                ToasterService.showSuccess($translate.instant(\"common.done\"));\n                reloadOrder();\n            },function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                vm.ongoingRequest = false;\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n\n        function deliverAutoInternalOrder(request) {\n            Rms2OrdersApiService.deliverAutoInternalOrder(request).then(function(response) {\n                ToasterService.showSuccess($translate.instant(\"common.done\"));\n                reloadOrder();\n            },function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                vm.ongoingRequest = false;\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n\n        function deliverReturnOrder(request) {\n            Rms2OrdersApiService.deliverReturnOrder(request).then(function(response) {\n                ToasterService.showSuccess($translate.instant(\"common.done\"));\n                reloadOrder();\n            },function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                vm.ongoingRequest = false;\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function reloadOrder() {\n        var orderId = vm.order.id;\n\n        OrdersApiService.getById(orderId).then(function(response) {\n\n            // Keep previous delivery input\n            _.forEach(vm.order.orderArticles, function (oldOrderArticle) {\n                var newOrderArticle = _.find(response.data.order.orderArticles, function(newOrderArticle) {\n                    return newOrderArticle.article.id === oldOrderArticle.article.id;\n                });\n                newOrderArticle.orderRows[0].quantityToDeliver = oldOrderArticle.orderRows[0].quantityToDeliver;\n            });\n\n            vm.order = response.data.order;\n            vm.order.deliveredDate = new Date();\n            vm.order.plannedDeliveryDate = parseDate(vm.order.plannedDeliveryDate);\n            var orderArticle = _.find(vm.order.orderArticles, function(orderArticle) { return orderArticle.article.id === lastDeliveredOrderArticle.article.id });\n            setNextQuantityToDeliver(orderArticle);\n\n            vm.orderChangeCount += 1;\n        }, function (error) {\n            ToasterService.showError(error.message);\n        });\n    }\n\n    function deliverNonVariantArticles() {\n        if (vm.ongoingRequest) {\n            console.log(\"vm.ongoingRequest: \" + vm.ongoingRequest);\n            return;\n        }\n        vm.ongoingRequest = true;\n\n        var orderCopy = angular.copy(vm.order);\n\n        var nonVariantOrderArticles = _.filter(orderCopy.orderArticles, function(orderArticle) {\n            // return !orderArticle.article.isVariant;\n            return isSingleVariantArticle(orderArticle.article)\n        });\n\n        _.forEach(nonVariantOrderArticles, function(orderArticle) {\n            orderArticle.shouldDeliverThisArticle = true;\n            orderArticle.orderRows[0].quantity = orderArticle.orderRows[0].quantityToDeliver;\n        });\n\n        zeroAllNonDeliveryQuantities(orderCopy);\n        stripUnnecessaryOrderData(orderCopy);\n\n        deliver();\n\n        function deliver() {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.deliverPartially(orderCopy).then(function(response) {\n                vm.order = response.data;\n                vm.order.deliveredDate = new Date();\n                vm.order.plannedDeliveryDate = parseDate(vm.order.plannedDeliveryDate);\n                setInitialQuantitiesToDeliver();\n\n                vm.orderChangeCount += 1;\n            }, function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                vm.ongoingRequest = false;\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function parseDate(input) {\n\t\tif (!(input instanceof Date)) {\n            var newDate = new Date(input);\n            return new Date(Date.UTC(newDate.getFullYear(), newDate.getMonth(), newDate.getDate()));\n\t\t} else {\n\t\t\treturn new Date(Date.UTC(input.getFullYear(), input.getMonth(), input.getDate()));\n\t\t}\n\t}\n\n    function zeroAllNonDeliveryQuantities(order) {\n        _.forEach(order.orderArticles, function(orderArticle) {\n            if (!orderArticle.shouldDeliverThisArticle) {\n                _.forEach(orderArticle.orderRows, function(orderRow) {\n                    orderRow.quantity = 0;\n                });\n            }\n        });\n    }\n\n    function stripUnnecessaryOrderData(order) {\n        order.orderArticles = _.filter(order.orderArticles, function(oa) { return oa.shouldDeliverThisArticle && oa.shouldDeliverThisArticle === true; });\n        _.forEach(order.orderArticles, function(orderArticle) {\n            orderArticle.article = undefined;\n            _.forEach(orderArticle.orderRows, function (ordRow) {\n                _.forEach(ordRow.deliveryRows, function(delRow) {\n                    if (delRow.location) { delRow.location = { id: delRow.location.id }; }\n                    if (delRow.deliveringUser) { delRow.deliveringUser = { id: delRow.deliveringUser.id }; }\n                    if (delRow.articleVariant) { delRow.articleVariant = { id: delRow.articleVariant.id }; }\n                });\n            });\n        });\n        if (order.purchaser) { order.purchaser = { id: order.purchaser.id }; }\n        if (order.destination) { order.destination = { id: order.destination.id }; }\n        if (order.company) { order.company = { id: order.company.id }; }\n        if (order.user) { order.user = { id: order.user.id }; }\n        if (order.collection) { order.collection = { id: order.collection.id }; }\n        if (order.fromLocation) { order.fromLocation = { id: order.fromLocation.id }; }\n    }\n\n    function setInitialPriceDisplayChoice() {\n        var windowWidthLimit = 1485;\n        var windowTooNarrow = $window.innerWidth < windowWidthLimit;\n        var isDelivering = !vm.isModifying;\n\n        if (vm.isModifying) {\n            vm.displayPrices = true;\n        } else if (isDelivering && windowTooNarrow) {\n            vm.displayPrices = false;\n        }\n    }\n\n    function canDeliverIn() {\n        return OrderService.canPartDeliverOrder(vm.links);\n    }\n\n    function isSingleVariantArticle(article) {\n        return !article.isVariant || (article.articleVariants !== undefined && article.articleVariants.length < 2);\n    }\n\n    function isMultipleVariantArticle(article) {\n        return !isSingleVariantArticle(article);\n    }\n\n    function anyNonVariantArticles() {\n        // var value = vm.order.orderArticles.some(function(e) { return isSingleVariantArticle(e.article); });\n        var value = vm.order.orderArticles.some(function(orderArticle) { return shouldBeTreatedAsNonVariant(orderArticle); });\n        return value;\n    }\n\n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read){\n            return false\n        }\n\n        return true\n    }\n\n    function captureGrid(s) {\n        grid = s;\n    }\n\n    function viewOrderArticle(article, lowestStatusAmongRows) {\n        if(isRowDelivered(lowestStatusAmongRows)){\n            return\n        }\n\n        vm.onArticleSelected({article: article});\n    }\n\n    function isRowDelivered(lowestStatusAmongRows){\n        if(lowestStatusAmongRows !== \"delivered\"){\n            return false\n        }\n\n        return true\n    }\n\n    function isRowCreated(lowestStatusAmongRows) {\n        if (lowestStatusAmongRows === \"created\") {\n            return true;\n        }\n\n        return false;\n    }\n\n    function absolute(number) {\n        if (_.isNumber(number)) {\n            return Math.abs(number);\n        }\n        return 0;\n    }\n\n    function hideDeliveredRows() {\n        if (vm.hiddenDeliveredRows) {\n            vm.filteredOrderArticles = _.filter(vm.order.orderArticles, function(art) {\n                return art.lowestSystemStatusAmongRows !== 'delivered';\n            });\n        } else {\n            vm.filteredOrderArticles = vm.order.orderArticles;\n        }\n    }\n\n    function recalculateAggregatedData() {\n        _.forEach(vm.order.orderArticles, function(orderArticle) {\n            orderArticle.summarizedPurchaseCost = 0;\n            orderArticle.summarizedSalesPrice = 0;\n            orderArticle.summarizedQuantity = 0;\n            orderArticle.summarizedDeliveredQuantity = 0;\n\n            var zeroQuantityAverageOrderRowPurchaseCost = 0;\n            var zeroQuantityAverageOrderRowSalesPrice = 0;\n            var nonZeroQuantityOrderRowPurchaseCost = 0;\n            var nonZeroQuantityOrderRowSalesPrice = 0;\n            var nonZeroQuantityOrderRowsCount = 0;\n\n            _.forEach(orderArticle.orderRows, function(orderRow) {\n                orderArticle.summarizedPurchaseCost += orderRow.quantity * orderRow.purchaseCost;\n                if(orderRow.quantity > 0){\n                    nonZeroQuantityOrderRowPurchaseCost += orderRow.purchaseCost;\n                    nonZeroQuantityOrderRowSalesPrice += orderRow.articleVariant.salesPrice;\n                    nonZeroQuantityOrderRowsCount++;\n                }\n                orderArticle.summarizedSalesPrice += orderRow.articleVariant.salesPrice * orderRow.quantity;\n                orderArticle.summarizedQuantity += orderRow.quantity;\n\n                zeroQuantityAverageOrderRowPurchaseCost += orderRow.purchaseCost;\n                zeroQuantityAverageOrderRowSalesPrice += orderRow.articleVariant.salesPrice;\n\n                _.forEach(orderRow.deliveryRows, function(deliveryRow) {\n                    if (deliveryRow.systemStatus === 'delivered' && deliveryRow.deliveryRowType === 'deliveryIn') {\n                         orderArticle.summarizedDeliveredQuantity += deliveryRow.quantity;\n                    } else if (vm.order.orderType.orderSystemType == 'return' && deliveryRow.deliveryRowType === 'deliveryOut' && deliveryRow.systemStatus === 'delivered') {\n                        orderArticle.summarizedDeliveredQuantity += -deliveryRow.quantity;\n                    }\n                });\n            });\n\n            orderArticle.averageOrderRowPurchaseCost = nonZeroQuantityOrderRowPurchaseCost / nonZeroQuantityOrderRowsCount;\n\n            if (_.isNaN(orderArticle.averageOrderRowPurchaseCost)) {\n                orderArticle.averageOrderRowPurchaseCost = zeroQuantityAverageOrderRowPurchaseCost / orderArticle.orderRows.length;\n                if (_.isNaN(orderArticle.averageOrderRowPurchaseCost)) {\n                    orderArticle.averageOrderRowPurchaseCost = \"\";\n                }\n            }\n\n            orderArticle.averageArticleVariantSalesPrice = nonZeroQuantityOrderRowSalesPrice / nonZeroQuantityOrderRowsCount;\n\n            if(_.isNaN(orderArticle.averageArticleVariantSalesPrice)){\n                orderArticle.averageArticleVariantSalesPrice = zeroQuantityAverageOrderRowSalesPrice / orderArticle.orderRows.length;\n                if (_.isNaN(orderArticle.averageArticleVariantSalesPrice)) {\n                    orderArticle.averageArticleVariantSalesPrice = \"\";\n                }\n            }\n\n            orderArticle.summarizedDeliveredCost = absolute(orderArticle.averageOrderRowPurchaseCost * orderArticle.summarizedDeliveredQuantity);\n            if(shouldBeTreatedAsNonVariant(orderArticle)){\n                orderArticle.nonVariantVariantDetail1Name = orderArticle.orderRows[0].articleVariant.variantDetail1.variantDetailName;\n                orderArticle.nonVariantVariantDetail2Name = orderArticle.orderRows[0].articleVariant.variantDetail2.variantDetailName;\n                orderArticle.nonVariantQuantityToDeliver = orderArticle.orderRows[0].quantityToDeliver;\n            }\n            else{\n                orderArticle.nonVariantVariantDetail1Name = \"\";\n                orderArticle.nonVariantVariantDetail2Name = \"\";\n                orderArticle.nonVariantQuantityToDeliver = 0;\n            }\n        });\n    }\n\n    //Transform from string to Date, and make sure date has correct timezone and no time information\n\tfunction parseDate(input) {\n\t\tif (!(input instanceof Date)) {\n            var newDate = new Date(input);\n            return new Date(Date.UTC(newDate.getFullYear(), newDate.getMonth(), newDate.getDate()));\n\t\t} else {\n\t\t\treturn new Date(Date.UTC(input.getFullYear(), input.getMonth(), input.getDate()));\n\t\t}\n\t}\n\n    function updatedQuantity() {\n        vm.orderChangeCount += 1;\n        \n        _.forEach(vm.filteredOrderArticles, function(orderArticle){\n            if(shouldBeTreatedAsNonVariant(orderArticle)){\n                orderArticle.orderRows[0].quantity = orderArticle.orderRows[0].quantity < 0 ? 0 : orderArticle.orderRows[0].quantity;\n            }\n        });\n    }\n\n    function updatedQuantityToDeliver(){\n        vm.orderChangeCount += 1;\n        \n        _.forEach(vm.filteredOrderArticles, function(orderArticle){\n            if(shouldBeTreatedAsNonVariant(orderArticle)){\n                orderArticle.orderRows[0].quantityToDeliver = orderArticle.orderRows[0].quantityToDeliver < 0 ? 0 : orderArticle.orderRows[0].quantityToDeliver;\n            }\n        });\n    }\n\n    function refreshGrid() {\n        if (grid.invalidate) {\n            grid.invalidate();\n        }\n        if (grid.collectionView) {\n            grid.collectionView.refresh();\n        }\n    }\n\n    function openOrderRowCommentDialog(orderArticle) {\n        console.log(vm.isModifying);\n        OrderRowCommentDialogService.showDialog(orderArticle)\n        .then(function (result){\n            if(result){\n                vm.orderChangeCount += 1;\n                orderArticle.orderRows = result;\n\n                if(!vm.isModifying){\n                    loadSpinnerService.start('mainSpinner');\n                    Rms2OrdersApiService.updateCommentOnOrderRows(orderArticle.orderRows).then(function(response) {\n                        ToasterService.showSuccess();\n                    }, function(error) {\n                        ToasterService.showError(error.message);\n                    }).finally(function() {\n                        vm.ongoingRequest = false;\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            }\n        });\n    }\n}\n","angular.module('components.caOrderMetaData', [])\n    .component('caOrderMetaData', {\n        templateUrl: 'main/order/orderdelivery/components/ordermetadata.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            disabled: '<',\n            isHidden: '<',\n            isCopying: '<',\n            orderChangeCount: '=',\n            order: '=',\n            deliveryPlanningTemplate: '=',\n            initOrderType: '<',\n            initCompany: '<',\n            setCollectionAutomatically: '<',\n            setCurrencyRateAutomatically: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, ToasterService, OrdersApiService, OrderService, Rms2OrdersApiService, EditDeliveryPlanningDialogService) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    var errorColor = '#ff0000';\n    var noErrorColor = '#ffffff';\n    vm.enableDeliveryPlanning = false;\n    vm.orderTypes = [];\n    vm.companies = [];\n    vm.allLocations = [];\n    vm.allUserLocations = [];\n    vm.locations = [];\n    vm.destinations = [];\n    vm.collections = [];\n    vm.deliveryTerms = [];\n    vm.users = [];\n    vm.isCreatedOrNew = isCreatedOrNew()\n    vm.orderUpdated = orderUpdated;\n\n    //vm.deliveryPlanningTemplate = [];\n\n    vm.getOrderTypeRowStyle = getOrderTypeRowStyle;\n    vm.getFromLocationRowStyle = getFromLocationRowStyle;\n    vm.getDestinationRowStyle = getDestinationRowStyle;\n    vm.getCompanyRowStyle = getCompanyRowStyle;\n    vm.getCollectionRowStyle = getCollectionRowStyle;\n    vm.getCurrencyStyle = getCurrencyStyle;\n    vm.setCurrencyRate = setCurrencyRate;\n    vm.canChangeCurrency = canChangeCurrency;\n    vm.canChangeCompany = canChangeCompany;\n    vm.canChangeFromLocation = canChangeFromLocation;\n    vm.canChangeDestination = canChangeDestination;\n    vm.canChangeCollection = canChangeCollection;\n    vm.openEditDeliveryPlanning = openEditDeliveryPlanning;\n    vm.isDeliveryPlanningDisabled = isDeliveryPlanningDisabled;\n    vm.isDeliveryPlanningEnabled = isDeliveryPlanningEnabled;\n    vm.dateChangeDeliveryPlanningDialog = dateChangeDeliveryPlanningDialog;\n    vm.resetDeliveryPlanningTemplate = resetDeliveryPlanningTemplate;\n\n    function onInit() {\n        OrdersApiService.getOrderTypes().then(function(response) {\n            vm.orderTypes = response;\n\n            if (vm.initOrderType && vm.initOrderType !== null) {\n                vm.order.orderType = _.find(vm.orderTypes, function(o) {\n                    return o.orderSystemType === vm.initOrderType;\n                });\n            }\n            vm.orderChangeCount += 1;\n        }, function(error) {\n            ToasterService.showError();\n        });\n        OrdersApiService.getCompanies().then(function(response) {\n            vm.companies = response;\n\n            if (vm.initCompany && vm.initCompany !== null) {\n                vm.order.company = _.find(vm.companies, function(c) {\n                    return c.id === vm.initCompany;\n                });\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        OrdersApiService.getCurrencyDefault().then(function(response) {\n            vm.defaultCurrency = response;\n            setCurrencyToDefault();\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        OrdersApiService.getLocationsDependingOnUser({filterInactiveLocations: true}).then(function(response) {\n            vm.allUserLocations = response;\n            setLocationsDependingOnOrderType();\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        OrdersApiService.getLocations({filterInactiveLocations: true}).then(function(response) {\n            vm.allLocations = response;\n            setLocationsDependingOnOrderType();\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        OrdersApiService.getOrderCollections().then(function(response) {\n            vm.collections = response;\n\n            if (vm.setCollectionAutomatically) {\n                changeOrderSeason();\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        OrdersApiService.getDeliveryTerms().then(function(response) {\n            vm.deliveryTerms = response;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        OrdersApiService.getUsers().then(function(response) {\n            vm.users = response;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        OrdersApiService.getCurrencies().then(function(response) {\n            vm.currencies = response;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        Rms2OrdersApiService.getCountries().then(function(response) {\n            vm.countries = response.countries;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        setOrderMetadataListeners();\n        isDeliveryPlanningEnabled();\n    }\n\n    function onChanges() {\n    }\n\n    function onDestroy() {\n    }\n\n    function orderUpdated() {\n        vm.orderChangeCount += 1;\n    }\n\n    function setOrderMetadataListeners() {\n        // Watch order collection\n        $scope.$watch(function() { return vm.order.currencyRate; }, function() {\n            OrderService.updateCurrencyOnOrderRows(vm.order.orderArticles, vm.order.currencyRate);\n            orderUpdated();\n        });\n        $scope.$watch(function() { return vm.order.collection.id; }, function() {\n            if (vm.order.collection && vm.order.collection.id) {\n                OrdersApiService.getOrderCollectionById(vm.order.collection.id).then(function(response) {\n                    vm.order.collection = response;\n\n                    //If collection currency doesn't contain all available currencies, add them\n                    _.forEach(vm.currencies, function(currency) {\n                        var existingCurrency = vm.order.collection.currencySettings.find(function(element) { return element.currency.code === currency.code; });\n                        if (existingCurrency === undefined) {\n                            var newCurrencySetting = {\n                                currency: currency,\n                                currencyRate: currency.currencyRate\n                            };\n                            vm.order.collection.currencySettings.push(newCurrencySetting);\n                        }\n                    });\n                    if (vm.setCurrencyRateAutomatically) {\n                        setCurrencyRate();\n                    }\n                }, function(error) {\n                    ToasterService.showError(error.message);\n                });\n            }\n\n            orderUpdated();\n        });\n        // Watch order type\n        $scope.$watch(function() { return vm.order.orderType.id; }, function() {\n            setLocationsDependingOnOrderType();\n            orderUpdated();\n        });\n        // Watch order company\n        $scope.$watch(function() { return (vm.order.company) ? vm.order.company.id : undefined; }, function(newValue, oldValue) {\n            if (newValue === oldValue) { return; }\n            if (vm.order.deliveryTerms === undefined || vm.order.deliveryTerms.id === undefined) {\n                setDeliveryTermsToCompanyDefault(vm.order.company);\n            }\n            setCurrencyToCompanyDefault(vm.order.company);\n            setPurchaserToCompanyDefault(vm.order.company);\n            orderUpdated();\n        });\n        // Watch order destination\n        $scope.$watch(function() {\n            return vm.order.destination;\n        }, function() {\n            if (vm.order.destination && !vm.order.destination.resellerPriceList &&\n                vm.order.destination.resellerPriceListId && vm.order.destination.resellerPriceListId !== -1) {\n                //Load reseller price list\n                OrdersApiService.getResellerPriceList(vm.order.destination.resellerPriceListId).then(function(response) {\n                    vm.order.destination.resellerPriceList = response;\n                }, function(error) {\n                    ToasterService.showError(error.message);\n                });\n            }\n        });\n        //Watch fromLocation\n        $scope.$watch(function() {\n            return (vm.order.fromLocation === undefined) ? undefined : vm.order.fromLocation.id;\n        }, function(oldValue, newValue) {\n            if (oldValue !== newValue && vm.order.fromLocation) {\n                vm.order.destination = undefined;\n                vm.destinations = _.reject(vm.allLocations, function(location) {\n                    return location.id === vm.order.fromLocation.id;\n                });\n                orderUpdated();\n            }\n        });\n        // Watch planned delivery date\n        $scope.$watch(function() { return vm.order.plannedDeliveryDate; }, function() {\n            orderUpdated();\n            if (vm.order.id === undefined || vm.order.id === 0) {\n                changeOrderSeason();\n            }\n        });\n         // Watch order delivery terms\n        $scope.$watch(function() { return vm.order.deliveryTerms; }, function () { orderUpdated(); });\n    }\n\n    function setLocationsDependingOnOrderType() {\n        if (vm.order.orderType.orderSystemType === 'store') {\n            vm.locations = vm.allLocations;\n            vm.destinations = vm.allUserLocations;\n            //Clear destination if new order\n            if (!vm.order.id || vm.order.id === 0) {\n                vm.order.destination = undefined;\n            }\n        } else if (vm.order.orderType.orderSystemType === 'internal') {\n            vm.locations = vm.allUserLocations;\n            //Clear destination if new order\n            if (!vm.order.id || vm.order.id === 0) {\n                vm.order.destination = undefined;\n            }\n            vm.destinations = _.reject(vm.allLocations, function(location) {\n                return location.id === (vm.order.fromLocation !== undefined) ? vm.order.fromLocation.id : -1;\n            });\n        } else if (vm.order.orderType.orderSystemType === 'return') {\n            vm.locations = vm.allUserLocations;\n            //Clear fromLocation if new order\n            if (!vm.order.id || vm.order.id === 0) {\n                vm.order.fromLocation = undefined;\n            }\n            vm.destinations = vm.allLocations;\n        }\n    }\n\n    \n    function isDeliveryPlanningEnabled() {\n        OrdersApiService.isDeliveryPlanningEnabled().then(function(response){\n            vm.enableDeliveryPlanning = response;\n        }, function(error){\n            ToasterService.showError(error.message);\n        });\n    }\n\n    function isDeliveryPlanningDisabled(){\n        return ((!vm.order.orderType || !vm.order.orderType.id) || vm.order.orderType.deliveryPlanningTemplate === undefined)\n    }\n\n    function getOrderTypeRowStyle() {\n        var style = {};\n        if (!vm.order.orderType || !vm.order.orderType.id) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    function getFromLocationRowStyle() {\n        var style = {};\n        if (vm.order.fromLocation === undefined || !vm.order.fromLocation.id) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    function getDestinationRowStyle() {\n        var style = {};\n        if (vm.order.destination === undefined || !vm.order.destination.id) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    function getCompanyRowStyle() {\n        var style = {};\n        if (vm.order.company === undefined || !vm.order.company.id) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    function getCollectionRowStyle() {\n        var style = {};\n        if (vm.order.collection === undefined || !vm.order.collection.id) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    function getCurrencyStyle() {\n        var style = {};\n        if (vm.order.currency === undefined || !vm.order.currency.id) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    function changeOrderSeason() {\n        var comparisonDate = parseDate(vm.order.plannedDeliveryDate);\n        var collection = _.find(vm.collections, function(collection) {\n\t\t\tvar fromDate = parseDate(collection.fromDate);\n\t\t\tvar toDate = parseDate(collection.toDate);\n            return fromDate <= comparisonDate && toDate >= comparisonDate;\n        });\n\n        if (!vm.order.id && vm.order.collection && collection) {\n            vm.order.collection = collection;\n        }\n    }\n\n    function setDeliveryTermsToCompanyDefault(company) {\n        if (company === undefined || company.deliveryTerm === undefined) {\n            return;\n        }\n\n        var deliveryTerm = _.find(vm.deliveryTerms, function(deliveryTerm) { return deliveryTerm.id === company.deliveryTerm.id; });\n\n        if (deliveryTerm !== undefined) {\n            vm.order.deliveryTerms = deliveryTerm;\n            vm.orderChangeCount += 1;\n        }\n    }\n\n    function canChangeCurrency() {\n        // the currency is dependent on the supplier.\n        return vm.isCopying;\n    }\n\n    function canChangeCompany() {\n        var hasOrderId = vm.order.id !== undefined && vm.order.id > 0;\n        var hasNoOrderArticles = vm.order.orderArticles.length === 0;\n        var isNotApproved = vm.order.approved === false;\n        var hasInitCompany = vm.initCompany && vm.initCompany !== null;\n\n        return (!hasOrderId || (hasNoOrderArticles && isNotApproved)) && !hasInitCompany;\n    }\n\n    function isCreatedOrNew(){\n        var hasOrderId = vm.order.id !== undefined && vm.order.id > 0;\n        var hasPermittedStatus = vm.order.systemStatus === \"created\";\n        return !hasOrderId || hasPermittedStatus\n    }\n\n    function canChangeFromLocation() {\n        var hasOrderId = vm.order.id !== undefined && vm.order.id > 0;\n        var allowedByOrderType = vm.order.orderType.orderSystemType === 'return' || vm.order.orderType.orderSystemType === 'internal';\n        var hasNoOrderArticles = vm.order.orderArticles.length === 0;\n        var isNotApproved = vm.order.approved === false;\n        var isOrderCopy = vm.isCopying === true;\n\n        return !hasOrderId || (allowedByOrderType &&\n            ((!isOrderCopy && hasNoOrderArticles) ||\n            isNotApproved ||\n            isOrderCopy));\n    }\n\n    function canChangeCollection() {\n        var hasOrderId = vm.order.id !== undefined && vm.order.id > 0;\n\n        return !hasOrderId;\n    }\n\n    function canChangeDestination() {\n        var hasOrderId = vm.order.id !== undefined && vm.order.id > 0;\n        var allowedByOrderType = vm.order.orderType.orderSystemType === 'store' || vm.order.orderType.orderSystemType === 'internal';\n        var hasNoOrderArticles = vm.order.orderArticles.length === 0;\n        var isNotApproved = vm.order.approved === false;\n        var isOrderCopy = vm.isCopying === true;\n        var hasPermittedStatus = vm.order.systemStatus === \"created\";\n\n        return !hasOrderId || (allowedByOrderType && hasPermittedStatus &&\n            ((!isOrderCopy && hasNoOrderArticles) ||\n            isNotApproved ||\n            isOrderCopy));\n    }\n\n    function setCurrencyToCompanyDefault(company) {\n        if (!company || !company.purchasingCurrency) {\n            return;\n        }\n\n        var currencyToSet = _.find(vm.currencies, function(currency) { return currency.id === company.purchasingCurrency.id; });\n\n        if (currencyToSet !== undefined) {\n            vm.order.currency = currencyToSet;\n        }\n\n        setCurrencyRate();\n    }\n\n    function setPurchaserToCompanyDefault(company) {\n        if (!company || !company.primaryPurchaser) {\n            return;\n        }\n\n        var purchaserToSet = _.find(vm.users, function(user) { return user.id === company.primaryPurchaser.id; });\n\n        if (purchaserToSet !== undefined) {\n            vm.order.purchaser = purchaserToSet;\n        }\n    }\n\n    function setCurrencyToDefault() {\n        if (!vm.order.currency) {\n            vm.order.currency = vm.defaultCurrency;\n            vm.order.currencyRate = vm.defaultCurrency.currencyRate;\n        }\n    }\n\n    function setCurrencyRate() {\n        if (vm.order.currency === undefined) {\n            return;\n        }\n\n        if (vm.order.collection) {\n            var currencySetting = vm.order.collection.currencySettings.find(function(element) { return element.currency.code === vm.order.currency.code; });\n            if (currencySetting) {\n                vm.order.currencyRate = currencySetting.currencyRate;\n            } else {\n                vm.order.currencyRate = vm.order.currency.currencyRate;\n            }\n        } else {\n            vm.order.currencyRate = vm.order.currency.currencyRate;\n        }\n    }\n\n    function showEditDeliveryplanDialog(firstEdit){\n        EditDeliveryPlanningDialogService.showDialog(vm.deliveryPlanningTemplate.stages).then(function(response) {\n            console.log(response);\n            if(response !== false){\n                vm.deliveryPlanningTemplate.stages = response;                \n            }\n            else if(firstEdit){\n                vm.deliveryPlanningTemplate = [];\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n        });\n    }\n\n    function openEditDeliveryPlanning(){\n        if(vm.deliveryPlanningTemplate === undefined || vm.deliveryPlanningTemplate.length === 0){\n            OrdersApiService.getDeliveryPlanningTemplate(vm.order.orderType.deliveryPlanningTemplate.id, vm.order.plannedDeliveryDate, vm.order.deliveryTerms.id).then(function(response){\n                vm.deliveryPlanningTemplate = response.data;\n            }, function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                showEditDeliveryplanDialog(true);\n            });\n        }\n        else{\n            showEditDeliveryplanDialog(false);\n        }\n    }\n\n    function resetDeliveryPlanningTemplate(){\n        vm.deliveryPlanningTemplate = [];\n    }\n\n    function dateChangeDeliveryPlanningDialog(){\n        if(vm.enableDeliveryPlanning){\n            console.log('stuff');\n        }\n    }\n\n    //Transform from string to Date, and make sure date has correct timezone and no time information\n\tfunction parseDate(input) {\n\t\tif (!(input instanceof Date)) {\n            var newDate = new Date(input);\n            return new Date(Date.UTC(newDate.getFullYear(), newDate.getMonth(), newDate.getDate()));\n\t\t} else {\n\t\t\treturn new Date(Date.UTC(input.getFullYear(), input.getMonth(), input.getDate()));\n\t\t}\n\t}\n\n}\n","angular.module('components.caOrderRowsDelivery', [])\n    .component('caOrderRowsDelivery', {\n        templateUrl: 'main/order/orderdelivery/components/orderrowsdelivery.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orderChangeCount: '=',\n            order: '=',\n            links: '<',\n            disabled: '<',\n            currentOrderArticle: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject    \nfunction controller($scope, $translate, loadSpinnerService, OrdersApiService, ToasterService, OrderService) {\n    var vm = this;\n\n    //Properties\n    var rowsGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n    vm.ongoingRequest = false;\n    vm.restCurrentOrderArticle = false;\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.setWijmoInputDateLimits = setWijmoInputDateLimits;\n    vm.captureRowsGrid = captureRowsGrid;\n    vm.deliverOrderSection = deliverOrderSection;\n    vm.transferQuantityDataToOrder = transferQuantityDataToOrder;\n    vm.recalculateGridTotals = recalculateGridTotals;\n    vm.orderArticleIsDelivered = orderArticleIsDelivered;\n    vm.canDeliverIn = canDeliverIn;\n\n    function onInit() {\n        vm.order.deliveredDate = new Date();\n\n        $scope.$watch(function() { return (vm.currentOrderArticle === undefined || vm.currentOrderArticle.article === undefined) ?\n                                          undefined :\n                                          vm.currentOrderArticle.article.id; }, function() {\n            if (vm.currentOrderArticle !== undefined && vm.currentOrderArticle.article !== undefined) {\n                initializeGridColumns();\n                loadGridData();\n            }\n        });\n\n        $scope.$watch(function() { return vm.orderChangeCount; }, function() {\n            initializeGridColumns();\n            loadGridData();\n\n            if ($scope.$$phase) {\n                $scope.$apply();\n            }\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    function canDeliverIn() {\n        return OrderService.canPartDeliverOrder(vm.links);\n    }\n\n    function deliverOrderSection() {\n        if (vm.ongoingRequest) {\n            console.log(\"vm.ongoingRequest: \" + vm.ongoingRequest);\n            return;\n        }\n        vm.ongoingRequest = true;\n\n        vm.transferQuantityDataToOrder();\n        var orderCopy = angular.copy(vm.order);\n\n        var orderArticle = _.find(orderCopy.orderArticles, function(orderArticle) {\n            return orderArticle.id === vm.currentOrderArticle.id;\n        });\n        orderArticle.shouldDeliverThisArticle = true;\n\n        if (vm.restCurrentOrderArticle) {\n            _.forEach(orderArticle.orderRows, function(orderRow) {\n                orderRow.IsFinalDelivery = false;\n            });\n        } else {\n            _.forEach(orderArticle.orderRows, function(orderRow) {\n                orderRow.IsFinalDelivery = true;\n            });\n        }\n\n        zeroAllNonDeliveryQuantities(orderCopy);\n        stripUnnecessaryOrderData(orderCopy);\n\n        orderCopy.plannedDeliveryDate = parseDate(orderCopy.plannedDeliveryDate);\n\n        deliver();\n\n        function deliver() {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.deliverPartially(orderCopy).then(function(response) {\n                ToasterService.showSuccess($translate.instant(\"common.done\"));\n                vm.order = response.data;\n                vm.order.deliveredDate = new Date();\n                vm.order.plannedDeliveryDate = parseDate(vm.order.plannedDeliveryDate);\n                vm.currentOrderArticle = _.find(vm.order.orderArticles, function(orderArticle) { return orderArticle.id === vm.currentOrderArticle.id; });\n\n                resetOrderArticleFlags();\n\n                vm.orderChangeCount += 1;\n                setInitialQuantitiesToDeliver();\n                setupGrid();\n                loadGridData();\n            }, function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                vm.ongoingRequest = false;\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function resetOrderArticleFlags() {\n        _.forEach(vm.order.orderArticles, function(orderArticle) {\n            orderArticle['shouldDeliverThisArticle'] = false;\n\n            _.forEach(orderArticle.orderRows, function(orderRow) {\n                orderRow['hasBeenModifiedSinceLoad'] = false;\n            });\n        });\n    }\n\n    function zeroAllNonDeliveryQuantities(order) {\n        _.forEach(order.orderArticles, function(orderArticle) {\n            if (!orderArticle.shouldDeliverThisArticle) {\n                _.forEach(orderArticle.orderRows, function(orderRow) {\n                    orderRow.quantity = 0;\n                });\n            }\n        });\n    }\n\n    function stripUnnecessaryOrderData(order) {\n        order.orderArticles = _.filter(order.orderArticles, function(oa) { return oa.shouldDeliverThisArticle && oa.shouldDeliverThisArticle === true; });\n        _.forEach(order.orderArticles, function(orderArticle) {\n            orderArticle.article = undefined;\n            _.forEach(orderArticle.orderRows, function (ordRow) {\n                _.forEach(ordRow.deliveryRows, function(delRow) {\n                    if (delRow.location) { delRow.location = { id: delRow.location.id }; }\n                    if (delRow.deliveringUser) { delRow.deliveringUser = { id: delRow.deliveringUser.id }; }\n                    if (delRow.articleVariant) { delRow.articleVariant = { id: delRow.articleVariant.id }; }\n                });\n            });\n        });\n        if (order.purchaser) { order.purchaser = { id: order.purchaser.id }; }\n        if (order.destination) { order.destination = { id: order.destination.id }; }\n        if (order.company) { order.company = { id: order.company.id }; }\n        if (order.user) { order.user = { id: order.user.id }; }\n        if (order.collection) { order.collection = { id: order.collection.id }; }\n        if (order.fromLocation) { order.fromLocation = { id: order.fromLocation.id }; }\n    }\n\n    //Transform from string to Date, and make sure date has correct timezone and no time information\n\tfunction parseDate(input) {\n\t\tif (!(input instanceof Date)) {\n            var newDate = new Date(input);\n            return new Date(Date.UTC(newDate.getFullYear(), newDate.getMonth(), newDate.getDate()));\n\t\t} else {\n\t\t\treturn new Date(Date.UTC(input.getFullYear(), input.getMonth(), input.getDate()));\n\t\t}\n\t}\n\n    function setWijmoInputDateLimits(s) {\n        if (vm.order.earliestAllowedDeliveryDate) {\n            s.min = parseDate(vm.order.earliestAllowedDeliveryDate);\n        } else {\n            s.min = new Date(2016, 1, 1, 0, 0, 0, 0);\n        }\n        s.max = parseDate(new Date());\n    }\n\n    function captureRowsGrid(grid) {\n        rowsGrid = grid;\n        rowsGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.Columns,\n            frozenColumns: 2,\n            itemsSource: rowCollection\n        });\n\n        setupGrid();\n\n        if (vm.order.id !== undefined) {\n            loadGridData();\n        }\n    }\n\n    function setupGrid() {\n        rowData.length = 0;\n        rowsGrid.finishEditing(true);\n        rowsGrid.columns.clear();\n        rowsGrid.invalidate();\n        rowCollection.refresh();\n        initializeGridColumns();\n\n        rowsGrid.beginningEdit.addHandler(function (s, e) {\n            var col = rowsGrid.columns[e.col];\n            var dataItem = rowsGrid.rows[e.row].dataItem;\n            var deliveryItemExists = _.has(dataItem, col.header);\n\n            if (!deliveryItemExists) { // enable editing for the cell with id 0 in column 1\n                e.cancel = true;\n            }\n        });\n    }\n\n    function loadGridData() {\n        rowData.length = 0;\n\n        var currentOrderArticle = _.find(vm.order.orderArticles, function(orderArticle) {\n            return orderArticle.articleId === vm.currentOrderArticle.articleId;\n        });\n\n        if (!currentOrderArticle) {\n            return;\n        }\n\n        var variantRows = _.groupBy(currentOrderArticle.orderRows, function(orderRow) {\n            return orderRow.articleVariant.variantDetail1.variantDetailName;\n        });\n\n        _.forEach(variantRows, function(variantRowValues) {\n            var r = {};\n            var sum = 0;\n            _.forEach(variantRowValues, function(variantRowValue) {\n                r.variantDetails1Name = variantRowValue.articleVariant.variantDetail1.variantDetailName;\n\n                r.variantExternalId = variantRowValue.articleVariant.externalId;\n\n                var summarizedDeliveredQuantity = 0;\n                var summarizedUndeliveredQuantity = 0;\n                _.forEach(variantRowValue.deliveryRows, function(deliveryRow) {\n                    if (deliveryRow.systemStatus !== 'delivered' && deliveryRow.deliveryRowType === 'deliveryIn') {\n                        summarizedUndeliveredQuantity += deliveryRow.quantity;\n                    } else if (deliveryRow.systemStatus !== 'delivered' && deliveryRow.deliveryRowType === 'deliveryOut' && vm.order.orderType.orderSystemType === \"return\") {\n                        summarizedUndeliveredQuantity += -deliveryRow.quantity;\n                    }\n                });\n                r[variantRowValue.articleVariant.variantDetail2.variantDetailName] = summarizedUndeliveredQuantity;\n\n                // Instead of displaying a negative value as the amount to be delivered in.\n                if (parseInt(r[variantRowValue.articleVariant.variantDetail2.variantDetailName]) < 0) {\n                    r[variantRowValue.articleVariant.variantDetail2.variantDetailName] = \"0\";\n                }\n\n                var someRowIsUndelivered = false;\n                _.forEach(vm.currentOrderArticle.orderRows, function(orderRow) {\n                    if (orderRow.systemStatus.toLowerCase() !== 'delivered') {\n                        someRowIsUndelivered = true;\n                    }\n                });\n\n                // If the orderArticle is fully delivered, show the delivered quantities in the grid.\n                if (!someRowIsUndelivered) {\n                    r[variantRowValue.articleVariant.variantDetail2.variantDetailName] =\n                        _.reduce(variantRowValue.deliveryRows, function(memo, dlvrRow) {\n                            if (dlvrRow.deliveryRowType === \"deliveryIn\") {\n                                return memo + dlvrRow.quantity;\n                            }\n                            return memo;\n                        }, 0);\n                }\n\n                sum += parseInt(r[variantRowValue.articleVariant.variantDetail2.variantDetailName]);\n            });\n            r['rowTotal'] = sum;\n            rowData.push(r);\n        });\n        rowCollection.refresh();\n    }\n\n    function initializeGridColumns() {\n        if (!rowsGrid.columns) {\n            return;\n        }\n\n        rowsGrid.columns.length = 0;\n\n        // Add first row header column\n        var rowHeader = new wijmo.grid.Column();\n        rowHeader.binding = \"variantDetails1Name\";\n        rowHeader.header = ' ';\n        rowHeader.allowSorting = false;\n        rowHeader.allowResizing = true;\n        rowHeader.width = 200;\n        rowHeader.minWidth = 100;\n        rowHeader.isReadOnly = true;\n        rowsGrid.columns.push(rowHeader);\n\n        var columns = getDataColumns();\n\n        if (columns.length > 1) {\n            var rowTotalCol = new wijmo.grid.Column();\n            rowTotalCol.header = $translate.instant('customerorder.totalquantity');\n            rowTotalCol.allowSorting = false;\n            rowTotalCol.width = 100;\n            rowTotalCol.minWidth = 100;\n            rowTotalCol.isReadOnly = true;\n            rowTotalCol.binding = \"rowTotal\";\n            rowTotalCol.align = \"right\";\n            rowsGrid.columns.push(rowTotalCol);\n        }\n\n        // Add dynamic columns\n        _.forEach(columns, function (variantDetail) {\n            var c = new wijmo.grid.Column();\n            c.binding = variantDetail.variantDetailName;\n            c.header = variantDetail.variantDetailName;\n            c.width = '*';\n            c.minWidth = 100;\n            c.allowSorting = false;\n            c.allowResizing = true;\n            c.inputType = 'text';\n            c.isReadOnly = !canDeliverIn();\n            c.align = \"right\";\n            rowsGrid.columns.push(c);\n        });\n    }\n\n    function getDataColumns() {\n        var columns = [];\n\n        var articleVariants = [];\n\n        if (vm.currentOrderArticle !== undefined) {\n            _.forEach(vm.currentOrderArticle.orderRows, function(orderRow) {\n                articleVariants.push(orderRow.articleVariant);\n            });\n        }\n\n        // Group by nested variantDetail2 in the current articleVariants\n        columns = _.groupBy(articleVariants, function(variant) {\n            return variant.variantDetail2.variantDetailName;\n        });\n        // Get the variantDetail2 from each group in an array\n        columns = _.reduce(columns, function(newArray, val, key) {\n            newArray.push(val[0].variantDetail2);\n            return newArray;\n        }, []);\n\n        return _.sortBy(columns, 'sortOrder');\n    }\n\n    function transferQuantityDataToOrder() {\n        var currentOrderArticle = _.find(vm.order.orderArticles, function(orderArticle) {\n            return vm.currentOrderArticle.article.id === orderArticle.article.id;\n        });\n\n        _.forEach(currentOrderArticle.orderRows, function(orderRow) {\n            var row = _.find(rowData, function(row) {\n                return row['variantDetails1Name'] === orderRow.articleVariant.variantDetail1.variantDetailName;\n            });\n            if (row !== undefined) {\n                orderRow.quantity = parseInt(row[orderRow.articleVariant.variantDetail2.variantDetailName]);\n            }\n        });\n    }\n\n    function recalculateGridTotals() {\n        var variant2Details = [];\n        _.forEach(vm.currentOrderArticle.orderRows, function(orderRow) {\n            if (!_.find(variant2Details, function(vd) { return vd.id === orderRow.articleVariant.variantDetail2.id; })) {\n                variant2Details.push(orderRow.articleVariant.variantDetail2);\n            }\n        });\n\n        var variant1Details = [];\n        _.forEach(vm.currentOrderArticle.orderRows, function(orderRow) {\n            if (!_.find(variant1Details, function(vd) { return vd.id === orderRow.articleVariant.variantDetail1.id; })) {\n                variant1Details.push(orderRow.articleVariant.variantDetail1);\n            }\n        });\n\n        _.forEach(variant1Details, function(vd1) {\n            var quantitySum = 0;\n            var row = _.find(rowData, function(row) { return row.variantDetails1Name === vd1.variantDetailName; });\n            _.forEach(variant2Details, function(vd2) {\n                var deliveryItemExists = _.has(row, vd2.variantDetailName);\n                if (deliveryItemExists) {\n                    quantitySum += parseInt(row[vd2.variantDetailName]);\n                }\n            });\n            row['rowTotal'] = quantitySum;\n        });\n\n        rowsGrid.invalidate();\n    }\n\n    function orderArticleIsDelivered() {\n        var orderRowsToCheck = _.filter(vm.currentOrderArticle.orderRows, function(orderRow) { return orderRow.id !== 0; });\n\n        var isDelivered = _.every(orderRowsToCheck, function(orderRow) {\n            return orderRow.systemStatus.toLowerCase() === 'delivered';\n        });\n\n        return isDelivered;\n    }\n\n\n    //FUNCTIONS FROM \"orderarticles.components.js\"\n    function setInitialQuantitiesToDeliver() {\n        _.forEach(vm.order.orderArticles, function(orderArticle) {\n            if (isMultipleVariantArticle(orderArticle)) {\n                return true;\n            }\n            orderArticle.restOrderArticle = false;\n            orderArticle.deliveredDate = Date.now();\n            _.forEach(orderArticle.orderRows, function(orderRow) {\n                var deliveredQuantity = _.sumBy(orderRow.deliveryRows, function(deliveryRow) {\n                    if (deliveryRow.systemStatus === \"delivered\" && deliveryRow.deliveryRowType === \"deliveryIn\") {\n                        return deliveryRow.quantity;\n                    }\n                });\n                if (deliveredQuantity === undefined) {\n                    deliveredQuantity = 0;\n                }\n                orderRow.quantityToDeliver = Math.max(orderRow.quantity - deliveredQuantity, 0);\n            });\n        });\n    }\n\n    function isSingleVariantArticle(article) {\n        return !article.isVariant || (article.articleVariants !== undefined && article.articleVariants.length < 2);\n    }\n\n    function isMultipleVariantArticle(article) {\n        return !isSingleVariantArticle(article);\n    }\n}\n","angular.module('components.caOrderRowsEdit', [])\n    .component('caOrderRowsEdit', {\n        templateUrl: 'main/order/orderdelivery/components/orderrowsedit.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orderChangeCount: '=',\n            order: '=',\n            disabled: '<',\n            currentOrderArticle: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $rootScope, $translate, OrdersApiService, loadSpinnerService, ProductsApiService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.hasClaim = havePurchaseCostClaim();\n    vm.hasQuantities = false;\n    vm.hasDifferentVariantPrices = false;\n    vm.stocks = [];\n    vm.colorRelatedPurchaseCosts = [];\n    vm.colorVariantRelatedPurchaseCosts = [];\n    vm.defaultCurrency = {};\n\n    //Private variables\n    var rowsGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n    var originalCellValue = '';\n    var pricesGrid = {};\n    var variantPricesGrid = {};\n    \n    //Methods\n    vm.captureRowsGrid = captureRowsGrid;\n    vm.capturePricesGrid = capturePricesGrid;\n    vm.captureVariantPricesGrid = captureVariantPricesGrid;\n    vm.handleNonexistingArticleVariants = handleNonexistingArticleVariants;\n    vm.transferQuantityGridDataToOrder = transferQuantityGridDataToOrder;\n    vm.transferPurchaseCostDataToOrder = transferPurchaseCostDataToOrder;\n    vm.transferVariantPurchaseCostDataToOrder = transferVariantPurchaseCostDataToOrder;\n    vm.recalculateGridTotals = recalculateGridTotals;\n    vm.recalculateVariantGridTotals = recalculateVariantGridTotals;\n    vm.hasGridQuantities = hasGridQuantities;\n    vm.hasGridDifferentVariantPrices = hasGridDifferentVariantPrices;\n    vm.beginEditingOrderRow = beginEditingOrderRow;\n    vm.orderRowEditEnded = orderRowEditEnded;\n    vm.hasRetrievedStocks = hasRetrievedStocks;\n    vm.getStockQuantitiesForCurrentArticle = getStockQuantitiesForCurrentArticle;\n    vm.getCurrencyCodeString = getCurrencyCodeString;\n    vm.getTotalRowSum = getTotalRowSum;\n    vm.isAllowedToAddProduct = isAllowedToAddProduct();\n    vm.isSingleVariantArticle = isSingleVariantArticle;\n\n    function isAllowedToAddProduct(){\n        var hasOrderId = vm.order.id !== undefined && vm.order.id > 0;\n        return !hasOrderId || vm.order.systemStatus === \"created\"\n    }\n\n\n    function onInit() {\n        $scope.$watch(function () { return vm.orderChangeCount; }, function () {\n            recalculateGridTotals();\n            recalculateVariantGridTotals();\n\n            vm.hasQuantities = hasGridQuantities();\n            if (vm.currentOrderArticle) {\n                if (vm.currentOrderArticle.hasDifferentVariantPrices) {\n                    constructVariantPurchaseCostData();\n                } else {\n                    constructPurchaseCostData();\n                }\n            }\n            \n        });\n        $scope.$watch(function () {\n            return (vm.currentOrderArticle === undefined || vm.currentOrderArticle.article === undefined) ?\n                undefined :\n                vm.currentOrderArticle.article.id;\n        }, function () {\n            if (vm.currentOrderArticle !== undefined && vm.currentOrderArticle.article !== undefined) {\n                resetCurrentOrderArticlePresentation();\n            }\n        });\n\n        ProductsApiService.getDefaultCurrency().then(function(response) {\n            vm.defaultCurrency = response;\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    \n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.update){\n            return false\n        }\n\n        return true\n    }\n\n    function getCurrencyCodeString() {\n        if (!vm.order || !vm.order.currency) { return ''; }\n        if (vm.order.orderType.orderSystemType === 'return') { return ''; }\n        return ' (' + vm.order.currency.code + ')';\n    }\n\n    function resetCurrentOrderArticlePresentation() {\n        initializeGridColumns();\n        loadGridData();\n        constructSalesPriceData();\n        vm.hasQuantities = hasGridQuantities();\n        vm.currentOrderArticle.hasDifferentVariantPrices = hasGridDifferentVariantPrices();\n\n\n        if (vm.currentOrderArticle.hasDifferentVariantPrices) {\n            constructVariantPurchaseCostData();\n        } else {\n            constructPurchaseCostData();\n        }\n    }\n\n    function beginEditingOrderRow(s, e) {\n        vm.handleNonexistingArticleVariants(s, e);\n\n        if (hasRetrievedStocks(vm.currentOrderArticle.article)) {\n            var rowNumber = rowsGrid.selection.row;\n            var columnNumber = rowsGrid.selection.col;\n\n            var columnHeader = rowsGrid.columns[columnNumber].binding;\n\n            originalCellValue = angular.copy(rowData[rowNumber][columnHeader]);\n\n            rowData[rowNumber][columnHeader] = rowData[rowNumber][columnHeader].split('(')[0].trim();\n            rowCollection.refresh();\n        }\n    }\n\n    function handleNonexistingArticleVariants(sender, event) {\n        var row = sender.rows[event.row];\n        var col = sender.columns[event.col];\n        var item = row.dataItem;\n        var colBinding = col.binding;\n        var cellValue = item[colBinding];\n\n        if (cellValue === undefined) {\n            event.cancel();\n        }\n    }\n\n    function hasRetrievedStocks(article) {\n        return vm.stocks.length > 0 &&\n            vm.stocks[article.id] &&\n            vm.stocks[article.id].variantStocks &&\n            vm.stocks[article.id].variantStocks.length > 0;\n    }\n\n    function orderRowEditEnded(sender, event) {\n        if (hasRetrievedStocks(vm.currentOrderArticle.article)) {\n            var rowNumber = rowsGrid.selection.row;\n            var columnNumber = rowsGrid.selection.col;\n\n            var columnHeader = rowsGrid.columns[columnNumber].binding;\n\n            // Reinserting the parenthesis value, but only if we have a retrieved article variant stock\n            var valueSplit = originalCellValue.split('(');\n            var stockStr = '';\n            if (valueSplit.length > 1) {\n                stockStr = ' (' + valueSplit[1];\n            }\n            rowData[rowNumber][columnHeader] += stockStr;\n            rowCollection.refresh();\n        }\n\n        vm.transferQuantityGridDataToOrder();\n        vm.recalculateGridTotals();\n    }\n\n    function getStockQuantitiesForCurrentArticle() {\n        loadSpinnerService.start('mainSpinner');\n        var articleId = vm.currentOrderArticle.article.id;\n        var locationId = vm.order.fromLocation.id;\n\n        // /article/{articleId}/location/{locationId}/stock\n        OrdersApiService.getStockForArticle(articleId, locationId).then(function(response) {\n            vm.stocks[articleId] = { variantStocks: response.stock };\n            resetCurrentOrderArticlePresentation();\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function captureRowsGrid(grid) {\n        rowsGrid = grid;\n        rowsGrid.initialize({ \n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.Columns,\n            frozenColumns: 2,\n            itemsSource: rowCollection    \n        });\n\n        setupGrid();\n\n        if (vm.order.id !== undefined) {\n            loadGridData();\n        }\n    }\n\n    function setupGrid() {\n        rowData.length = 0;\n        rowsGrid.finishEditing(true);\n        rowsGrid.columns.clear();\n        rowsGrid.invalidate();\n        rowCollection.refresh();\n        initializeGridColumns();\n    }\n\n    function initializeGridColumns() {\n        if (rowsGrid.columns) {\n            rowsGrid.columns.length = 0;\n\n            // Add first row header column\n            var rowHeader = new wijmo.grid.Column();\n            rowHeader.binding = \"variantDetails1Name\";\n            rowHeader.header = \" \";\n            rowHeader.allowSorting = false;\n            rowHeader.allowResizing = true;\n            rowHeader.width = 200;\n            rowHeader.minWidth = 100;\n            rowHeader.isReadOnly = true;\n            rowsGrid.columns.push(rowHeader);\n\n            var columns = getDataColumns();\n\n            if (columns.length > 1) {\n                var rowTotalCol = new wijmo.grid.Column();\n                rowTotalCol.header = $translate.instant('customerorder.totalquantity');\n                rowTotalCol.allowSorting = false;\n                rowTotalCol.allowResizing = true;\n                rowTotalCol.width = 100;\n                rowTotalCol.minWidth = 100;\n                rowTotalCol.isReadOnly = true;\n                rowTotalCol.binding = \"rowTotal\";\n                rowTotalCol.align = \"right\";\n                rowsGrid.columns.push(rowTotalCol);\n            }\n\n            // Add dynamic columns\n            _.forEach(columns, function (variantDetail) {\n                var c = new wijmo.grid.Column();\n                c.binding = variantDetail.variantDetailName;\n                c.header = variantDetail.variantDetailName;\n                c.width = \"*\";\n                c.minWidth = 100;\n                c.allowSorting = false;\n                c.allowResizing = true;\n                c.inputType = 'tel';\n                c.dataType = \"Number\";\n                c.isReadOnly = false;\n                c.align = \"right\";\n                rowsGrid.columns.push(c);\n            });\n        }\n    }\n\n    function getDataColumns() {\n        var columns = [];\n\n        var articleVariants = [];\n\n        if (vm.currentOrderArticle !== undefined) {\n            _.forEach(vm.currentOrderArticle.orderRows, function (orderRow) {\n                articleVariants.push(orderRow.articleVariant);\n            });\n        }\n\n        // Group by nested variantDetail2 in the current articleVariants\n        columns = _.groupBy(articleVariants, function (variant) {\n            return variant.variantDetail2.variantDetailName;\n        });\n        // Get the variantDetail2 from each group in an array\n        columns = _.reduce(columns, function (newArray, val, key) {\n            newArray.push(val[0].variantDetail2);\n            return newArray;\n        }, []);\n\n        return _.sortBy(columns, 'sortOrder');\n    }\n\n    function loadGridData() {\n        rowData.length = 0;\n        var variantRows = _.groupBy(vm.currentOrderArticle.orderRows, function (orderRow) {\n            return orderRow.articleVariant.variantDetail1.variantDetailName;\n        });\n\n        _.forEach(variantRows, function (variantRowValues) {\n            var r = {};\n            var sum = 0;\n\n            if (!variantRowValues.hasBeenModifiedSinceLoad) { variantRowValues.hasBeenModifiedSinceLoad = true; }\n\n            _.forEach(variantRowValues, function (variantRowValue) {\n                r.variantDetails1Name = variantRowValue.articleVariant.variantDetail1.variantDetailName;\n                var variantRowQuantity = variantRowValue['quantity'];\n                var delQuantity = (variantRowValue.hasBeenModifiedSinceLoad) ?\n                    variantRowQuantity :\n                        (variantRowQuantity - Math.abs((variantRowValue.summarizedDeliveredQuantity !== undefined) ?\n                            variantRowValue.summarizedDeliveredQuantity :\n                            0));\n\n                //Display stock in cell if already fetched from backend\n                if (hasRetrievedStocks(vm.currentOrderArticle.article)) {\n                    var articleStocks = vm.stocks[vm.currentOrderArticle.article.id];\n                    var existingStock = articleStocks !== undefined && articleStocks.variantStocks.length > 0 ?\n                        _.find(articleStocks.variantStocks, function(o) { return o.articleVariantId === variantRowValue.articleVariant.id; }) :\n                        undefined;\n                    var existingStockStr = existingStock !== undefined ? ' (' + existingStock.quantity + ')' : '';\n\n                    r[variantRowValue.articleVariant.variantDetail2.variantDetailName] = delQuantity + existingStockStr;\n                } else {\n                    r[variantRowValue.articleVariant.variantDetail2.variantDetailName] = delQuantity;\n                }\n\n                r.variantExternalId = variantRowValue.articleVariant.externalId;\n                r.systemStatus = variantRowValue.systemStatus \n                r.systemName = variantRowValue.statusName \n\n                sum += delQuantity;\n            });\n            r['rowTotal'] = sum;\n            rowData.push(r);\n        });\n        rowCollection.refresh();\n    }\n\n    function capturePricesGrid(sender) {\n        pricesGrid = sender;\n        isAllowedToEditRow(pricesGrid)\n        pricesGrid.itemsSource = vm.colorRelatedPurchaseCosts;\n\n        pricesGrid.itemFormatter = function (panel, r, c, cell) {\n            var style = cell.style;\n            var regularCellType = wijmo.grid.CellType.Cell;\n\n            var greyedColumnNumbers = [4, 5, 6, 11, 12, 13];\n\n            if (_.find(greyedColumnNumbers, function (e) { return e === c; }) && panel.cellType === regularCellType) {\n                style.color = '#000000';\n                style.backgroundColor = '#eeeeee';\n            }\n        };\n\n        vm.recalculateGridTotals();\n        vm.transferPurchaseCostDataToOrder();\n    }\n\n    function captureVariantPricesGrid(sender) {\n        variantPricesGrid = sender;\n        isAllowedToEditRow(variantPricesGrid)\n        variantPricesGrid.itemsSource = vm.colorVariantRelatedPurchaseCosts;\n\n        variantPricesGrid.itemFormatter = function (panel, r, c, cell) {\n            var style = cell.style;\n            var regularCellType = wijmo.grid.CellType.Cell;\n            var greyedColumnNumbers = [5, 10, 11, 12, 13];\n\n            if (_.find(greyedColumnNumbers, function (e) { return e === c; }) && panel.cellType === regularCellType) {\n                style.color = '#000000';\n                style.backgroundColor = '#eeeeee';\n            }\n        };\n\n        vm.recalculateVariantGridTotals();\n        vm.transferVariantPurchaseCostDataToOrder();\n    }\n\n    function isAllowedToEditRow(variantPricesGrid){\n        variantPricesGrid.beginningEdit.addHandler((s, e) => {\n            let item = s.rows[e.row].dataItem;\n\t\t\tif (item.systemStatus === \"delivered\") { // prevent editing if status on row dose not allow\n                e.cancel = true;      \n            }\n        })\n    }\n\n    function constructPurchaseCostData() {\n        vm.colorRelatedPurchaseCosts = [];\n\n        var grouped = _.groupBy(vm.currentOrderArticle.orderRows, function (row) {\n            return row.articleVariant.variantDetail1.variantDetailName;\n        });\n\n        var keys = Object.keys(grouped);\n\n        _.forEach(keys, function (key) {\n            var representative = _.find(grouped[key], function (element) { return element.quantity > 0; });\n\n            if (representative) {\n                var item = {\n                    color: key,\n                    purchaseCost: representative.purchaseCost,\n                    originalPurchasePrice: representative.originalPurchasePrice,\n                    discountPercent: representative.discountPercent,\n                    standardCostAddPercent: representative.standardCostAddPercent,\n                    effectivePurchasePrice: representative.effectivePurchasePrice,\n                    shippingCost: representative.shippingCost,\n                    customsPercent: representative.customsPercent,\n                    otherCosts: representative.otherCosts,\n                    systemStatus: representative.systemStatus,\n                    statusName: representative.statusName,\n                    sumQuantity: 0,\n                    rows: grouped[key]\n                };\n\n                _.forEach(item.rows, function (row) {\n                    item.sumQuantity += parseInt(row.quantity);\n                });\n\n                vm.colorRelatedPurchaseCosts.push(item);\n            }\n        });\n\n        pricesGrid.itemsSource = vm.colorRelatedPurchaseCosts;\n        if (typeof pricesGrid.invalidate === 'function') { pricesGrid.invalidate(); }\n        if (pricesGrid.collectionView && typeof pricesGrid.collectionView.refresh === 'function') { pricesGrid.collectionView.refresh(); }\n    }\n\n    function constructVariantPurchaseCostData() {\n        vm.colorVariantRelatedPurchaseCosts = [];\n\n        var rows = vm.currentOrderArticle.orderRows.filter(x => x.id !== 0)\n\n        _.forEach(rows, function (row) {\n            var item = {\n                color: row.articleVariant.variantDetail1.variantDetailName,\n                size: row.articleVariant.variantDetail2.variantDetailName,\n                purchaseCost: row.purchaseCost,\n                originalPurchasePrice: row.originalPurchasePrice,\n                discountPercent: row.discountPercent,\n                standardCostAddPercent: row.standardCostAddPercent,\n                effectivePurchasePrice: row.effectivePurchasePrice,\n                quantity: parseInt(row.quantity),\n                shippingCost: row.shippingCost,\n                customsPercent: row.customsPercent,\n                otherCosts: row.otherCosts,\n                systemStatus: row.systemStatus,\n                statusName: row.statusName\n            };\n            vm.colorVariantRelatedPurchaseCosts.push(item);\n        });\n\n        variantPricesGrid.itemsSource = vm.colorVariantRelatedPurchaseCosts;\n        if (typeof variantPricesGrid.invalidate === 'function') { variantPricesGrid.invalidate(); }\n        if (variantPricesGrid.collectionView && typeof variantPricesGrid.collectionView.refresh === 'function') { variantPricesGrid.collectionView.refresh(); }\n    }\n\n    function constructSalesPriceData() {\n        vm.colorVariantRelatedSalesPrices = [];\n\n        var grouped = _.groupBy(vm.currentOrderArticle.orderRows, function (row) {\n            return row.articleVariant.variantDetail1.variantDetailName;\n        });\n\n        var keys = Object.keys(grouped);\n\n        _.forEach(keys, function (key) {\n            var averageSalesPrice = (_.sumBy(grouped[key], function (element) { return element.salesPrice; })) / grouped[key].length;\n            var averagePurchaseCost = (_.sumBy(grouped[key], function (element) { return element.purchaseCost; })) / grouped[key].length;\n\n            var item = {\n                color: key,\n                averageSalesPrice: averageSalesPrice,\n                averagePurchaseCost: averagePurchaseCost,\n                rows: grouped[key]\n            };\n\n            vm.colorVariantRelatedSalesPrices.push(item);\n        });\n    }\n\n    function transferQuantityGridDataToOrder() {\n        var currentOrderArticle = _.find(vm.order.orderArticles, function (orderArticle) {\n            return vm.currentOrderArticle.article.id === orderArticle.article.id;\n        });\n\n        _.forEach(currentOrderArticle.orderRows, function (orderRow) {\n            var row = _.find(rowData, function (row) {\n                return row['variantDetails1Name'] === orderRow.articleVariant.variantDetail1.variantDetailName;\n            });\n            if (row !== undefined) {\n                var quantity = parseInt(row[orderRow.articleVariant.variantDetail2.variantDetailName]);\n                if (quantity < 0) {\n                    var quantityCustomized = parseInt(quantity.toString().replace(\"-\",\"\"));\n                    row[orderRow.articleVariant.variantDetail2.variantDetailName] = quantityCustomized;\n                    orderRow.quantity = quantityCustomized;\n                } else {\n                    orderRow.quantity = quantity;\n                }\n            }\n        });\n\n        vm.orderChangeCount += 1;\n    }\n\n    function transferPurchaseCostDataToOrder() {\n        _.forEach(vm.currentOrderArticle.orderRows, function (orderRow) {\n            var rows = _.filter(vm.colorRelatedPurchaseCosts, function (row) {\n                return row['color'] === orderRow.articleVariant.variantDetail1.variantDetailName;\n            });\n            if (rows !== undefined) {\n                _.forEach(rows, function (row) {\n                    orderRow.purchaseCost = parseFloat(row['purchaseCost']);\n                    orderRow.originalPurchasePrice = parseFloat(row['originalPurchasePrice']);\n                    orderRow.discountPercent = parseFloat(row['discountPercent']);\n                    orderRow.standardCostAddPercent = parseFloat(row['standardCostAddPercent']);\n                    orderRow.effectivePurchasePrice = parseFloat(row['effectivePurchasePrice']);\n                    orderRow.shippingCost = parseFloat(row['shippingCost']);\n                    orderRow.customsPercent = parseFloat(row['customsPercent']);\n                    orderRow.otherCosts = parseFloat(row['otherCosts']);\n                });\n            }\n        });\n\n        vm.orderChangeCount += 1;\n    }\n\n    function transferVariantPurchaseCostDataToOrder() {\n        _.forEach(vm.currentOrderArticle.orderRows, function (orderRow) {\n            var rows = _.filter(vm.colorVariantRelatedPurchaseCosts, function (row) {\n                return row['color'] === orderRow.articleVariant.variantDetail1.variantDetailName &&\n                    row['size'] === orderRow.articleVariant.variantDetail2.variantDetailName;\n            });\n            if (rows !== undefined) {\n                _.forEach(rows, function (row) {\n                    orderRow.purchaseCost = parseFloat(row['purchaseCost']);\n                    orderRow.originalPurchasePrice = parseFloat(row['originalPurchasePrice']);\n                    orderRow.discountPercent = parseFloat(row['discountPercent']);\n                    orderRow.standardCostAddPercent = parseFloat(row['standardCostAddPercent']);\n                    orderRow.effectivePurchasePrice = parseFloat(row['effectivePurchasePrice']);\n                    orderRow.shippingCost = parseFloat(row['shippingCost']);\n                    orderRow.customsPercent = parseFloat(row['customsPercent']);\n                    orderRow.otherCosts = parseFloat(row['otherCosts']);\n                });\n            }\n        });\n\n        vm.orderChangeCount += 1;\n    }\n\n    function hasGridQuantities() {\n        var hasQuantities = false;\n\n        if (vm.currentOrderArticle && vm.currentOrderArticle.orderRows) {\n            _.forEach(vm.currentOrderArticle.orderRows, function (row) {\n                if (row.quantity > 0) { hasQuantities = true; }\n            });\n        }\n\n        return hasQuantities;\n    }\n\n    function hasGridDifferentVariantPrices() {\n        if (vm.currentOrderArticle.orderRows.length === 0) {\n            return false;\n        }\n\n        var firstRow = vm.currentOrderArticle.orderRows[0];\n\n        var rows = vm.currentOrderArticle.orderRows.filter(x => x.id !== 0)\n\n        var isAllEqual = _.every(rows, function(orderRow) {\n            return orderRow.originalPurchasePrice === firstRow.originalPurchasePrice &&\n                   orderRow.discountPercent === firstRow.discountPercent &&\n                   orderRow.shippingCost === firstRow.shippingCost &&\n                   orderRow.customsPercent === firstRow.customsPercent &&\n                   orderRow.otherCosts === firstRow.otherCosts &&\n                   orderRow.standardCostAddPercent === firstRow.standardCostAddPercent &&\n                   orderRow.systemStatus === firstRow.systemStatus;\n        });\n\n        return !isAllEqual;\n    }\n\n    function recalculateGridTotals() {\n        if (vm.currentOrderArticle === undefined) {\n            return;\n        }\n        if (vm.colorRelatedPurchaseCosts && vm.colorRelatedPurchaseCosts.length > 0) {\n            var variant2Details = [];\n            var variant1Details = [];\n            _.forEach(vm.currentOrderArticle.orderRows, function (orderRow) {\n                if (!_.find(variant2Details, function (vd) { return vd.id === orderRow.articleVariant.variantDetail2.id; })) {\n                    variant2Details.push(orderRow.articleVariant.variantDetail2);\n                }\n            });\n\n            _.forEach(vm.currentOrderArticle.orderRows, function (orderRow) {\n                if (!_.find(variant1Details, function (vd) { return vd.id === orderRow.articleVariant.variantDetail1.id; })) {\n                    variant1Details.push(orderRow.articleVariant.variantDetail1);\n                }\n            });\n\n            _.forEach(variant1Details, function (vd1) {\n                var quantitySum = 0;\n                var row = _.find(rowData, function (row) { return row.variantDetails1Name === vd1.variantDetailName; });\n                _.forEach(variant2Details, function (vd2) {\n                    var parsed = parseInt(row[vd2.variantDetailName]);\n                    if (!_.isNaN(parsed)) {\n                        quantitySum += parsed;\n                    }\n                });\n                row['rowTotal'] = quantitySum;\n\n                if (vm.colorRelatedPurchaseCosts && vm.colorRelatedPurchaseCosts.length > 0) {\n                    var purchaseCostRow = _.find(vm.colorRelatedPurchaseCosts, function (currentRow) { return currentRow.color === vd1.variantDetailName; });\n                    if (purchaseCostRow) {\n                        purchaseCostRow.sumQuantity = quantitySum;\n\n                        purchaseCostRow.effectivePurchasePrice = calculateEffectivePurchasePrice(purchaseCostRow.originalPurchasePrice, purchaseCostRow.discountPercent);\n                        purchaseCostRow.purchaseCost = getTotalRowSum(purchaseCostRow);\n                    }\n                }\n            });\n\n            if (rowsGrid.invalidate) {\n                rowsGrid.invalidate();\n            }\n            if (pricesGrid.invalidate) {\n                pricesGrid.invalidate();\n            }\n        }\n    }\n\n    function calculateEffectivePurchasePrice(originalPurchasePrice, discountPercent) {\n        var discountAmount = (originalPurchasePrice * discountPercent / 100);\n        return originalPurchasePrice - discountAmount;\n    }\n\n    function getTotalRowSum(rowItem) {\n        var pp = calculateEffectivePurchasePrice(rowItem.originalPurchasePrice, rowItem.discountPercent);\n        var ppCurrencyConverted = pp * vm.order.currencyRate;\n        var customsAmount = (ppCurrencyConverted + rowItem.shippingCost) * (rowItem.customsPercent / 100);\n        var standardCostAddAmount = (ppCurrencyConverted + rowItem.shippingCost + customsAmount + rowItem.otherCosts) * (rowItem.standardCostAddPercent / 100);\n\n        var result = ppCurrencyConverted + rowItem.shippingCost + customsAmount + rowItem.otherCosts + standardCostAddAmount;\n\n        return result;\n    }\n\n    function isSingleVariantArticle(article) {\n        if (article === undefined) { return }\n        return !article.isVariant || article.articleVariants.length < 2;\n    }\n\n    function recalculateVariantGridTotals() {\n        if (vm.currentOrderArticle === undefined) {\n            return;\n        }\n        if (vm.colorVariantRelatedPurchaseCosts && vm.colorVariantRelatedPurchaseCosts.length > 0) {\n            _.forEach(vm.currentOrderArticle.orderRows, function (orderRow) {\n                var purchaseCostRow = _.find(vm.colorVariantRelatedPurchaseCosts, function (purchaseRow) {\n                    return purchaseRow.color === orderRow.articleVariant.variantDetail1.variantDetailName &&\n                        purchaseRow.size === orderRow.articleVariant.variantDetail2.variantDetailName;\n                });\n\n                if (purchaseCostRow) {\n                    purchaseCostRow.quantity = purchaseCostRow.quantity;\n                    purchaseCostRow.effectivePurchasePrice = calculateEffectivePurchasePrice(purchaseCostRow.originalPurchasePrice, purchaseCostRow.discountPercent);\n                    purchaseCostRow.purchaseCost = getTotalRowSum(purchaseCostRow);\n\n                    _.forEach(purchaseCostRow.rows, function (currentPurchaseCostRow) {\n                        currentPurchaseCostRow.quantity = orderRow.quantity;\n                        purchaseCostRow.effectivePurchasePrice = calculateEffectivePurchasePrice(purchaseCostRow.originalPurchasePrice, purchaseCostRow.discountPercent);\n                        purchaseCostRow.purchaseCost = getTotalRowSum(currentPurchaseCostRow);\n\n                    });\n                }\n            });\n\n            if (rowsGrid.invalidate) {\n                rowsGrid.invalidate();\n            }\n            if (variantPricesGrid.invalidate) {\n                variantPricesGrid.invalidate();\n            }\n        }\n    }\n}\n","angular.module('components.caOrderScannerNavigation', [])\n    .component('caOrderScannerNavigation', {\n        templateUrl: 'main/order/orderdelivery/components/orderscannernavigation.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orderChangeCount: '<',\n            order: '<',\n            onArticleSelected: '&',\n            deliverOrder: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller() {\n    var vm = this;\n\n    var deliverWholeOrderCode = \"444e45\";\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.navigationScannerInput = \"\";\n\n    vm.scanInputKeyPress = scanInputKeyPress;\n\n    function onInit() {\n        focusScanningInputField();\n    }\n    function onChanges() {\n\n    }\n    function onDestroy() {\n\n    }\n\n    function focusScanningInputField() {\n        var scanField = angular.element(\"#navScanInput\");\n        scanField.focus();\n    }\n\n    function scanInputKeyPress(ev) {\n        var enterKeyCode = 13;\n        if (ev !== undefined && ev.keyCode === enterKeyCode) {\n            processNavigationScannerInput(vm.navigationScannerInput);\n        }\n    }\n\n    function processNavigationScannerInput(input) {\n        // Determine whether the scanned code is a command or just a lookup\n        switch (input) {\n            case deliverWholeOrderCode:\n                console.log(\"Delivering whole order\");\n                vm.deliverOrder();\n                break;\n            default:\n\n                var orderArticle = _.find(vm.order.orderArticles, function(ordArt) {\n                    var alternativeArticleNumber = ordArt.article.alternativeArticleNumber;\n                    alternativeArticleNumber = alternativeArticleNumber.normalize('NFD').replace(/[\\u0300-\\u036f]/g,\"\");\n                    return alternativeArticleNumber === input;\n                });\n                if (orderArticle !== undefined) {\n                    vm.onArticleSelected({article: orderArticle.article});\n                } else {\n                    console.log(\"Unknown\");\n                }\n                break;\n        }\n\n        vm.navigationScannerInput = \"\";\n    }\n}\n","angular.module('components.caOrderTotals', [])\n    .component('caOrderTotals', {\n        templateUrl: 'main/order/orderdelivery/components/ordertotals.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orderChangeCount: '<',\n            order: '='\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $rootScope) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    var grid = {};\n    vm.orders = [];\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.haveOrderArticlePurchaseCostClaim = haveOrderArticlePurchaseCostClaim();\n\n    //Methods\n    vm.captureGrid = captureGrid;\n    vm.shouldShowFromLocation = shouldShowFromLocation;\n    vm.shouldShowSupplier = shouldShowSupplier;\n    vm.shouldShowDestination = shouldShowDestination;\n\n    function onInit() {\n        $scope.$watch(function() { return vm.orderChangeCount; }, function() {\n            recalculateAggregatedData();\n            refreshGrid();\n        });\n        vm.orders = [vm.order];\n    }\n\n    function onChanges() {\n    }\n\n    function onDestroy() {\n    }\n\n    function captureGrid(s) {\n        grid = s;\n    }\n\n    function shouldShowSupplier() {\n        return vm.order.orderType.orderSystemType === 'store' || vm.order.orderType.orderSystemType === 'automatic' || vm.order.orderType.orderSystemType === 'return';\n    }\n    function shouldShowFromLocation() {\n        return vm.order.orderType.orderSystemType === 'internal' || vm.order.orderType.orderSystemType === 'automaticInternal' || vm.order.orderType.orderSystemType === 'return';\n    }\n    function shouldShowDestination() {\n        return vm.order.orderType.orderSystemType !== 'return';\n    }\n\n    function haveOrderArticlePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read){\n            return false\n        }\n\n        return true\n    }\n\n    function recalculateAggregatedData() {\n        vm.order.summarizedPurchaseCost = 0;\n        vm.order.summarizedSalesPrice = 0;\n        vm.order.summarizedQuantity = 0;\n        vm.order.summarizedDeliveredQuantity = 0;\n        vm.order.deliveredValue = 0;\n\n        _.forEach(vm.order.orderArticles, function(orderArticle) {\n            _.forEach(orderArticle.orderRows, function(orderRow) {\n                vm.order.summarizedPurchaseCost += orderRow.quantity * orderRow.purchaseCost;\n                vm.order.summarizedSalesPrice += orderRow.articleVariant.salesPrice * orderRow.quantity;\n                vm.order.summarizedQuantity += orderRow.quantity;\n                _.forEach(orderRow.deliveryRows, function(deliveryRow) {\n                    if (deliveryRow.systemStatus.toLowerCase() === 'delivered' && deliveryRow.deliveryRowType === 'deliveryIn') {\n                         vm.order.summarizedDeliveredQuantity += deliveryRow.quantity;\n                         vm.order.deliveredValue += deliveryRow.quantity * orderRow.purchaseCost;\n                    }\n                });\n            });\n\n        });\n    }\n\n    function refreshGrid() {\n        if (grid.invalidate) {\n            grid.invalidate();\n        }\n        if (grid.refresh) {\n            grid.refresh();\n        }\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order.new', {\n        url: '/new',\n        templateUrl: 'main/order/orderdelivery/orderdelivery.tpl.html',\n        controller: 'OrderDeliveryController as vm',\n        resolve: {\n            carrier: function () {\n                return {\n                    data: {\n                        links: [],\n                        order: {\n                            orderNumber: 0,\n                            orderArticles: [],\n                            orderType: { orderSystemType: 'undefined' },\n                            // orderStatus: { orderSystemStatus: 'Created' },\n                            systemStatus: 'Created',\n                            statusName: 'system.orderSystemStatus.Created',\n                            // status: 'Created',\n                            orderNumberExternal: \"\",\n                            company: {},\n                            fromLocation: {},\n                            supplierReference: \"\",\n                            // Destination is kept in vm.selectedDestination\n                            plannedDeliveryDate: new Date(),\n                            collection: {},\n                            termsOfDelivery: \"\",\n                            ourReference: \"\",\n                            cashRegDiscount: \"\", // ???\n                            user: {},\n                            summarizedDeliveredQuantity: 0,\n                            summarizedPurchaseCost: 0,\n                            summarizedQuantity: 0,\n                            summarizedSalesPrice: 0,\n                            canApproveOrder:false\n                        },\n                        deliveryPlanningTemplate: []\n                    }\n                };\n            },\n            isModifying: function () { return true; },\n            isCopying: function () { return false; },\n            closeHeaderOnOpen: function () { return false; }\n        },\n        params: {\n            orderSystemType: null,\n            articles: null,\n            supplierId: null\n        }\n    });\n\n    $stateProvider.state('order.copyorder', {\n        url: '/copy/{orderId}',\n        templateUrl: 'main/order/orderdelivery/orderdelivery.tpl.html',\n        controller: 'OrderDeliveryController as vm',\n        resolve: {\n            carrier: orderResolver,\n            isModifying: function () { return true; },\n            isCopying: function () { return true; },\n            closeHeaderOnOpen: function () { return false; }\n        }\n    });\n\n    $stateProvider.state('order.modifyorder', {\n        url: '/modify/{orderId}',\n        templateUrl: 'main/order/orderdelivery/orderdelivery.tpl.html',\n        controller: 'OrderDeliveryController as vm',\n        resolve: {\n            carrier: orderResolver,\n            isModifying: function () { return true; },\n            isCopying: function () { return false; },\n            closeHeaderOnOpen: function () { return true; }\n        }\n    });\n\n    $stateProvider.state('order.orderdelivery', {\n        url: '/deliver/{orderId}',\n        templateUrl: 'main/order/orderdelivery/orderdelivery.tpl.html',\n        controller: 'OrderDeliveryController as vm',\n        resolve: {\n            carrier: orderResolver,\n            isModifying: function () { return false; },\n            isCopying: function () { return false; },\n            closeHeaderOnOpen: function () { return true; }\n        },\n        params: {\n            usingScannerNavigation: false\n        }\n    });\n}\n\n// @ngInject\nfunction orderResolver($stateParams, OrdersApiService) {\n    return OrdersApiService.getById($stateParams.orderId);\n}\n\n// @ngInject\nfunction OrderDeliveryController($state, $stateParams, $scope, $translate, carrier, isModifying, isCopying,\n                                ResourcesService, loadSpinnerService, $q,\n                                OrdersApiService, ProductsApiService, ToasterService,\n                                confirmationDialogService, deliveryConfirmationDialogService, OrderService) {\n    var vm = this;\n\n    vm.usingScannerNavigation = $stateParams.usingScannerNavigation;\n    vm.inputOrderSystemType = $stateParams.orderSystemType;\n    vm.inputSupplierId = $stateParams.supplierId;\n    vm.inputArticles = $stateParams.articles;\n\n    //Properties\n    vm.isModifying = isModifying;\n    vm.isCopying = isCopying;\n    vm.order = carrier.data.order;\n    vm.links = carrier.data.links;\n    vm.copiedOrderId = 0;\n    vm.scannedBarcodes = \"\";\n    vm.barcodesSendList = [];\n    vm.deliveryDate = new Date();\n    vm.currentOrderArticle = {};\n    vm.orderArticleSwitchingLocked = false;\n    vm.isShowingScanningForm = false;\n    vm.showOrderMetadataPanel = isModifying;\n    vm.orderChangeCount = 0;\n    vm.navigationScannerInput = \"\";\n    vm.visibility = {\n        orderHeadInput: !vm.closeHeaderOnOpen,\n        orderArticlesAddForm: !vm.isModifying\n    };\n    vm.articlesOnOrder = [];\n\n    vm.deliveryPlanningTemplate = carrier.data.deliveryPlanningTemplate;\n    //Methods\n    vm.toggleScanningForm = toggleScanningForm;\n    vm.downloadOrderLabels = downloadOrderLabels;\n    vm.getOrderPrintout = getOrderPrintout;\n    vm.toggleMetadataPanelVisibility = toggleMetadataPanelVisibility;\n    vm.viewOrderArticle = viewOrderArticle;\n    vm.disableOrderArticleSwitching = disableOrderArticleSwitching;\n    vm.enableOrderArticleSwitching = enableOrderArticleSwitching;\n    vm.isAllowedtoOutDeliverOrder = isAllowedtoOutDeliverOrder;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.isAllowedToUseScanningForm = isAllowedToUseScanningForm;\n    vm.saveOrder = saveOrder;\n    vm.showApproveButton = showApproveButton;\n    vm.approveOrder = approveOrder;\n    vm.outDeliverOrder = outDeliverOrder;\n    vm.receiveArticles = receiveArticles;\n    vm.deliverOrder = deliverOrder;\n    vm.receiveOrderArticles = receiveOrderArticles;\n    vm.finalizeDelivery = finalizeDelivery;\n    vm.returnToState = returnToState;\n    vm.canDeliverIn = canDeliverIn;\n    vm.canDeliverEntireOrder = canDeliverEntireOrder;\n    vm.isAllowedToAddProduct = canAddToOrderDuringEdit();\n\n\n    activate();\n\n    function activate() {\n        vm.order.plannedDeliveryDate = parseDate(vm.order.plannedDeliveryDate);\n\n        // Watch order destination\n        $scope.$watch(function () { return vm.isModifying; }, function () {\n            if (vm.isModifying) {\n                if (vm.order.destination && vm.order.destination.resellerPriceList &&\n                    vm.order.destination.resellerPriceListId && vm.order.destination.resellerPriceListId !== -1) {\n                    //Load reseller price list\n                    OrdersApiService.getResellerPriceList(vm.order.destination.resellerPriceListId).then(function (response) {\n                        vm.order.destination.resellerPriceList = response;\n                    }, function (error) {\n                        ToasterService.showError(error.message);\n                    });\n                }\n            }\n        });\n\n        //Must make sure order meta data has been loaded before populating order rows from inputArticles\n        //In this case, currencyRate must be set before effectivePurchasePrice can be calculated\n        $scope.$watch(function () { return vm.order.currencyRate; }, function (newValue, oldValue) {\n            if (newValue && !oldValue) {\n                if (vm.inputArticles && vm.inputArticles !== null) {\n                    addArticlesToOrder();\n                }\n\n                vm.articlesOnOrder = [];\n                _.forEach(vm.order.orderArticles, function (orderArticle) {\n                    vm.articlesOnOrder.push({ id: orderArticle.article.id });\n                });\n            }\n        });\n\n        if (vm.isCopying) {\n            resetOrderForCopying();\n        }\n\n        _.forEach(vm.order.orderArticles, function(orderArticle){\n            fillOutOrderRows(orderArticle);\n        });\n    }\n\n    function canAddToOrderDuringEdit(){\n        var hasOrderId = vm.order.id !== undefined && vm.order.id > 0;\n        return !hasOrderId || vm.order.systemStatus === \"created\"\n    }\n\n    function addArticlesToOrder() {\n        //Get full article information\n        var promises = [];\n        var results = [];\n        loadSpinnerService.start('mainSpinner');\n        _.forEach(vm.inputArticles, function (article) {\n            var articleFetchPromise = ProductsApiService.getProduct(article.id);\n            promises.push(articleFetchPromise);\n        });\n\n        $q.all(promises).then(function (responses) {\n            _.forEach(responses, function (response) {\n                results.push(response);\n            });\n\n            //Add articles to order article and order rows\n            receiveArticles(results);\n\n            //Add quantityToOrder to order rows\n            _.forEach(vm.inputArticles, function (article) {\n                var orderArticle = _.find(vm.order.orderArticles, { articleId: article.id });\n                if (orderArticle) {\n                    _.forEach(article.articleVariants, function (articleVariant) {\n                        var orderRow = _.find(orderArticle.orderRows, function (row) {\n                            return row.articleVariant.id === articleVariant.id;\n                        });\n                        if (orderRow && articleVariant.quantityToOrder > 0) {\n                            orderRow.quantity = articleVariant.quantityToOrder;\n                        }\n                    });\n                }\n            });\n\n            vm.orderChangeCount += 1;\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n    function resetOrderForCopying() {\n        vm.copiedOrderId = vm.order.id;\n        vm.order.id = 0;\n        vm.order.orderNumber = 0;\n        vm.order.orderNumberExternal = '';\n        vm.order.systemStatus = 'created';\n        vm.order.statusName = 'system.orderSystemStatus.Created';\n        // vm.order.orderStatus = {\n        //     id: 1,\n        //     orderSystemStatus: \"created\",\n        //     isFinalState: false,\n        //     orderStatusName: \"Skapad\"\n        // };\n\n        vm.order.approved = false;\n        vm.order.hasBeenPrinted = false;\n\n        if (vm.order.orderType.orderSystemType === 'store' || vm.order.orderType.orderSystemType === 'internal') {\n            vm.order.destination = undefined;\n        }\n        if (vm.order.orderType.orderSystemType === 'return' || vm.order.orderType.orderSystemType === 'internal') {\n            vm.order.fromLocation = undefined;\n        }\n        vm.order.plannedDeliveryDate = new Date();\n        vm.order.createdDate = new Date();\n\n        _.forEach(vm.order.orderArticles, function (ordArt) {\n            _.forEach(ordArt.orderRows, function (ordRow) {\n                ordRow.deliveryRows = [];\n                // ordRow.orderStatus = {\n                //     id: 1,\n                //     orderSystemStatus: \"created\",\n                //     isFinalState: false,\n                //     orderStatusName: \"Skapad\"\n                // };\n                ordRow.systemStatus = \"created\";\n                ordRow.statusName = \"system.orderSystemStatus.Created\";\n            });\n\n            ordArt.lowestSystemStatusAmongRows = \"created\";\n            ordArt.lowestStatusName = \"system.orderSystemStatus.Created\";\n\n            // ordArt.lowestStatusAmongRows = {\n            //     id: 1,\n            //     orderSystemStatus: \"created\",\n            //     isFinalState: false,\n            //     orderStatusName: \"Skapad\"\n            // };\n        });\n    }\n\n    function finalizeDelivery() {\n        confirmationDialogService.showDialog($translate.instant(\"order.confirmFinalizeDeliveryMessage\"), 'warning').then(function (result) {\n            if (result === true) {\n                OrdersApiService.markAsDelivered(vm.order.id).then(function (response) {\n                    ToasterService.showSuccess($translate.instant(\"order.deliveryFinalized\"), $translate.instant(\"common.deliver\"));\n                    $state.go('order.ordersearch', {\n                        orderId: vm.order.id,\n                        searchTerm: vm.searchTerm,\n                        useScannerNavigation: vm.useScannerNavigation,\n                        showOnlyUndeliveredOrders: vm.showOnlyUndeliveredOrders,\n                        orderTypes: vm.orderTypes\n                    });\n                }, function (error) {\n                    console.log(error);\n                }).then(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function returnToState() {\n        if (vm.order && vm.order.id && vm.order.id > 0) {\n            $state.go('order.ordersearch', {\n                orderId: vm.order.id,\n                searchTerm: vm.searchTerm,\n                useScannerNavigation: vm.useScannerNavigation,\n                showOnlyUndeliveredOrders: vm.showOnlyUndeliveredOrders,\n                orderTypes: vm.orderTypes\n            });\n        } else if (vm.isCopying) {\n            $state.go('order.ordersearch', {\n                orderId: vm.copiedOrderId,\n                searchTerm: vm.searchTerm,\n                useScannerNavigation: vm.useScannerNavigation,\n                showOnlyUndeliveredOrders: vm.showOnlyUndeliveredOrders,\n                orderTypes: vm.orderTypes\n            });\n        } else {\n            $state.go('order.ordersearch', {\n                searchTerm: vm.searchTerm,\n                useScannerNavigation: vm.useScannerNavigation,\n                showOnlyUndeliveredOrders: vm.showOnlyUndeliveredOrders,\n                orderTypes: vm.orderTypes\n            });\n        }\n    }\n\n    //Transform from string to Date, and make sure date has correct timezone and no time information\n    function parseDate(input) {\n        if (!(input instanceof Date)) {\n            var newDate = new Date(input);\n            return new Date(Date.UTC(newDate.getFullYear(), newDate.getMonth(), newDate.getDate()));\n        } else {\n            return new Date(Date.UTC(input.getFullYear(), input.getMonth(), input.getDate()));\n        }\n    }\n\n    function outDeliverOrder() {\n        if ((vm.order.destination !== undefined && vm.order.destination.id !== undefined) &&\n            (vm.order.fromLocation !== undefined && vm.order.fromLocation.id !== undefined) &&\n            vm.order.destination.id === vm.order.fromLocation.id) {\n            ToasterService.showError($translate.instant('order.error.sameLocationAsDestination'), $translate.instant('common.error'));\n            return;\n        }\n\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.markAsUndelivered(vm.order.id).then(function (response) {\n            $state.go('order.ordersearch', {\n                orderId: vm.order.id,\n                searchTerm: vm.searchTerm,\n                useScannerNavigation: vm.useScannerNavigation,\n                showOnlyUndeliveredOrders: vm.showOnlyUndeliveredOrders,\n                orderTypes: vm.orderTypes\n            });\n        }, function (error) {\n            console.log(error);\n        }).then(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function isAllowedtoOutDeliverOrder() {\n        var isAllowed = vm.order && vm.order.id &&\n            OrderService.canShipOrder(vm.links);\n        return isAllowed;\n    }\n\n    function canDeliverIn() {\n        return OrderService.canPartDeliverOrder(vm.links);\n    }\n\n    function canDeliverEntireOrder() {\n        // var isOrderStatusOtherThanDelivered = !vm.order.orderStatus || vm.order.orderStatus.orderSystemStatus !== 'delivered';\n        var isOrderStatusOtherThanDelivered = vm.order.systemStatus.toLowerCase() !== 'delivered';\n        var canDeliverOrder = OrderService.canDeliverOrder(vm.links);\n        return canDeliverOrder && isOrderStatusOtherThanDelivered;\n    }\n\n    function disableOrderArticleSwitching() {\n        vm.orderArticleSwitchingLocked = true;\n        if (!$scope.$$phase) {\n            $scope.$apply();\n        }\n    }\n\n    function enableOrderArticleSwitching() {\n        vm.orderArticleSwitchingLocked = false;\n        if (!$scope.$$phase) {\n            $scope.$apply();\n        }\n    }\n\n    Date.prototype.addDays = function(days) {\n        var dat = new Date(this.valueOf());\n        dat.setDate(dat.getDate() + days);\n        return dat;\n    };\n    Date.prototype.getDatum = function() {\n        var dat = new Date(this.valueOf());\n        var month = dat.getMonth() + 1;\n        if (month < 10) { month = '0' + month; }\n        var date = dat.getDate();\n        if (date < 10) { date = '0' + date; }\n        var str = dat.getFullYear() + '-' + month + '-' + date;\n        return str;\n    };\n\n    function deliverOrder() {\n        var deliveryDate = new Date();\n        var earliestAllowedDeliveryDate = vm.order.earliestAllowedDeliveryDate ?\n            new Date(vm.order.earliestAllowedDeliveryDate).getDatum() :\n            new Date(vm.order.plannedDeliveryDate.addDays(-30)).getDatum(); //Needs fetch the most recent date from stock table, LastInventoriedDate\n        deliveryConfirmationDialogService.showDialog(\n                $translate.instant(\"order.confirmDeliverWholeOrder\"),\n                deliveryDate,\n                earliestAllowedDeliveryDate\n            ).then(function (result) {\n            if (result.isCompleted === true) {\n                loadSpinnerService.start('mainSpinner');\n                OrdersApiService.deliverOrderWithDate(vm.order.id, result.deliveryDate).then(function(response) {\n                        ToasterService.showSuccess($translate.instant(\"order.delivered\"), $translate.instant(\"common.deliver\"));\n                        $state.go('order.ordersearch', {\n                            orderId: vm.order.id,\n                            searchTerm: vm.searchTerm,\n                            useScannerNavigation: vm.useScannerNavigation,\n                            showOnlyUndeliveredOrders: vm.showOnlyUndeliveredOrders,\n                            orderTypes: vm.orderTypes\n                        });\n                    },\n                    function(error) {\n                        handleError(error);\n                    }\n                ).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function toggleScanningForm() {\n        if (!vm.isShowingScanningForm) {\n            vm.isShowingScanningForm = true;\n        } else {\n            vm.isShowingScanningForm = false;\n            vm.scannedBarcodes = \"\";\n        }\n    }\n\n    function resetOrderArticleFlags() {\n        _.forEach(vm.order.orderArticles, function (orderArticle) {\n            orderArticle['shouldDeliverThisArticle'] = false;\n\n            _.forEach(orderArticle.orderRows, function (orderRow) {\n                orderRow['hasBeenModifiedSinceLoad'] = false;\n            });\n        });\n    }\n\n    function viewOrderArticle(article) {\n        var orderArticle = _.find(vm.order.orderArticles, function (orderArticle) {\n            return orderArticle.article.id === article.id;\n        });\n\n        fillOutOrderRows(orderArticle);\n\n        vm.currentOrderArticle = orderArticle;\n        vm.showOrderMetadataPanel = vm.isCopying ? true : false;\n    }\n\n    function createOrderRows(articleVariants, orderArticle, stocks) {\n        return OrderService.createOrderRowsFromArticleVariants(vm.order, articleVariants, orderArticle, stocks);\n    }\n\n    function getVariant(variantDetails1Name, variantDetails2Name) {\n        var orderRowArticleVariantIds = [];\n\n        _.forEach(vm.currentOrderArticle.orderRows, function (orderRow) {\n            orderRowArticleVariantIds.push(orderRow.articleVariant.id);\n        });\n\n        var orderRows = [];\n        _.forEach(vm.order.orderArticles, function (orderArticle) {\n            _.forEach(orderArticle.orderRows, function (orderRow) {\n                if (_.find(orderRowArticleVariantIds, function (articleVariantId) { return articleVariantId === orderRow.articleVariant.id; })) {\n                    orderRows.push(orderRow);\n                }\n            });\n        });\n\n        var row = _.find(orderRows, {\n            articleVariant: {\n                variantDetail1: { variantDetailName: variantDetails1Name },\n                variantDetail2: { variantDetailName: variantDetails2Name }\n            }\n        });\n\n        return row;\n    }\n\n    function saveOrder() {\n        // Prepare the list of barcodes.\n        vm.barcodesSendList = [];\n        _.forEach(vm.scannedBarcodes.split('\\n'), function (barcode) {\n            vm.barcodesSendList.push(barcode.trim());\n        });\n\n        //Strip unnecessary data\n        var orderToSave = angular.copy(vm.order);\n        if (orderToSave.destination && orderToSave.destination.id > 0) {\n            orderToSave.destination = { id: orderToSave.destination.id };\n        }\n        if (orderToSave.fromLocation && orderToSave.fromLocation.id > 0) {\n            orderToSave.fromLocation = { id: orderToSave.fromLocation.id };\n        }\n        _.forEach(orderToSave.orderArticles, function (orderArticle) {\n            orderArticle.article = { id: orderArticle.article.id };\n            _.forEach(orderArticle.orderRows, function (orderRow) {\n                orderRow.articleVariant = {\n                    id: orderRow.articleVariant.id,\n                    article: { id: orderRow.articleVariant.article.id }\n                };\n                if (orderRow.destination) { orderRow.destination = { id: orderRow.destination.id }; }\n                _.forEach(orderRow.deliveryRows, function (deliveryRow) {\n                    deliveryRow.articleVariant = {\n                        id: deliveryRow.articleVariant.id,\n                        article: { id: deliveryRow.articleVariant.article.id }\n                    };\n                    deliveryRow.location = { id: deliveryRow.location.id };\n                });\n            });\n        });\n\n        // TODO: Fix the source of the problem instad of using this quick fix.\n        // This should be fixed by wrinting a new API method that only returns a very bare bones list of locations, instead of the full location information.\n        // Testing removing som superflous data.\n        if (vm.isModifying && (orderToSave.id === undefined || orderToSave.id === 0)) {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.createWholeOrder(orderToSave, vm.barcodesSendList, vm.deliveryPlanningTemplate).then(function (response) {\n                var responseData = response.data;\n                _.forEach(responseData.orderArticles, function (orderArticle) {\n                    fillOutOrderRows(orderArticle);\n                });\n                setOrder(responseData);\n                vm.order.plannedDeliveryDate = parseDate(vm.order.plannedDeliveryDate);\n                vm.scannedBarcodes = \"\";\n                if (vm.isShowingScanningForm) {\n                    toggleScanningForm();\n                }\n\n                vm.orderChangeCount += 1;\n\n                $state.go('order.modifyorder', { orderId: vm.order.id });\n            }, function (error) {\n                console.log(error);\n                ToasterService.showError(error.message, $translate.instant('common.error'));\n            }).finally(function () {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        } else {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.updateWholeOrder(orderToSave).then(function (response) {\n                var responseData = response.data;\n                _.forEach(responseData.orderArticles, function (orderArticle) {\n                    fillOutOrderRows(orderArticle);\n                });\n                setOrder(responseData);\n                vm.order.plannedDeliveryDate = parseDate(vm.order.plannedDeliveryDate);\n                vm.scannedBarcodes = \"\";\n                if (vm.isShowingScanningForm) {\n                    toggleScanningForm();\n                }\n                vm.orderChangeCount += 1;\n            }, function (error) {\n                console.log(error);\n                ToasterService.showError(error.message, $translate.instant('common.error'));\n            }).finally(function () {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function setOrder(orderToSet) {\n        // check current state\n        var currentArticleId;\n        if (vm.currentOrderArticle && vm.currentOrderArticle.article) {\n            currentArticleId = vm.currentOrderArticle.article.id;\n        }\n\n        vm.order = orderToSet;\n\n        if (currentArticleId) {\n            vm.currentOrderArticle = _.find(vm.order.orderArticles, function (orderArticle) {\n                return currentArticleId === orderArticle.article.id;\n            });\n        }\n    }\n\n    function showApproveButton() {\n        if (vm.order.canApproveOrder === true) {\n            var orderIsSaved = vm.order.id !== undefined && vm.order.id > 0;\n\n            return orderIsSaved && OrderService.canApproveOrder(vm.links);\n        }\n        return false;\n    }\n\n    function approveOrder() {\n        if (!vm.order.approved && vm.isModifying && vm.order.id && vm.order.id > 0) {\n            //Confirm approve order\n            var approveMessage = $translate.instant('order.confirmApproveOrder').replace(/%1/g, '<br>');\n            confirmationDialogService.showDialog(approveMessage).then(function (result) {\n                if (result === false) {\n                    return;\n                }\n\n                loadSpinnerService.start('mainSpinner');\n                OrdersApiService.approveOrder(vm.order.id).then(function (response) {\n                    ToasterService.showSuccess($translate.instant(\"order.orderApproved\"), $translate.instant(\"common.order\"));\n                    vm.order.approved = true;\n                    vm.orderChangeCount += 1;\n                }, function (error) {\n                    console.log(error);\n                    ToasterService.showError($translate.instant(\"order.unableApproveOrder\"), $translate.instant(\"common.error\"));\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            });\n        }\n    }\n\n    function isAllowedToSave() {\n        var hasOrderType = vm.order.orderType !== undefined && vm.order.orderType.id !== undefined;\n        var hasCurrency = vm.order.currency !== undefined && vm.order.currency.id !== undefined;\n        var hasDestination = vm.order.destination !== undefined && vm.order.destination.id !== undefined;\n        var hasFromLocation = vm.order.fromLocation !== undefined && vm.order.fromLocation.id !== undefined;\n        var hasCompany = vm.order.company !== undefined && vm.order.company.id !== undefined;\n        var hasCurrencyRate = vm.order.currencyRate !== undefined && vm.order.currencyRate !== \"\";\n\n        if (hasOrderType && hasCurrency && hasCurrencyRate) {\n            if (vm.order.orderType.orderSystemType.toLowerCase() === 'store' && hasCompany && hasDestination) {\n                return true;\n            } else if (vm.order.orderType.orderSystemType.toLowerCase() === 'internal' && hasFromLocation && hasDestination) {\n                return true;\n            } else if (vm.order.orderType.orderSystemType.toLowerCase() === 'return' && hasCompany && hasFromLocation) {\n                return true;\n            } else if (vm.order.orderType.orderSystemType.toLowerCase() === 'automatic' && hasCompany && hasDestination) {\n                return true;\n            } else if (vm.order.orderType.orderSystemType.toLowerCase() === 'automaticinternal' && hasFromLocation && hasDestination) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    function isAllowedToUseScanningForm() {\n        if (vm.order.orderArticles.length > 0) {\n            return false;\n        }\n        return true;\n    }\n\n    function receiveArticles(articles) {\n        for (var i = 0; i < articles.length; i++) {\n            var fakedOrderArticle = {\n                id: 0,\n                orderLineNumber: 0,\n                orderId: 0,\n                articleId: articles[i].id,\n                article: articles[i],\n                summarizedQuantity: 0,\n                summarizedDeliveredQuantity: 0,\n                summarizedPurchaseCost: 0,\n                summarizedSalesPrice: 0,\n\n                // lowestStatusAmongRows: {\n                //     orderSystemStatus: 'Created'\n                // },\n                lowestStatusName: 'system.OrderRowSystemStatus.Created',\n                LowestSystemStatusAmongRows: 'Created',\n                orderRows: []\n            };\n\n            vm.order.orderArticles.push(fakedOrderArticle);\n\n            fillOutOrderRows(fakedOrderArticle);\n        }\n\n        vm.articlesOnOrder = [];\n        _.forEach(vm.order.orderArticles, function (orderArticle) {\n            vm.articlesOnOrder.push({ id: orderArticle.article.id });\n        });\n\n        vm.orderChangeCount += 1;\n    }\n\n    function fillOutOrderRows(orderArticle) {\n        var missingArticleVariants = [];\n        _.forEach(orderArticle.article.articleVariants, function (artVar) {\n            if (!_.find(orderArticle.orderRows, function (orderRow) { return orderRow.articleVariant.id === artVar.id; })) {\n                missingArticleVariants.push(artVar);\n            }\n        });\n\n        var locationIds = [];\n        if (vm.order.fromLocation !== undefined && vm.order.fromLocation !== undefined && vm.order.fromLocation.id !== undefined && vm.order.fromLocation.id !== 0) {\n            locationIds.push(vm.order.fromLocation.id);\n        }\n        var articleVariantIds = [];\n        _.forEach(missingArticleVariants, function (av) { articleVariantIds.push(av.id); });\n\n        if (vm.order.orderType.orderSystemType.toLowerCase() === 'internal') {\n            loadSpinnerService.start('main-spinner');\n            OrdersApiService.getStocksForArticleVariants(articleVariantIds, locationIds).then(function (response) {\n                var stocks = response.data;\n\n                var missingOrderRows = createOrderRows(missingArticleVariants, orderArticle, stocks);\n\n                // don't show non-order rows for delivery form since we are not able to\n                // handle them in the back end.\n                if (vm.isModifying) {\n                    _.forEach(missingOrderRows, function (orderRow) {\n                        orderArticle.orderRows.push(orderRow);\n                    });\n                }\n\n            }, function (error) {\n                ToasterService.showError(error.message, $translate.instant('common.error'));\n            }).finally(function () {\n                loadSpinnerService.stop('main-spinner');\n            });\n        } else {\n            var missingOrderRows = createOrderRows(missingArticleVariants, orderArticle);\n\n            if (orderArticle && orderArticle.orderRows.length > 0) {\n                var orderRow = orderArticle.orderRows[0];\n                _.forEach(missingOrderRows, function(missingOrderRow) {\n                    missingOrderRow.discountPercent = orderRow.discountPercent;\n                    missingOrderRow.standardCostAddPercent = orderRow.standardCostAddPercent;\n                    missingOrderRow.shippingCost = orderRow.shippingCost;\n                    missingOrderRow.customsPercent = orderRow.customsPercent;\n                    missingOrderRow.otherCosts = orderRow.otherCosts;\n                });\n            }\n\n            if (vm.isModifying) {\n                _.forEach(missingOrderRows, function (orderRow) {\n                    orderArticle.orderRows.push(orderRow);\n                });\n            }\n        }\n\n    }\n\n    function downloadOrderLabels() {\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.downloadLabels(vm.order.id, vm.order.orderNumber).then(function (response) {\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getOrderPrintout() {\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.downloadAsPdf(vm.order.id).then(function (response) {\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n\n    function toggleMetadataPanelVisibility() {\n        vm.showOrderMetadataPanel = !vm.showOrderMetadataPanel;\n    }\n\n    function receiveOrderArticles(orderArticles) {\n        var fakedOrderArticles = orderArticles;\n\n        _.forEach(fakedOrderArticles, function (oa) {\n            _.forEach(oa.orderRows, function (or) {\n                or.destination = vm.order.destination;\n            });\n        });\n\n        _.forEach(fakedOrderArticles, function (fakedOrderArticle) {\n            var preExistingOrderArticle = _.find(vm.order.orderArticles, function (oa) { return oa.articleId === fakedOrderArticle.articleId; });\n            if (preExistingOrderArticle !== undefined) {\n                _.forEach(fakedOrderArticle.orderRows, function (fakedOrderRow) {\n                    var preExistingOrderRow = _.find(preExistingOrderArticle.orderRows, function (or) { return or.articleVariant.id === fakedOrderRow.articleVariant.id; });\n                    if (preExistingOrderRow !== undefined) {\n                        preExistingOrderRow.quantity += fakedOrderRow.quantity;\n                    } else {\n                        preExistingOrderArticle.orderRows.push(fakedOrderRow);\n                    }\n                });\n            } else {\n                vm.order.orderArticles.push(fakedOrderArticle);\n            }\n        });\n\n        vm.currentOrderArticle = undefined;\n        vm.orderChangeCount += 1;\n    }\n}\n\nangular\n    .module('order.orderdelivery', [])\n    .config(stateConfig)\n    .controller('OrderDeliveryController', OrderDeliveryController);\n","// @ngInject\nfunction EditDeliveryPlanningDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(deliveryPlanTemplate) {\n\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: true,\n            controller: 'EditDeliveryPlanningDialogController as vm',\n            templateUrl: 'main/order/orderdeliveryplanning/editDeliveryPlanningDialog/editDeliveryPlanningDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            deliveryPlanTemplate: function() {\n                return deliveryPlanTemplate;\n            },\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction EditDeliveryPlanningDialogController($uibModalInstance, deliveryPlanTemplate) {\n    var vm = this;\n\n    vm.deliveryPlanTemplate = deliveryPlanTemplate;\n    vm.deliveryPlanTemplateCopy = angular.copy(vm.deliveryPlanTemplate);\n\n    vm.closeModal = closeModal;\n    vm.getRowStyle = getRowStyle;\n    vm.formatDate = formatDate;\n    vm.setLeadTime = setLeadTime;\n    vm.recalcLeadTime = recalcLeadTime;\n    vm.changeDateAfterLeadTime = changeDateAfterLeadTime;\n    vm.errorLeadTime = errorLeadTime;\n\n    recalcLeadTime();\n\n    function closeModal(keepChanges) {\n        if(keepChanges)\n            $uibModalInstance.close(vm.deliveryPlanTemplate);\n        else\n            $uibModalInstance.close(false);\n    }\n\n    function errorLeadTime(leadTimeInDays){\n        var style = {};\n        \n        if(leadTimeInDays < 0){\n            style['background-color'] = 'lightpink';\n            style['border-color'] = 'red';\n        }\n        else{\n            style['background-color'] = 'whitesmoke';\n            style['border-color'] = 'lightgray';\n        }\n\n        return style;       \n    }\n\n    function getRowStyle(plan){\n        var style = {};\n        if(plan !== undefined){\n            if(plan.disabled){\n                style['background-color'] = 'lightgrey';\n                style['color'] = 'gray';\n            }\n        }\n        return style;\n    }\n\n    function changeDateAfterLeadTime(plan){\n        if(plan.leadTimeInDays < 0)\n            plan.leadTimeInDays = 0;\n\n        var index = _.findIndex(vm.deliveryPlanTemplate, function(p){\n            if(p.id === plan.nextPlanId){\n                return true;\n            }\n        });\n\n        if(index !== -1){\n            var newDate = new Date(plan.plannedDate.valueOf());\n            vm.deliveryPlanTemplate[index].plannedDate.setDate(newDate.getDate() + plan.leadTimeInDays);\n            console.log(vm.deliveryPlanTemplate[index].plannedDate);\n            changeDateAfterLeadTime(vm.deliveryPlanTemplate[index]);\n        }\n    }\n\n    function setNextId(plan){\n        if(plan.disabled)\n            return null;\n\n        var sortAdd = 1;\n        var nextPlan = _.find(vm.deliveryPlanTemplate, function(p){\n            if(p.sortOrder === plan.sortOrder + sortAdd){\n                if(p.disabled)\n                    sortAdd++;\n                else\n                    return true;\n            }\n        });\n\n        if(nextPlan === undefined)\n            return null;\n\n        plan.leadTimeInDays =  daysBetween(plan.plannedDate, nextPlan.plannedDate);\n        return nextPlan.id;\n    }\n\n    function recalcLeadTime(){\n        _.forEach(vm.deliveryPlanTemplate, function(plan){\n            plan.nextPlanId = setNextId(plan);\n            /*\n            if(!plan.disabled && plan.nextPlanId !== null)\n            {\n                var nextPlan = _.find(vm.deliveryPlanTemplate, function(p){\n                    if(p.id === plan.nextPlanId){\n                        return true;\n                    }\n                });\n                plan.leadTime = daysBetween(plan.plannedDate, nextPlan.plannedDate);\n            }*/\n        });\n    }\n\n    function setLeadTime(plan){\n        if(plan.disabled)\n            return;\n\n        var nextStage = _.find(vm.deliveryPlanTemplate, function(stage){\n            if(stage.id === plan.nextPlanId)\n                return true;\n        });\n        var prevStage =_.find(vm.deliveryPlanTemplate, function(stage){\n            if(stage.nextPlanId === plan.id)\n                return true;\n        });\n\n        if(nextStage !== undefined){\n            if(nextStage.disabled)\n                setLeadTime(nextStage);   \n            else\n                plan.leadTime = daysBetween(plan.plannedDate, nextStage.plannedDate);\n        }\n        else{      \n            plan.leadTime =  0;\n        }\n\n        if(prevStage !== undefined){\n            prevStage.leadTime =  daysBetween(prevStage.plannedDate, plan.plannedDate);\n            if(prevStage.disabled)\n                setLeadTime(prevStage);\n        }\n    }\n\n    function treatAsUTC(date) {\n        var result = new Date(date);\n        result.setMinutes(result.getMinutes() - result.getTimezoneOffset());\n        return result;\n    }\n    \n    function daysBetween(startDate, endDate) {\n        var millisecondsPerDay = 24 * 60 * 60 * 1000;\n        return Math.round((treatAsUTC(endDate) - treatAsUTC(startDate)) / millisecondsPerDay);\n    }\n\n    function formatDate(date) {\n        if(date === null)\n            return date;\n        if(angular.isNumber(date)){\n            date = new Date(date);\n        }\n        const offset = date.getTimezoneOffset()\n        date = new Date(date.getTime() - (offset*60*1000))\n        return date.toISOString().split('T')[0]\n    }\n}\n\nangular\n    .module('order.deliveryPlanning.editDeliveryPlanningDialog', [])\n    .service('EditDeliveryPlanningDialogService', EditDeliveryPlanningDialogService)\n    .controller('EditDeliveryPlanningDialogController', EditDeliveryPlanningDialogController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order.deliveryPlanning', {\n        url: '/deliveryplanning/{orderId}',\n        templateUrl: 'main/order/orderdeliveryplanning/orderdeliveryplanning.tpl.html',\n        controller: 'OrderDeliveryPlanningController as vm'\n    });\n}\n\nfunction OrderDeliveryPlanningController($filter, $state, $stateParams, OrdersApiService, loadSpinnerService, ToasterService, OrderService){\n    var vm = this;\n\n    //Properties\n    vm.orderId = $stateParams.orderId;\n    vm.deliveryPlans = [];\n    vm.deliveryPlansCopy;\n    vm.selectedDeliveryPlanCopy = {};\n    vm.comment = \"\";\n    vm.isEditingPredicted = false;\n    vm.isEditingConfirmed = false;\n    vm.recalculate = false;\n    vm.recalculatedDifference = 0;\n    vm.approve = false;\n    vm.showPlanned = true;\n\n    //Methods\n    vm.goBackToOrderView = goBackToOrderView;\n    vm.formatDate = formatDate;\n    vm.savePlan = savePlan;\n    vm.undoPlan = undoPlan;\n    vm.editSavedPlan = editSavedPlan;\n    vm.getBackgroundColor = getBackgroundColor;\n    vm.getPredictedBackgroundColor = getPredictedBackgroundColor;\n    vm.getPredictedButtonBackgroundColor = getPredictedButtonBackgroundColor;\n    vm.getConfirmedBackgroundColor = getConfirmedBackgroundColor;\n    vm.saveMainComment = saveMainComment;\n    vm.editingAny = editingAny;\n    vm.editPredicted = editPredicted;\n    vm.editConfirmed = editConfirmed;\n    vm.doRecalculateDiffrence = doRecalculateDiffrence;\n    vm.selectRow = selectRow;\n    vm.showDifferece = showDifferece;\n    vm.isSelected = isSelected;\n\n    //Links\n    vm.canConfirm = canConfirm;\n    vm.canUndoConfirm = canUndoConfirm;\n    vm.canChangePredicted = canChangePredicted;\n    vm.isLeadTime = isLeadTime;\n\n    //initMainComment()\n    activate();\n\n    function activate(){\n\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.getById(vm.orderId).then(function(response) {\n            vm.order = response.data.order;\n            vm.comment = vm.order.mainComment;\n            initMainComment();\n            console.log(vm.order);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n\n        reloadDeliveryPlan();\n    }\n    function initMainComment(){\n        if(vm.order.mainComment == undefined){\n            vm.comment = \"\";\n        }\n        else{\n            vm.comment = vm.order.mainComment;\n        }      \n    }\n    function saveMainComment(){\n        var mainCommentData = {\n            orderId: vm.orderId,\n            mainComment: vm.comment\n        };\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.saveMainComment(mainCommentData).then(function(response) {\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function reloadDeliveryPlan(){\n        vm.recalculate = false;\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.getOrderDeliveryPlan(vm.orderId).then(function(response) {\n            vm.deliveryPlans = response.data.deliveryPlans;\n            _.forEach(vm.deliveryPlans, function(plan){\n                if(plan.confirmedDate === undefined)\n                    plan.confirmedDate = null;\n            });\n            vm.deliveryPlansCopy = angular.copy(vm.deliveryPlans);\n            console.log(vm.deliveryPlans);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function doRecalculateDiffrence(plan){\n        if(vm.recalculate){\n            if(vm.isEditingPredicted)\n                vm.recalculatedDifference = daysBetween(plan.predictedDate, vm.selectedDeliveryPlanCopy.predictedDate) * -1;\n            else if(vm.isEditingConfirmed)\n                vm.recalculatedDifference = daysBetween(plan.confirmedDate, vm.selectedDeliveryPlanCopy.predictedDate) * -1;\n        }\n    }\n\n    function showDifferece(plan){\n       return plan.index > vm.selectedDeliveryPlanCopy.index && vm.recalculate;\n    }\n\n    function treatAsUTC(date) {\n        var result = new Date(date);\n        result.setMinutes(result.getMinutes() - result.getTimezoneOffset());\n        return result;\n    }\n    \n    function daysBetween(startDate, endDate) {\n        var millisecondsPerDay = 24 * 60 * 60 * 1000;\n        return (treatAsUTC(endDate) - treatAsUTC(startDate)) / millisecondsPerDay;\n    }\n\n    function goBackToOrderView(){\n        $state.go(\"order.ordersearch\", { orderId: vm.order.id });\n    }\n\n    function editingAny(){\n        var isEdit = false;\n\n        _.forEach(vm.deliveryPlansCopy, function(p){\n            if(isSelected(p))\n                isEdit = true;\n        });\n\n        return isEdit;\n    }\n\n    function isSelected(plan){\n        if(vm.selectedDeliveryPlanCopy === {}) /// NO PLAN SELECTED\n            return false;\n\n        return vm.selectedDeliveryPlanCopy.id === plan.id;\n    }\n\n    function selectRow(plan){\n        if(!isSelected(plan)){\n            vm.selectedDeliveryPlanCopy = angular.copy(plan);\n        }\n    }\n\n    function editPredicted(plan){\n        console.log('succ');\n        vm.selectedDeliveryPlanCopy = angular.copy(plan);\n        vm.isEditingPredicted = true;\n        plan.isEditing = true;\n    }\n    function editConfirmed(plan){\n        console.log('succ');\n        vm.selectedDeliveryPlanCopy = angular.copy(plan);\n        vm.isEditingConfirmed = true;\n        plan.isEditing = true;\n        if(plan.confirmedDate === null)\n            plan.confirmedDate = new Date();\n    }\n    function isLeadTime(plan){\n        return OrderService.isLeadTimeDeliveryPlan(plan.links);\n    } \n\n    function canConfirm(plan){\n        return OrderService.canConfirmDeliveryPlan(plan.links);\n    }\n    function canUndoConfirm(plan){\n        return OrderService.canUndoConfirmDeliveryPlan(plan.links);\n    }\n    function canChangePredicted(plan){\n        return OrderService.canChangePredictedDate(plan.links);\n    }\n\n    function savePlan(plan){\n        console.log(plan.predictedDate);\n        vm.isEditingPredicted = false;\n        vm.isEditingConfirmed = false;\n        plan.isEditing = false;\n        vm.recalculatedDifference = 0;\n\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.saveOrderDeliveryPlan(plan, vm.orderId, vm.recalculate).then(function(response) {\n            ToasterService.showSuccess(response.message);\n        }, function(error){\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n\n            reloadDeliveryPlan();\n            vm.selectedDeliveryPlanCopy = {};\n        });\n    }\n    function undoPlan(plan){\n        vm.isEditingPredicted = false;\n        vm.isEditingConfirmed = false;\n        vm.recalculatedDifference = 0;\n\n        reloadDeliveryPlan();\n        vm.selectedDeliveryPlanCopy = {};\n    }\n\n    function editSavedPlan(plan){\n        console.log(plan);\n        selectRow(plan);\n        plan.completed = false;\n    }\n\n    function formatDate(date) {\n        if(date === null)\n            return date;\n        if(angular.isNumber(date)){\n            date = new Date(date);\n        }\n        const offset = date.getTimezoneOffset()\n        date = new Date(date.getTime() - (offset*60*1000))\n        return date.toISOString().split('T')[0]\n    }\n\n    function getBackgroundColor(plan){\n        var style = {};\n\n        //if(plan.completed){\n        //    if(plan.index % 2 == 0)\n        //        style['background-color'] = 'rgb(235, 255, 235)';\n        //    else\n        //        style['background-color'] = 'rgb(225, 245, 225)';\n        //}\n        if(plan.index % 2 == 0)\n            style['background-color'] = 'rgb(255, 255, 255)';\n        else\n            style['background-color'] = 'rgb(245, 245, 245)';\n\n        if(isSelected(plan)){\n            style['background-color'] = 'lightyellow';\n        } \n        return style;\n    }\n\n    function getPredictedBackgroundColor(plan){\n        var style = {};\n\n        if(vm.isLeadTime(plan)){\n            if(daysBetween(plan.plannedDate, plan.predictedDate) > 0 && !isSelected(plan)){\n                if(plan.index % 2 == 0)\n                    style['background-color'] = 'rgb(255, 225, 225)';\n                else\n                    style['background-color'] = 'rgb(235, 215, 215)';\n            }\n            else if(daysBetween(plan.plannedDate, plan.predictedDate) < 0 && !isSelected(plan)){\n                if(plan.index % 2 == 0)\n                    style['background-color'] = 'rgb(225, 255, 225)';\n                else\n                    style['background-color'] = 'rgb(215, 235, 215)';\n            }\n        }\n\n        return style;\n    }\n    function getPredictedButtonBackgroundColor(plan){\n        var style = {};\n\n        if(daysBetween(plan.plannedDate, plan.predictedDate) > 0 && !isSelected(plan)){\n            style['background-color'] = 'rgb(255, 245, 245)';\n        }\n\n        return style;\n    }\n    function getConfirmedBackgroundColor(plan){\n        var style = {};\n\n        if(vm.isLeadTime(plan)){\n            if(daysBetween(plan.predictedDate, plan.confirmedDate) > 0 && !isSelected(plan)){\n                if(plan.index % 2 == 0)\n                    style['background-color'] = 'rgb(255, 225, 225)';\n                else\n                    style['background-color'] = 'rgb(235, 215, 215)';\n            }\n            else if(daysBetween(plan.predictedDate, plan.confirmedDate) <= 0 && !isSelected(plan)){\n                if(plan.index % 2 == 0)\n                    style['background-color'] = 'rgb(225, 255, 225)';\n                else\n                    style['background-color'] = 'rgb(215, 235, 215)';\n            }\n        }\n        else if(plan.completed){\n            if(plan.index % 2 == 0)\n                style['background-color'] = 'rgb(225, 255, 225)';\n            else\n                style['background-color'] = 'rgb(215, 235, 215)';\n        }\n\n        return style;\n    }\n}\n\nangular\n.module('order.deliveryPlanning', [])\n.config(stateConfig)\n.controller('OrderDeliveryPlanningController', OrderDeliveryPlanningController);","// @ngInject\nfunction OrdersApiService($q, $window, $cookies, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'orders';\n\n    return {\n        approveOrder: approveOrder,\n        createMultipleInternalOrders: ResourcesService.apiFactory.create(endpoint + '/multipleinternal', 'InternalOrder'),\n        createPurchaseOrder: createPurchaseOrder,\n        createWholeOrder: createWholeOrder,\n        deleteOrder: ResourcesService.apiFactory.delete(endpoint, 'Order'),\n        deleteOrders: deleteOrders,\n        deliverOrder: deliverOrder,\n        deliverOrderWithDate: deliverOrderWithDate,\n        deliverPartially: deliverPartially,\n        downloadAsPdf: downloadAsPdf,\n        downloadAsCsv: downloadAsCsv,\n        downloadDeliveryDocument: downloadDeliveryDocument,\n        downloadLabels: downloadLabels,\n        downloadLabelsForDate: downloadLabelsForDate,\n        downloadPickingList: downloadPickingList,\n        downloadTransitReport: downloadTransitReport,\n        getAll: getAll,\n        getArticleCollections: ResourcesService.apiFactory.get(endpoint + '/articlecollections'),\n        getById: getById,\n        getByOrderNumber: ResourcesService.apiFactory.get(endpoint + '/ordernumber/'),\n        getCompanies: ResourcesService.apiFactory.get(endpoint + '/companies'),\n        getCurrencies: ResourcesService.apiFactory.get(endpoint + '/currencies/'),\n        getCurrencyDefault: ResourcesService.apiFactory.get(endpoint + '/currencies/default'),\n        getDeliveryTerms: ResourcesService.apiFactory.get(endpoint + '/deliveryterms/'),\n        getDeliveryDates: getDeliveryDates,\n        getWholeDeliveryDates: getWholeDeliveryDates,\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getLocationsDependingOnUser: ResourcesService.apiFactory.get(endpoint + '/userlocations'),\n        getMultipleOrderPdf: getMultipleOrderPdf,\n        getMultipleOrderCsv: getMultipleOrderCsv,\n        getMultipleOrderPickingListPdf: getMultipleOrderPickingListPdf,\n        getOrderArticlesForBarcodes: getOrderArticlesForBarcodes,\n        getOrderCollections: ResourcesService.apiFactory.get(endpoint + '/ordercollections'),\n        getOrderCollectionById: ResourcesService.apiFactory.get(endpoint + '/ordercollection'),\n        getOrderTypes: ResourcesService.apiFactory.get('/types/order'),\n        getPacksForArticle: ResourcesService.apiFactory.get(endpoint + '/packsforarticle'),\n        getPurchaseOrder: ResourcesService.apiFactory.get(endpoint + '/purchaseorders'),\n        getPurchaseOrders: getPurchaseOrders,\n        getResellerPriceList: ResourcesService.apiFactory.get(endpoint + '/resellerpricelist'),\n        getStockForArticle: getStockForArticle,\n        getStores: ResourcesService.apiFactory.get(endpoint + '/stores'),\n        getUsers: ResourcesService.apiFactory.get(endpoint + '/users/'),\n        markAsUndelivered: markAsUndelivered,\n        markAsDelivered: markAsDelivered,\n        updatePurchaseOrder: updatePurchaseOrder,\n        updateOrderNote: updateOrderNote,\n        updateWholeOrder: updateWholeOrder,\n        getStocksForArticleVariants: getStocksForArticleVariants,\n        getOrderDeliveryPlan: getOrderDeliveryPlan,\n        saveOrderDeliveryPlan: saveOrderDeliveryPlan,\n        getDeliveryPlanningTemplate: getDeliveryPlanningTemplate,\n        saveMainComment: saveMainComment,\n        isDeliveryPlanningEnabled: ResourcesService.apiFactory.get(endpoint + '/isdeliveryplanningenabled'),\n    };\n\n    function saveMainComment(mainCommentData) {\n        var deferred = $q.defer();\n       \n        var sendMainCommentData = angular.copy(mainCommentData);\n\n        var jsonData = JSON.stringify(sendMainCommentData);\n      \n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'orders/savemaincomment',jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getDeliveryPlanningTemplate(templateId, orderPlannedDate, deliveryTermsId){\n        var deferred = $q.defer();\n\n        var params = {}\n        params.orderPlannedDeliveryDate = orderPlannedDate;\n        params.templateId = templateId;\n        params.deliveryTermsId = deliveryTermsId;\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/getdeliveryplanningtemplate', {params : params}).then(function(response){\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function saveOrderDeliveryPlan(plan, orderId, doRecalculate){\n        var deferred = $q.defer();\n\n        var planData = {\n            id : plan.id,\n            confirmedDate : plan.confirmedDate,\n            predictedDate : plan.predictedDate,\n            user : plan.user,\n            comment : plan.comment,\n            recalculate : doRecalculate\n        };\n\n        var sendPlanData = angular.copy(planData);\n\n        var confirmedDate = sendPlanData.confirmedDate;\n        var predictedDate = sendPlanData.predictedDate;\n        \n        if(confirmedDate !== null){\n            confirmedDate = new Date(confirmedDate);\n            sendPlanData.confirmedDate = new Date(Date.UTC(confirmedDate.getFullYear(), confirmedDate.getMonth(), confirmedDate.getDate()));\n        }\n        predictedDate = new Date(predictedDate);\n        sendPlanData.predictedDate = new Date(Date.UTC(predictedDate.getFullYear(), predictedDate.getMonth(), predictedDate.getDate()));\n\n        var jsonData = JSON.stringify(sendPlanData);\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'orders/' + orderId + '/savedeliveryplanning', jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getOrderDeliveryPlan(orderId){\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/deliveryplanning/' + orderId).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise; \n    }\n\n    function getStockForArticle(articleId, locationId) {\n        var deferred = $q.defer();\n        var params = {\n            articleId: articleId,\n            locationId: locationId\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/article/' + articleId + '/location/' + locationId + '/stock', { params: params }).then(function getAllOrders(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function createPurchaseOrder(purchaseOrder) {\n        var deferred = $q.defer();\n\n        console.log(\"Sending the following purchase order data:\");\n        console.log(purchaseOrder);\n\n        var jsonRequest = JSON.stringify(purchaseOrder);\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/purchaseorder', jsonRequest).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function createWholeOrder(order, barcodesList, modifiedDeliveryPlanningTemplate) {\n        var deferred = $q.defer();\n\n        // To prevent the Json stringification from do any timezone conversion.\n        var sendOrderData = angular.copy(order);\n        var date = sendOrderData.plannedDeliveryDate;\n        date = new Date(date);\n        sendOrderData.plannedDeliveryDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n\n        if((modifiedDeliveryPlanningTemplate !== undefined && modifiedDeliveryPlanningTemplate.stages !== undefined) ? modifiedDeliveryPlanningTemplate.stages.length : 0 > 0){\n            _.forEach(modifiedDeliveryPlanningTemplate.stages, function(stage){\n                var newStageDate = stage.plannedDate;\n                newStageDate = new Date(newStageDate);\n                stage.plannedDate = new Date(Date.UTC(newStageDate.getFullYear() ,newStageDate.getMonth() ,newStageDate.getDate()));\n            })\n        }\n\n        var requestObject = {\n            order: sendOrderData,\n            barcodes: (barcodesList !== undefined) ? barcodesList : [],\n            deliveryPlanningStages: (modifiedDeliveryPlanningTemplate !== undefined) ? modifiedDeliveryPlanningTemplate.stages : null\n        };\n\n        var jsonRequest = JSON.stringify(requestObject);\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/completeorder', jsonRequest).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteOrders(orderIds) {\n        var deferred = $q.defer();\n\n        console.log(\"OrderIds are:\");\n        console.log(orderIds);\n\n        var request = {\n            orderIds: orderIds\n        };\n\n        var params = {\n            orderIds: orderIds\n        };\n\n        DSHttpAdapter.DEL(DS.defaults.basePath + 'orders/', {params: params}).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deliverOrder(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + orderId + '/deliver').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getDeliveryDates(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + orderId + '/deliverydates').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function getWholeDeliveryDates(orderId, timeProximity, timeType) {\n        var deferred = $q.defer();\n        \n        var params = {};\n\n        if(timeProximity && timeProximity >= 0){\n            params.timeProximity = timeProximity;\n        }\n\n        if(timeType && timeType >= 0){\n            params.timeType = timeType;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + orderId + '/deliverydates/whole', {params: params}).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deliverOrderWithDate(orderId, date) {\n        var deferred = $q.defer();\n\n        var delivery = { deliveryDate: date };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/' + orderId + '/deliver', delivery).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.resolve(handleError);\n        });\n\n        return deferred.promise;\n    }\n\n    function deliverPartially(order) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/' + order.id + '/deliverpartially', order).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadAsPdf(id) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + id + '/aspdf', { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'order.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadAsCsv(id) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + id + '/ascsv', { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'text/csv'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'order.csv');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getMultipleOrderPdf(ids) {\n        var deferred = $q.defer();\n\n        var request = {\n            orderIds: ids\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/aspdf', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'order.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getMultipleOrderCsv(ids){\n        var deferred = $q.defer();\n\n        var request = {\n            orderIds: ids\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/ascsv', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'text/csv'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'order.csv');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getMultipleOrderPickingListPdf(incomingRequest) {\n        var deferred = $q.defer();\n\n        var request = {\n            orderIds: incomingRequest.orderIds,\n            includeStorageLocation: incomingRequest.includeStorageLocation,\n            includeIsPhotographed: incomingRequest.includeIsPhotographed,\n            locale: incomingRequest.languageCode,\n            grouping: incomingRequest.grouping\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/pickinglist/aspdf', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'pickinglist.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadDeliveryDocument(id, startDate, endDate) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + id + '/delivery/aspdf' + '?startDate=' + startDate + '&endDate=' + endDate, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, startDate !== undefined ? 'orderdelivery_' + startDate + '.pdf' : 'orderdelivery.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadTransitReport(reportParameters) {\n        var url = $window.URL || $window.webkitURL;\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/transitReport', reportParameters, { responseType: 'arraybuffer' }).then(function (response) {\n            //If 204 the call returned no result/empty list don't return a downloadable file\n            if (response && response.status === 204) {\n                deferred.resolve(response);\n                return deferred.promise;\n            }\n\n            //\"attachment; filename=stockpickinglist20190110.pdf\"\n            var blob = new Blob([response.data], { type: 'text/csv' });\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'TransitReport.csv');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var downloadUrl = url.createObjectURL(blob);\n                a.href = downloadUrl;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadPickingList(incomingRequest) {\n        var deferred = $q.defer();\n\n        var request = {\n            orderId: incomingRequest.orderId,\n            includeStorageLocation: incomingRequest.includeStorageLocation,\n            includeIsPhotographed: incomingRequest.includeIsPhotographed,\n            includePrices : incomingRequest.includePrices,\n            locale: incomingRequest.languageCode,\n            grouping: incomingRequest.grouping\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/' + incomingRequest.orderId + '/pickinglist/aspdf', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], { type: 'application/pdf' });\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'pickinglist.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36012-36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s-_]){1,}.(pdf|csv|xls|xlsx)/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n\n    function downloadLabels(orderId, orderNumber) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + orderId + '/labels', { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, orderNumber !== undefined ? 'label_' + orderNumber + '.pdf' : 'label.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadLabelsForDate(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/labels', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, request.orderNumber !== undefined ? 'label_' + request.orderNumber + '.pdf' : 'label.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getAll(searchTerms) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (searchTerms.page && searchTerms.page < 0) {\n            searchTerms.page = 1;\n        }\n\n        if (searchTerms.limit && searchTerms.limit > 0) {\n            params.limit = searchTerms.limit;\n        }\n\n        if (!_.isEmpty(searchTerms.searchTerm)) {\n            params.searchTerm = searchTerms.searchTerm;\n        }\n\n        params.page = searchTerms.page;\n        params.orderTypes = searchTerms.orderTypes;\n        params.onlyUndelivered = searchTerms.showUndeliveredOnly;\n        params.onlyUnprinted = searchTerms.showUnprintedOnly;\n        params.onlyUnapproved = searchTerms.showUnapprovedOnly;\n        params.onlyOrderNumber = searchTerms.onlyOrderNumber;\n        params.monthBack = searchTerms.monthBack;\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders', { params: params }).then(function getAllOrders(response) {\n            deferred.resolve(response.data.data);\n        }, function getAllOrdersError(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getById(id) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + id + \"/new\").then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getPurchaseOrders(page, filter, pageSize, wantedTypes, onlyUndelivered) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        params.orderTypes = wantedTypes;\n        params.onlyUndelivered = onlyUndelivered;\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/purchaseorders', {params: params}).then(function getAllOrders(response) {\n            deferred.resolve(response);\n        }, function getAllOrdersError(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function markAsUndelivered(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + orderId + \"/markasundelivered\").then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateOrderNote(orderId, note, externalOrderReference) {\n        var deferred = $q.defer();\n\n        var request = {\n            note: note,\n            externalOrderReference: externalOrderReference\n        };\n\n        var jsonData = JSON.stringify(request);\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'orders/' + orderId + \"/notes\", jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function markAsDelivered(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + orderId + \"/markasdelivered\").then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n   \n    function approveOrder(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'orders/' + orderId + \"/approve\").then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updatePurchaseOrder(purchaseOrder) {\n        var deferred = $q.defer();\n\n        var jsonData = JSON.stringify(purchaseOrder);\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'orders/purchaseorder/', jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateWholeOrder(orderData) {\n        var deferred = $q.defer();\n\n        // To prevent the Json stringification from do any timezone conversion.\n        var sendOrderData = angular.copy(orderData);\n        var date = sendOrderData.plannedDeliveryDate;\n\n        date = new Date(date);\n\n        sendOrderData.plannedDeliveryDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n\n        var jsonorder = JSON.stringify(sendOrderData);\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'orders/', jsonorder).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getStocksForArticleVariants(articleVariantIds, locationIds) {\n        var deferred = $q.defer();\n\n        var request = {\n            articleVariantIds: articleVariantIds,\n            locationIds: locationIds\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/stock', request).then(function(response) {\n            deferred.resolve(response);\n        },  function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getOrderArticlesForBarcodes(barcodes, companyId, currencyId, currencyRate) {\n        var deferred = $q.defer();\n\n        var request = {\n            barcodes: barcodes,\n            companyId: companyId,\n            currencyId: currencyId,\n            currencyRate: currencyRate\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'orders/getorderarticlesforbarcodes', request).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('orders.api', [])\n    .factory('OrdersApiService', OrdersApiService);\n","angular.module('components.caOrderArticleDeliveries', [])\n    .component('caOrderArticleDeliveries', {\n        templateUrl: 'main/order/ordersearch/components/orderarticledeliveries.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orderArticle: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($translate) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.toggleDisplay = toggleDisplay;\n\n    vm.deliveryRows = [];\n    vm.displayComponent = false;\n    vm.translateDeliveryRowType = translateDeliveryRowType;\n\n    function onInit() {\n    }\n    function onChanges(changes) {\n        if (changes.orderArticle &&\n            changes.orderArticle.currentValue) {\n            vm.deliveryRows = [];\n            _.forEach(vm.orderArticle.orderRows, function(orderRow) {\n                _.forEach(orderRow.deliveryRows, function(deliveryRow) {\n                    if (deliveryRow.stockTransaction) { //} && deliveryRow.deliveryRowType === \"deliveryIn\") {\n                        vm.deliveryRows.push(deliveryRow);\n                        deliveryRow.articleVariant = orderRow.articleVariant;\n                    }\n\n                });\n            });\n            vm.deliveryRows = _.orderBy(vm.deliveryRows, function(deliveryRow) {\n                var orderBy = deliveryRow.articleVariant.variantDetail1.variantDetailName + '-' + deliveryRow.articleVariant.variantDetail2.sortOrder.toString();\n\n                if (deliveryRow.stockTransaction) {\n                    orderBy = deliveryRow.stockTransaction.accountingDate.split('T')[0] + '-' + orderBy;\n                }\n\n                return orderBy;\n            });\n        }\n    }\n    function onDestroy() {\n\n    }\n\n    function toggleDisplay() {\n        vm.displayComponent = !vm.displayComponent;\n    }\n\n    function translateDeliveryRowType(rowType) {\n        switch (rowType.toLowerCase()) {\n            case 'deliveryout':\n                return $translate.instant('order.deliveryTypeOut');\n            case 'deliveryin':\n                return $translate.instant('order.deliveryTypeIn');\n            case 'transit':\n                return $translate.instant('order.deliveryTypeTransit');\n        }\n    }\n}\n","angular.module('components.caOrderArticleRows', [])\n    .component('caOrderArticleRows', {\n        templateUrl: 'main/order/ordersearch/components/orderarticlerows.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orderArticle: '<',\n            order: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($translate) {\n    var vm = this;\n\n    //Properties\n    var flexGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n    var articleVariants = [];\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.gridPostInitialization = gridPostInitialization;\n\n    function onInit() {\n    }\n    function onChanges(changes) {\n        if (changes.orderArticle &&\n            changes.orderArticle.currentValue &&\n            changes.orderArticle.currentValue !== changes.orderArticle.previousValue) {\n            if (!changes.orderArticle.previousValue ||\n                changes.orderArticle.currentValue.id !== changes.orderArticle.previousValue.id) {\n                flexGrid = {};\n                rowData = [];\n                rowCollection = new wijmo.collections.CollectionView(rowData);\n                articleVariants = [];\n\n                vm.flexGridData = { destinations: [{locationName: (vm.order.destination) ? vm.order.destination.locationName : vm.order.fromLocation.locationName}] };\n\n                _.forEach(vm.orderArticle.orderRows, function(orderRow) {\n                    if (!orderRow.summarizedDeliveredQuantity) { orderRow.summarizedDeliveredQuantity = 0; }\n                    orderRow.summarizedDeliveredQuantity = orderRow.deliveryRows && orderRow.deliveryRows.length > 0 ? _.sumBy(orderRow.deliveryRows, function(dr) {\n                        return dr.systemStatus.toLowerCase() === 'delivered' && dr.deliveryRowType === 'deliveryIn' ? dr.quantity : 0;\n                    }) : 0;\n                    orderRow.articleVariant.summarizedDeliveredQuantity = orderRow.summarizedDeliveredQuantity;\n\n                    if (!orderRow.summarizedOutdeliveredQuantity) { orderRow.summarizedOutdeliveredQuantity = 0; }\n                    orderRow.summarizedOutdeliveredQuantity = orderRow.deliveryRows && orderRow.deliveryRows.length > 0 ? _.sumBy(orderRow.deliveryRows, function(dr) {\n                        return dr.systemStatus.toLowerCase() === 'delivered' && dr.deliveryRowType === 'deliveryOut' ? dr.quantity : 0;\n                    }) : 0;\n                    orderRow.articleVariant.summarizedOutdeliveredQuantity = orderRow.summarizedOutdeliveredQuantity;\n\n                    orderRow.articleVariant.quantity = orderRow.quantity;\n                    articleVariants.push(orderRow.articleVariant);\n                });\n            }\n        }\n    }\n    function onDestroy() {\n\n    }\n\n    function gridPostInitialization(sender, e, locationName) {\n        flexGrid = sender;\n        flexGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.Columns,\n            frozenColumns: 2,\n            itemsSource: rowCollection\n        });\n\n        setupGrid();\n        loadGridData('Quantity');\n    }\n\n    function setupGrid() {\n        rowData.length = 0;\n        flexGrid.finishEditing(true);\n        flexGrid.columns.clear();\n        flexGrid.invalidate();\n        rowCollection.refresh();\n        initializeGridColumns();\n    }\n\n    function initializeGridColumns() {\n        // Add first row header column\n        var rowHeader = new wijmo.grid.Column();\n        rowHeader.binding = \"variantDetails1Name\";\n        rowHeader.header = ' ';\n        rowHeader.allowSorting = false;\n        rowHeader.allowResizing = true;\n        rowHeader.width = 200;\n        rowHeader.minWidth = 100;\n        rowHeader.isReadOnly = true;\n        flexGrid.columns.push(rowHeader);\n\n        var columns = getDataColumns();\n\n        if (columns.length > 1) {\n            var rowTotal = new wijmo.grid.Column();\n            rowTotal.binding = \"rowTotalString\";\n            rowTotal.header = $translate.instant('customerorder.totalquantity');\n            rowTotal.allowSorting = false;\n            rowTotal.allowResizing = true;\n            rowTotal.width = 100;\n            rowTotal.minWidth = 100;\n            rowTotal.isReadOnly = true;\n            rowTotal.align = \"right\";\n            flexGrid.columns.push(rowTotal);\n        }\n\n        // Add dynamic columns\n        _.forEach(columns, function (variantDetail) {\n            var c = new wijmo.grid.Column();\n            c.binding = variantDetail.variantDetailName;\n            c.header = variantDetail.variantDetailName;\n            c.width = '*';\n            c.minWidth = 100;\n            c.allowSorting = false;\n            c.allowResizing = true;\n            c.inputType = 'text';\n            c.isReadOnly = true;\n            c.align = \"right\";\n            flexGrid.columns.push(c);\n        });\n    }\n\n    function getDataColumns() {\n        var columns = [];\n\n        // Group by nested variantDetail2 in the current articleVariants\n        columns = _.groupBy(articleVariants, function(variant) {\n            return variant.variantDetail2.variantDetailName;\n        });\n        // Get the variantDetail2 from each group in an array\n        columns = _.reduce(columns, function(newArray, val, key) {\n            newArray.push(val[0].variantDetail2);\n            return newArray;\n        }, []);\n\n        return _.sortBy(columns, 'sortOrder');\n    }\n\n    function loadGridData(type) {\n        var variantRows = _.groupBy(articleVariants, function(variant) {\n            return variant.variantDetail1.id;\n        });\n        _.forEach(variantRows, function(variantRowValues) {\n            var r = {\n                rowTotal: 0,\n                rowTotalDeliveredQuantity: 0,\n                rowTotalString: ''\n            };\n            _.forEach(variantRowValues, function(variantRowValue) {\n                r.variantDetails1Name = variantRowValue.variantDetail1.variantDetailName;\n\n                r.variantExternalId = variantRowValue.externalId;\n\n                var deliveredQuantity = variantRowValue.summarizedDeliveredQuantity;\n                if (vm.order.orderType.orderSystemType === 'return') { deliveredQuantity = Math.abs(variantRowValue.summarizedOutdeliveredQuantity); }\n                r.rowTotalDeliveredQuantity += deliveredQuantity;\n\n                r[variantRowValue.variantDetail2.variantDetailName] =\n                    variantRowValue['quantity'].toString() + \" (\" + deliveredQuantity + \")\";\n\n                r.rowTotal += variantRowValue['quantity'];\n            });\n            r.rowTotalString = r.rowTotal.toString() + ' (' + r.rowTotalDeliveredQuantity.toString() + ')';\n            rowData.push(r);\n        });\n        rowCollection.refresh();\n    }\n}\n","angular.module('components.caOrderContent', [])\n    .component('caOrderContent', {\n        templateUrl: 'main/order/ordersearch/components/ordercontent.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            order: '<',\n            links: '<'\n        },\n        controller: controller\n    })\n\n// @ngInject\nfunction controller(OrdersApiService, OrderService, AuthService, deliveryDocumentDownloadDialogService, ToasterService, loadSpinnerService, $translate, $state, confirmationDialogService, labelPrintingDialogService, updateOrderNoteDialogService, printPickingListDialogService, $rootScope) {\n    var vm = this;\n    vm.canAccess = AuthService.canAccess;\n\n    //Properties\n    vm.abs = Math.abs;\n    vm.labelPrintingDialogVisible = false;\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.hasClaim = havePurchaseCostClaim();\n    vm.sortContentBy = undefined;\n    vm.sortContentReverse = undefined;\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.scrollToSection = scroll;\n    vm.goToOrderDelivery = goToOrderDelivery;\n    vm.goToDeliveryPlanning = goToDeliveryPlanning;\n    vm.getOrderAsPdf = getOrderAsPdf;\n    vm.getOrderAsCsv = getOrderAsCsv;\n    vm.canDeliverIn = canDeliverIn;\n    vm.canEditOrder = canEditOrder;\n    vm.isDeliveryPlanningEnabled = isDeliveryPlanningEnabled;\n    vm.getOrderLabels = getOrderLabels;\n    vm.deleteOrder = deleteOrder;\n    vm.canDeleteOrder = canDeleteOrder;\n    vm.canCopyOrder = canCopyOrder;\n    vm.downloadDeliveryDocument = downloadDeliveryDocument;\n    vm.showLabelPrintingDialog = showLabelPrintingDialog;\n    vm.showPrintPickingListDialog = showPrintPickingListDialog;\n    vm.selectOrderArticle = selectOrderArticle;\n    vm.goToModifyOrder = goToModifyOrder;\n    vm.goToCopyOrder = goToCopyOrder;\n    vm.shouldShowFromLocation = shouldShowFromLocation;\n    vm.shouldShowSupplier = shouldShowSupplier;\n    vm.shouldShowDestination = shouldShowDestination;\n    vm.updateOrderNote = updateOrderNote;\n    vm.calculateDeliveredCost = calculateDeliveredCost;\n\n\n    function onInit() {\n        // Default to the only orderArticle if there's only one in the order.\n        if (vm.order.orderArticles.length === 1) {\n            vm.selectOrderArticle(vm.order.orderArticles[0]);\n        }\n    }\n    function onChanges(changes) {\n\n    }\n    function onDestroy() {\n\n    }\n\n    function shouldShowSupplier() {\n        return vm.order.orderType.orderSystemType === 'store' || vm.order.orderType.orderSystemType === 'automatic' || vm.order.orderType.orderSystemType === 'return';\n    }\n    function shouldShowFromLocation() {\n        return vm.order.orderType.orderSystemType === 'internal' || vm.order.orderType.orderSystemType === 'automaticInternal' || vm.order.orderType.orderSystemType === 'return';\n    }\n    function shouldShowDestination() {\n        return vm.order.orderType.orderSystemType !== 'return';\n    }\n\n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read){\n            return false\n        }\n\n        return true\n    }\n\n    function updateOrderNote() {\n        var order = vm.order;\n        updateOrderNoteDialogService.showDialog(order.id, order.orderNote, order.orderNumberExternal).then(function (response) {\n            if (response.success === true) {\n                vm.order.orderNote = response.note;\n                vm.order.orderNumberExternal = response.orderNumberExternal;\n            }\n        });\n    }\n\n    function goToModifyOrder() {\n        $state.go('order.modifyorder', { orderId: vm.order.id });\n    }\n\n    function goToCopyOrder() {\n        $state.go('order.copyorder', { orderId: vm.order.id });\n    }\n\n    function selectOrderArticle(article) {\n        vm.selectedOrderArticle = article;\n    }\n\n    function goToOrderDelivery() {\n        $state.go(\"order.orderdelivery\", { orderId: vm.order.id });\n    }\n\n    function goToDeliveryPlanning() {\n        $state.go(\"order.deliveryPlanning\", { orderId: vm.order.id });\n    }\n\n    function canDeliverIn() {\n        return OrderService.canDeliverOrder(vm.links);\n    }\n\n    function isDeliveryPlanningEnabled() {\n        return OrderService.isDeliveryPlanningEnabled(vm.links);\n    }\n\n    function canEditOrder() {\n        return OrderService.canEditOrder(vm.links);\n    }\n\n    function canDeleteOrder() {\n        return OrderService.canDeleteOrder(vm.links);\n    }\n\n    function canCopyOrder() {\n        return OrderService.canCopyOrder(vm.links);\n    }\n\n    function getOrderAsPdf() {\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.downloadAsPdf(vm.order.id).then(function (response) {\n        }, function (error) {\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getOrderAsCsv(){\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.downloadAsCsv(vm.order.id).then(function (response) {\n        }, function (error) {\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getOrderLabels() {\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.downloadLabels(vm.order.id, vm.order.orderNumber).then(function (response) {\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteOrder() {\n        confirmationDialogService.showDialog($translate.instant('order.confirmDeleteOrder')).then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start('mainSpinner');\n                OrdersApiService.deleteOrder(vm.order.id).then(function (response) {\n                    ToasterService.showSuccess($translate.instant('order.orderDeleted'), $translate.instant('order.order'));\n                    $state.go('order.ordersearch', null, { reload: true });\n                }, function (error) {\n                    ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                }).then(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function downloadDeliveryDocument() {\n        deliveryDocumentDownloadDialogService.showDialog(vm.order.id).then(function (result) {\n        });\n    }\n\n    function showLabelPrintingDialog() {\n        labelPrintingDialogService.showDialog(vm.order);\n    }\n\n    function showPrintPickingListDialog() {\n        printPickingListDialogService.showDialog().then(function (result) {\n            if (result.result === true) {\n                var request = {\n                    orderId: vm.order.id,\n                    includeStorageLocation: result.includeStorageLocation,\n                    includeIsPhotographed: result.includeIsPhotographed,\n                    includePrices: result.includePrices,\n                    languageCode: result.languageCode,\n                    grouping: result.grouping\n                };\n\n                loadSpinnerService.start('mainSpinner');\n                OrdersApiService.downloadPickingList(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function calculateDeliveredCost(item) {\n        var deliveredCost = 0;\n        _.forEach(item.orderRows, function (oRow) {\n            if (oRow.deliveryRows) {\n                _.forEach(oRow.deliveryRows, function (dRow) {\n                    if (dRow.systemStatus.toLowerCase() === 'delivered') {\n                        deliveredCost += dRow.quantity * oRow.purchaseCost;\n                    }\n                });\n            }\n        });\n        item.summarizedDeliveredCost = deliveredCost;\n        return deliveredCost;\n    }\n}\n","angular.module('components.caOrderSearchResult', [])\n    .component('caOrderSearchResult', {\n        templateUrl: 'main/order/ordersearch/components/ordersearchresult.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orders: '=',\n            searchTerm: '=',\n            currentPage: '=',\n            totalItems: '=',\n            limit: '=',\n            orderTypes: '=',\n            showUndeliveredOnly: '=',\n            showUnprintedOnly: '=',\n            showUnapprovedOnly: '=',\n            useScannerNavigation: '=',\n            onSearchTermChanged: '&',\n            onOrderSelected: '&'\n        },\n        controller: ['OrdersApiService', 'ToasterService', 'loadSpinnerService', '$translate', '$scope', '$state', '$window', 'confirmationDialogService', '$rootScope', 'printPickingListDialogService', controller]\n    });\n\n// @ngInject\nfunction controller(OrdersApiService, ToasterService, loadSpinnerService, $translate, $scope, $state, $window, confirmationDialogService, $rootScope, printPickingListDialogService) {\n    var vm = this;\n\n    //Properties\n    var flexGridCurrentlySelectedItem = {};\n    var orderSearchGrid = {};\n    var wijmo = $window.wijmo;\n    var showAllOrderTypes = false;\n    vm.scannerInput = '';\n    vm.contextMenuVisibility = {};\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.hasClaim = havePurchaseCostClaim();\n\n    //vm.monthsBack = null;\n    vm.useMonthsBack = false;\n    vm.monthsOptions = [1, 2, 4, 12, 18, 24, 36, 48];\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.searchTermChanged = searchTermChanged;\n    vm.transitionToState = transitionToState;\n    vm.gridInitialization = gridInitialization;\n    vm.gridSelectionChanged = gridSelectionChanged;\n    vm.shouldShowInventoryReasonHeader = shouldShowInventoryReasonHeader;\n    vm.shouldShowFromLocation = shouldShowFromLocation;\n    vm.shouldShowSupplier = shouldShowSupplier;\n    vm.shouldShowDestination = shouldShowDestination;\n    vm.changeToStoreOrderSearch = changeToStoreOrderSearch;\n    vm.changeToInternalOrderSearch = changeToInternalOrderSearch;\n    vm.changeToAutoOrderSearch = changeToAutoOrderSearch;\n    vm.changeToAutoOrderNormalSearch = changeToAutoOrderNormalSearch;\n    vm.changeToAutoOrderInternalSearch = changeToAutoOrderInternalSearch;\n    vm.changeToInventoryOrderSearch = changeToInventoryOrderSearch;\n    vm.changeToReturnOrderSearch = changeToReturnOrderSearch;\n    vm.changeToAllOrderSearch = changeToAllOrderSearch;\n    vm.contextMenuEdit = contextMenuEdit;\n    vm.contextMenuDeliver = contextMenuDeliver;\n    vm.contextMenuCopy = contextMenuCopy;\n    vm.contextMenuGetAsPdf = contextMenuGetAsPdf;\n    vm.contextMenuGetAsCsv = contextMenuGetAsCsv;\n    vm.contextMenuPrintLabel = contextMenuPrintLabel;\n    vm.contextMenuDelete = contextMenuDelete;\n    vm.contextMenuUndo = contextMenuUndo;\n    vm.absolute = absolute;\n    vm.togglePrintMode = togglePrintMode;\n    vm.printSelectedOrders = printSelectedOrders;\n    vm.printSelectedOrdersCsv = printSelectedOrdersCsv;\n    vm.printSelectedOrderPickingLists = printSelectedOrderPickingLists;\n    vm.deleteSelectedOrders = deleteSelectedOrders;\n    vm.isAllowedToDeleteSelected = isAllowedToDeleteSelected;\n\n    function onInit() {\n        $window.addEventListener('click', hideContextMenuListener); // Cancel the context menu by clicking outside of it.\n        setContextMenuShowAll();\n\n        if (vm.useScannerNavigation) {\n            angular.element(\"#scannerField\").focus();\n        }\n\n        $(\"#scannerField\").keydown(function (e) {\n            var enterKeyCode = 13;\n            if (e !== undefined && e.keyCode === enterKeyCode) {\n                enterOrderByScannedBarcode(vm.scannerInput);\n            }\n        });\n        activate();\n    }\n    function onChanges(changes) {\n\n    }\n    function onDestroy() {\n\n    }\n    function activate() {\n        setInitialOrderTypes();\n\n        $scope.$watch(function () { return vm.showUndeliveredOnly; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                searchTermChanged();\n            }\n        });\n\n        $scope.$watch(function () { return vm.onlyOrderNumber; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                if(newValue){vm.onlyScan = false;}\n            }\n        });\n\n        $scope.$watch(function () { return vm.onlyScan; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                if(newValue){vm.onlyOrderNumber = false;}\n            }\n        });\n\n        $scope.$watch(function () { return vm.monthsBack; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                if (vm.useMonthsBack)\n                    searchTermChanged();\n            }\n        });\n\n        $scope.$watch(function () { return vm.useMonthsBack; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                if (!vm.useMonthsBack)\n                    vm.monthsBack = null;\n                else\n                    vm.monthsBack = 12; // Default to 12 months\n\n                searchTermChanged();\n            }\n        });\n        $scope.$watch(function () { return vm.showUnprintedOnly; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                searchTermChanged();\n            }\n        });\n\n        $scope.$watch(function () { return vm.showUnapprovedOnly; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                searchTermChanged();\n            }\n        });\n    }\n\n    function setInitialOrderTypes() {\n        if (_.differenceWith(['Store', 'Internal', 'Automatic', 'AutomaticInternal', 'Inventory', 'Return'], vm.orderTypes, _.isEqual).length === 0) {\n            showAllOrderTypes = true;\n            vm.currentOrderListing = 'all';\n        } else if (_.differenceWith(['Automatic'], vm.orderTypes, _.isEqual).length === 0) {\n            showAllOrderTypes = false;\n            vm.currentOrderListing = 'auto';\n        } else if (_.differenceWith(['AutomaticInternal'], vm.orderTypes, _.isEqual).length === 0) {\n            showAllOrderTypes = false;\n            vm.currentOrderListing = 'autointernal';\n        } else if (_.differenceWith(['Inventory'], vm.orderTypes, _.isEqual).length === 0) {\n            showAllOrderTypes = false;\n        } else if (_.differenceWith(['Return'], vm.orderTypes, _.isEqual).length === 0) {\n            showAllOrderTypes = false;\n            vm.currentOrderListing = 'return';\n        } else if (_.differenceWith(vm.orderTypes, ['Internal'], _.isEqual).length === 0) {\n            showAllOrderTypes = false;\n            vm.currentOrderListing = 'internal';\n        } else {\n            //['Store']\n            showAllOrderTypes = false;\n            vm.currentOrderListing = 'store';\n        }\n    }\n\n    function searchTermChanged() {\n        if (vm.searchTerm !== undefined) {\n            vm.onSearchTermChanged({\n                searchTerms: {\n                    searchTerm: vm.searchTerm,\n                    currentPage: vm.currentPage,\n                    totalItems: vm.totalItems,\n                    limit: vm.limit,\n                    orderTypes: vm.orderTypes,\n                    showUndeliveredOnly: vm.showUndeliveredOnly,\n                    showUnprintedOnly: vm.showUnprintedOnly,\n                    showUnapprovedOnly: vm.showUnapprovedOnly,\n                    onlyOrderNumber: vm.onlyOrderNumber,\n                    monthsBack: vm.monthsBack\n                }\n            });\n        }\n    }\n\n    function havePurchaseCostClaim() {\n        if (vm.currentUserClaims.seepurchasecost === undefined) {\n            return false\n        }\n\n        if (!vm.currentUserClaims.seepurchasecost.read) {\n            return false\n        }\n\n        return true\n    }\n\n    function togglePrintMode(printModeType) {\n        vm.showSelection = !vm.showSelection;\n        if (printModeType !== undefined) {\n            vm.printModeType = printModeType;\n        } else {\n            vm.printModeType = \"none\";\n        }\n    }\n\n    function disablePrintMode() {\n        vm.showSelection = false;\n        vm.printModeType = \"none\";\n    }\n\n    function getSelectedOrderIds() {\n        var ids = [];\n        _.forEach(vm.orders, function (order) {\n            if (order.isSelected) {\n                ids.push(order.id);\n            }\n        });\n        return ids;\n    }\n\n    function printSelectedOrders() {\n        var ids = getSelectedOrderIds();\n        if (ids.length !== 0) {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.getMultipleOrderPdf(ids).then(function (response) {\n            }, function (error) {\n                console.log(error);\n            }).finally(function () {\n                disablePrintMode();\n                loadSpinnerService.stop('mainSpinner');\n            });\n        } else {\n            disablePrintMode();\n        }\n    }\n\n    function printSelectedOrdersCsv() {\n        var ids = getSelectedOrderIds();\n        if (ids.length !== 0) {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.getMultipleOrderCsv(ids).then(function (response) {\n            }, function (error) {\n                console.log(error);\n            }).finally(function () {\n                disablePrintMode();\n                loadSpinnerService.stop('mainSpinner');\n            });\n        } else {\n            disablePrintMode();\n        }\n    }\n\n    function deleteSelectedOrders() {\n        var ids = getSelectedOrderIds();\n        var allowedToDelete = isAllowedToDeleteSelected();\n\n        if (ids.length !== 0 && allowedToDelete) {\n\n            confirmationDialogService.showDialog($translate.instant('order.confirmDeleteOrders')).then(function (result) {\n                if (result === true) {\n                    loadSpinnerService.start('mainSpinner');\n                    OrdersApiService.deleteOrders(ids).then(function (response) {\n                        vm.orders = _.reject(vm.orders, function (order) {\n                            if (_.find(ids, function (id) { return order.id === id; })) {\n                                return true;\n                            }\n                        });\n                        orderSearchGrid.itemsSource = vm.orders;\n                        orderSearchGrid.invalidate();\n                        orderSearchGrid.collecitonView.refresh();\n                    }, function (error) {\n                        console.log(error);\n                    }).finally(function () {\n                        disablePrintMode();\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n\n        } else if (!allowedToDelete) {\n            ToasterService.showError('order.cannotDeleteOrders');\n        } else {\n            disablePrintMode();\n        }\n    }\n\n    function isAllowedToDeleteSelected() {\n        var orderIds = getSelectedOrderIds();\n        var allowedToDelete = areAllOrdersDeleteable(orderIds);\n        return allowedToDelete;\n    }\n\n    function areAllOrdersDeleteable(orderIds) {\n        var isDeleteable = true;\n        if (orderIds.length === 0) { return false; }\n\n        var orders = _.filter(vm.orders, function (order) {\n            return _.some(orderIds, function (orderId) { return order.id === orderId; });\n        });\n\n        _.forEach(orders, function (order) {\n            if (order.systemStatus.toLowerCase() !== 'created') {\n                isDeleteable = false;\n            }\n        });\n\n        return isDeleteable;\n    }\n\n    function printSelectedOrderPickingLists() {\n        var ids = getSelectedOrderIds();\n\n        if (ids.length !== 0) {\n            printPickingListDialogService.showDialog().then(function (result) {\n                if (result.result === true) {\n                    var request = {\n                        orderIds: ids,\n                        includeStorageLocation: result.includeStorageLocation,\n                        includeIsPhotographed: result.includeIsPhotographed,\n                        languageCode: result.languageCode,\n                        grouping: result.grouping\n                    };\n\n                    loadSpinnerService.start('mainSpinner');\n                    OrdersApiService.getMultipleOrderPickingListPdf(request).then(function (response) {\n                    }, function (error) {\n                        console.log(error);\n                    }).finally(function () {\n                        disablePrintMode();\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n\n        } else {\n            disablePrintMode();\n        }\n    }\n\n    function transitionToState(id) {\n        vm.onOrderSelected({ orderId: id });\n    }\n\n    function shouldShowInventoryReasonHeader () {\n        return showAllOrderTypes && (_.includes(vm.orderTypes, 'Inventory'));\n    }\n\n    function shouldShowSupplier() {\n        return showAllOrderTypes ||\n            (_.includes(vm.orderTypes, 'Store') || _.includes(vm.orderTypes, 'Automatic') || _.includes(vm.orderTypes, 'Return'));\n    }\n    function shouldShowFromLocation() {\n        return showAllOrderTypes ||\n            (_.includes(vm.orderTypes, 'Internal') || _.includes(vm.orderTypes, 'AutomaticInternal') || _.includes(vm.orderTypes, 'Return'));\n    }\n    function shouldShowDestination() {\n        return showAllOrderTypes ||\n            (!_.includes(vm.orderTypes, 'Return'));\n    }\n    function changeToStoreOrderSearch() {\n        vm.orderTypes = ['Store'];\n        showAllOrderTypes = false;\n        vm.currentOrderListing = 'store';\n        searchTermChanged();\n    }\n    function changeToInternalOrderSearch() {\n        vm.orderTypes = ['Internal'];\n        showAllOrderTypes = false;\n        vm.currentOrderListing = 'internal';\n        searchTermChanged();\n    }\n    function changeToAutoOrderSearch() {\n        vm.orderTypes = ['Automatic', 'AutomaticInternal'];\n        showAllOrderTypes = false;\n        searchTermChanged();\n    }\n    function changeToAutoOrderNormalSearch() {\n        vm.orderTypes = ['Automatic'];\n        showAllOrderTypes = false;\n        vm.currentOrderListing = 'auto';\n        searchTermChanged();\n    }\n    function changeToAutoOrderInternalSearch() {\n        vm.orderTypes = ['AutomaticInternal'];\n        showAllOrderTypes = false;\n        vm.currentOrderListing = 'autointernal';\n        searchTermChanged();\n    }\n    function changeToInventoryOrderSearch() {\n        vm.orderTypes = ['Inventory'];\n        showAllOrderTypes = false;\n        searchTermChanged();\n    }\n    function changeToReturnOrderSearch() {\n        vm.orderTypes = ['Return'];\n        showAllOrderTypes = false;\n        vm.currentOrderListing = 'return';\n        searchTermChanged();\n    }\n    function changeToAllOrderSearch() {\n        vm.orderTypes = ['Store', 'Internal', 'Automatic', 'AutomaticInternal', 'Inventory', 'Return'];\n        showAllOrderTypes = true;\n        vm.currentOrderListing = 'all';\n        searchTermChanged();\n    }\n\n    function gridInitialization(flex) {\n        orderSearchGrid = flex;\n        var host = flex.hostElement;\n        host.addEventListener('contextmenu', contextMenuListener);\n\n        function contextMenuListener(event) {\n            var jqContextMenu = $(\"#orderContextMenu\");\n\n            // Update selected row.\n            var ht = flex.hitTest(event.pageX, event.pageY);\n            flex.selection = new wijmo.grid.CellRange(ht.row, ht.col, ht.row, ht.col);\n\n            flexGridCurrentlySelectedItem = flex.itemsSource[flex.selection.row];\n            event.preventDefault();\n\n            jqContextMenu.css(\"left\", event.clientX);\n            jqContextMenu.css(\"top\", event.clientY);\n            jqContextMenu.css(\"visibility\", \"visible\");\n\n            if (flexGridCurrentlySelectedItem.systemStatus.toLowerCase() === 'delivered') {\n                vm.contextMenuVisibility.deliver = false;\n                if (!$scope.$$phase) {\n                    $scope.$apply();\n                }\n            }\n\n        }\n    }\n\n    function gridSelectionChanged(e) {\n        if (orderSearchGrid.itemsSource) {\n            var clickedRowNumber = e.row;\n            flexGridCurrentlySelectedItem = orderSearchGrid.itemsSource[clickedRowNumber];\n\n            if (flexGridCurrentlySelectedItem.systemStatus.toLowerCase() === 'delivered') {\n                vm.contextMenuVisibility.deliver = false;\n                if (!$scope.$$phase) {\n                    $scope.$apply();\n                }\n            }\n        }\n    }\n\n    function contextMenuEdit() {\n        console.log(\"[contextMenuEdit]: Not implemented.\");\n    }\n    function contextMenuDeliver() {\n        $state.go(\"order.orderdelivery\", { orderId: flexGridCurrentlySelectedItem.id });\n    }\n    function contextMenuCopy() {\n        $state.go(\"order.orderdelivery\", { orderId: flexGridCurrentlySelectedItem.id });\n    }\n    function contextMenuGetAsPdf() {\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.downloadAsPdf(flexGridCurrentlySelectedItem.id).then(function (response) {\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n    function contextMenuGetAsCsv() {\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.downloadAsCsv(flexGridCurrentlySelectedItem.id).then(function (response) {\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n    function contextMenuPrintLabel() {\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.downloadLabels(flexGridCurrentlySelectedItem.id, flexGridCurrentlySelectedItem.orderNumber).then(function (response) {\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n    function contextMenuDelete() {\n        console.log(\"[contextMenuDelete]: Not implemented\");\n    }\n    function contextMenuUndo() {\n        console.log(\"[contextMenuUndo]: Not implemented\");\n    }\n    function hideContextMenuListener(e) {\n        var jqContextMenu = $(\"#orderContextMenu\");\n        jqContextMenu.css(\"visibility\", \"hidden\");\n        setContextMenuShowAll();\n    }\n    function setContextMenuShowAll() {\n        vm.contextMenuVisibility = {\n            edit: false,\n            deliver: true,\n            getAsPdf: true,\n            getAsCsv: true,\n            printLabel: true,\n            delete: false,\n            undo: false\n        };\n    }\n\n    function enterOrderByScannedBarcode(scannedCode) {\n        OrdersApiService.getByOrderNumber(scannedCode).then(function (response) {\n            if (!response) {\n                ToasterService.showError($translate.instant('salestotal.noRows'), $translate.instant('common.error'));\n                return;\n            }\n\n            var destinationIsOk, fromLocationIsOk;\n            var locationIds = _.map($rootScope.currentUser.locations, function (location) {\n                return location.id;\n            });\n            if (response.destination) {\n                destinationIsOk = _.find(locationIds, function (id) { return id === response.destination.id; });\n            }\n            if (response.fromLocation) {\n                fromLocationIsOk = _.find(locationIds, function (id) { return id === response.fromLocation.id; });\n            }\n            if (!destinationIsOk && !fromLocationIsOk) {\n                ToasterService.showError($translate.instant('order.mayNotAccessOrderLocation'), $translate.instant('common.error'));\n                return;\n            }\n\n            if (response.systemStatus.toLowerCase() !== 'delivered') {\n                $state.go('order.orderdelivery', { orderId: response.id, usingScannerNavigation: true });\n            } else {\n                vm.scannerInput = '';\n                transitionToState(response.id);\n            }\n        }, function (error) {\n            console.log(error);\n        });\n    }\n\n    function absolute(number) {\n        if (_.isNumber(number)) {\n            return Math.abs(number);\n        }\n        return 0;\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order.ordersearch', {\n        url: '/search/{orderId}',\n        templateUrl: 'main/order/ordersearch/ordersearch.tpl.html',\n        controller: 'MainOrderSearchController as vm',\n        params: {\n            useScannerNavigation: false,\n            searchTerm: '',\n            showOnlyUndeliveredOrders: true,\n            orderTypes: ['Store']\n        }\n    });\n}\n\n// @ngInject\nfunction MainOrderSearchController($rootScope, $state, $stateParams, OrdersApiService, Rms2OrdersApiService, loadSpinnerService, AuthService) {\n    var vm = this;\n    vm.canAccess = AuthService.canAccess;\n\n    //Properties\n    vm.orderId = ($stateParams.orderId) ? $stateParams.orderId : undefined;\n    vm.orderTypes = ($stateParams.orderTypes) ? $stateParams.orderTypes : ['Store'];\n    vm.searchTerm =  ($stateParams.searchTerm) ? $stateParams.searchTerm : \"\";\n    vm.useScannerNavigation = $stateParams.useScannerNavigation;\n    vm.selectedOrder = {};\n    vm.orders = [];\n    vm.currentPage = 1;\n    vm.totalItems = 0;\n    vm.limit = 15;\n    vm.showBackButton = false;\n    vm.showSearchFields = true;\n    var showUndeliveredOnlyInit = true;\n    var showUnprintedOnlyInit = false;\n    var showUnapprovedOnlyInit = false;\n    var onlyOrderNumber = false;\n    vm.monthsBack = null;\n    vm.showUndeliveredOnly = ($stateParams.showOnlyUndeliveredOrders !== undefined) ? $stateParams.showOnlyUndeliveredOrders : showUndeliveredOnlyInit;\n    vm.showUnprintedOnly = showUnprintedOnlyInit;\n    vm.showUnapprovedOnly = showUnapprovedOnlyInit;\n    vm.onlyOrderNumber = onlyOrderNumber;\n    vm.printModeType = 'none';\n    vm.isLoading = false;\n\n    //Methods\n    vm.loadOrders = loadOrders;\n    vm.selectOrder = selectOrder;\n    vm.toggleSearchFields = toggleSearchFields;\n    vm.searchTermChanged = searchTermChanged;\n\n    activate();\n\n    function activate() {\n        if (vm.orderId) {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.getById(vm.orderId).then(function(response) {\n                vm.order = response.data.order;\n                vm.links = response.data.links;\n                vm.showSearchFields = false;\n            }).finally(function afterGetAllOrders() {\n                loadSpinnerService.stop('mainSpinner', {force: true});\n            });\n        } else {\n            vm.showSearchFields = true;\n            loadOrders();\n        }\n\n    }\n\n    function searchTermChanged(searchTerms) {\n        if(vm.isLoading) return;\n        vm.isLoading = true;\n\n        if (searchTerms) {\n            if (searchTerms.currentPage && vm.currentPage !== searchTerms.currentPage) { vm.currentPage = searchTerms.currentPage; }\n            if (searchTerms.searchTerm && vm.searchTerm !== searchTerms.searchTerm) { vm.searchTerm = searchTerms.searchTerm; }\n            if (searchTerms.limit && vm.limit !== searchTerms.limit) { vm.limit = searchTerms.limit; }\n            if (searchTerms.orderTypes && vm.orderTypes !== searchTerms.orderTypes) { vm.orderTypes = searchTerms.orderTypes; }\n            vm.showUndeliveredOnly = searchTerms.showUndeliveredOnly;\n            vm.showUnprintedOnly = searchTerms.showUnprintedOnly;\n            vm.showUnapprovedOnly = searchTerms.showUnapprovedOnly;\n            console.log(searchTerms.onlyOrderNumber);\n            vm.onlyOrderNumber = searchTerms.onlyOrderNumber;\n            vm.monthsBack = searchTerms.monthsBack;\n\n            loadOrders();\n        }\n    }\n\n    function selectOrder(orderId) {\n        $state.go('order.ordersearch', {\n            orderId: orderId,\n            searchTerm: vm.searchTerm,\n            useScannerNavigation: vm.useScannerNavigation,\n            showOnlyUndeliveredOrders: vm.showUndeliveredOnly,\n            orderTypes: vm.orderTypes\n        });\n    }\n\n    function loadOrders() {\n        loadSpinnerService.start('mainSpinner');\n        var searchTerms = {\n            page: vm.currentPage,\n            searchTerm: vm.searchTerm,\n            limit: vm.limit,\n            orderTypes: vm.orderTypes,\n            onlyOrderNumber: vm.onlyOrderNumber,\n            monthBack: vm.monthsBack,\n            showUndeliveredOnly: vm.showUndeliveredOnly,\n            showUnprintedOnly: vm.showUnprintedOnly,\n            showUnapprovedOnly: vm.showUnapprovedOnly\n        };\n        var tenantStringIdentifier = $rootScope.currentUser.tenant.tenantStringIdentifier.toLowerCase();\n        console.log(tenantStringIdentifier);\n\n        if (isElasticSearchEnabledTenant(tenantStringIdentifier)) {\n            Rms2OrdersApiService.getAll(searchTerms).then(function(response) {\n                vm.orders = response.results;\n\n                _.forEach(vm.orders, function (o) {\n                    o.isSelected = false;\n                });\n\n                vm.totalItems = response.total;\n                vm.currentPage = response.page;\n                vm.searchTerm = vm.searchTerm ? vm.searchTerm : '';\n                formatPlannedDeliveryDate(vm.orders);\n            }, function(error) {\n                console.log(error);\n                vm.isLoading = false;\n            }).finally(function afterGetAllOrders() {\n                loadSpinnerService.stop('mainSpinner', {force: true});\n                vm.isLoading = false;\n            });\n        } else {\n            OrdersApiService.getAll(searchTerms).then(function(response) {\n                vm.orders = response.results;\n\n                _.forEach(vm.orders, function (o) {\n                    o.isSelected = false;\n                });\n\n                vm.totalItems = response.total;\n                vm.currentPage = response.page;\n                vm.searchTerm = vm.searchTerm ? vm.searchTerm : '';\n                formatPlannedDeliveryDate(vm.orders);\n            }, function(error) {\n                console.log(error);\n                vm.isLoading = false;                \n            }).finally(function afterGetAllOrders() {\n                loadSpinnerService.stop('mainSpinner', {force: true});\n                vm.isLoading = false;\n            });\n        }\n    }\n\n    function isElasticSearchEnabledTenant(tenantStringIdentifier) {\n            return (tenantStringIdentifier != \"pondus\")\n    }\n\n    // Formats the delivery dates to YYYY-MM-DD instead of YYYY-MM-DDTHH:MM:SS\n    function formatPlannedDeliveryDate(orders) {\n        for (var i = 0; i < orders.length; i++) {\n            var order = orders[i];\n            order.plannedDeliveryDate = order.plannedDeliveryDate.split('T')[0];\n        }\n    }\n\n    function toggleSearchFields() {\n        if (!vm.order || !vm.order.id) { return; }\n        if (vm.showSearchFields === false && (!vm.orders || vm.orders.length === 0)) {\n            loadOrders();\n        }\n        vm.showSearchFields = !vm.showSearchFields;\n    }\n}\n\nangular\n    .module('order.ordersearch', [])\n    .config(stateConfig)\n    .controller('MainOrderSearchController', MainOrderSearchController);\n","angular.module('components.caPurchaseOrderArticlesSummaryGrid', [])\n    .component('caPurchaseOrderArticlesSummaryGrid', {\n        templateUrl: 'main/order/purchaseorder/components/articlessummarygrid.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            articleIds: '=',\n            purchaseOrder: '<',\n            disabled: '<',\n            orderChangeCount: '<',\n            onArticleSelected: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $rootScope) {\n    var vm = this;\n\n    var articlesGrid = {};\n    vm.articles = [];\n    vm.articleIds = [];\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.hasClaim = havePurchaseCostClaim();\n    vm.captureArticlesGrid = captureArticlesGrid;\n    vm.selectArticle = selectArticle;\n\n    function onInit() {\n        loadPurchaseOrderData();\n\n        // To force the grid to redraw when the source items collection changes.\n        // $scope.$watch(function() { return vm.articles.length; },\n        //               function() {\n        //                   refreshArticlesGrid();\n        //               });\n\n        // _.forEach(vm.purchaseOrder.orders, function(order) {\n        //     // Put a listener on all orders' orderArticles\n        //     $scope.$watch(function() { return order.orderArticles.length; },\n        //                   function() {\n        //                       updateAddedArticlesCollection();\n        //                       refreshArticlesGrid();\n        //                   });\n        // });\n\n        $scope.$watch(function() { return vm.orderChangeCount; }, function() {\n            // updateAddedArticlesCollection();\n            // refreshArticlesGrid();\n            loadPurchaseOrderData();\n        });\n\n    }\n\n    function onChanges() {\n    }\n\n    function onDestroy() {\n    }\n\n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read){\n            return false\n        }\n\n        return true\n    }\n\n    // Short hand for creating the grid data, calculate quantities and forcing the grid to redraw.\n    function loadPurchaseOrderData() {\n        updateAddedArticlesCollection();\n        recalculateArticleTotals();\n        refreshArticlesGrid();\n    }\n\n    // Create a single list of articles for the grid to display.\n    function updateAddedArticlesCollection() {\n        vm.articles.length = 0;\n        _.forEach(vm.purchaseOrder.orders, function(order) {\n            _.forEach(order.orderArticles, function(orderArticle) {\n                if (!_.find(vm.articles, function(article) { return article.id === orderArticle.article.id; })) {\n                    vm.articles.push(orderArticle.article);\n                    vm.articleIds.push({ articleId: orderArticle.article.id });\n                }\n            });\n        });\n    }\n\n    function recalculateArticleTotals() {\n        // Reset quantities\n        _.forEach(vm.articles, function(addedArticle) {\n            addedArticle['summarizedPurchaseCost'] = 0;\n            addedArticle['summarizedSalesPrice'] = 0;\n            addedArticle['summarizedQuantity'] = 0;\n        });\n\n        // Calculate article totals\n        _.forEach(vm.articles, function(addedArticle) {\n            _.forEach(vm.purchaseOrder.orders, function(order) {\n                _.forEach(order.orderArticles, function(orderArticle) {\n                    if (addedArticle.id === orderArticle.article.id) {\n                        _.forEach(orderArticle.orderRows, function(orderRow) {\n                            addedArticle['summarizedQuantity'] += orderRow.quantity;\n                            addedArticle['summarizedPurchaseCost'] += orderRow.quantity * orderRow.purchaseCost;\n                            addedArticle['summarizedSalesPrice'] += orderRow.quantity * orderRow.articleVariant.salesPrice;\n                        });\n                    }\n                });\n            });\n        });\n    }\n\n    // Helper function. Calls refresh and invalidate on the grid if they have been defined (grid initialized)\n    function refreshArticlesGrid() {\n        if (articlesGrid.invalidate) {\n            articlesGrid.invalidate();\n        }\n        if (articlesGrid.collectionView && articlesGrid.collectionView.refresh) {\n            articlesGrid.collectionView.refresh();\n        }\n    }\n\n    function captureArticlesGrid(s) {\n        articlesGrid = s;\n        refreshArticlesGrid();\n    }\n\n    function selectArticle(ar) {\n        vm.onArticleSelected({article: ar});\n    }\n}\n","angular.module('components.caOpenToBuyGrid', [])\n    .component('caOpenToBuyGrid', {\n        templateUrl: 'main/order/purchaseorder/components/opentobuygrid.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            purchaseOrder: '<',\n            disabled: '<',\n            orderChangeCount: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, BudgetsApiService, ToasterService, $rootScope) {\n    var vm = this;\n\n    var otbGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.companyBudgets = [];\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.hasClaim = havePurchaseCostClaim();\n\n    vm.captureOtbGrid = captureOtbGrid;\n\n    function onInit() {\n        $scope.$watch(function() { return vm.orderChangeCount; }, function() {\n            recalculateBudgetData();\n        });\n\n        $scope.$watch(function () { return vm.purchaseOrder.company.id; }, function () {\n            if (vm.purchaseOrder.company && vm.purchaseOrder.articleCollection) {\n                getBudgetsForCompany(vm.purchaseOrder.company);\n                recalculateBudgetData();\n            }\n        });\n\n        $scope.$watch(function() { return vm.purchaseOrder.articleCollection.id; }, function() {\n            if (vm.purchaseOrder.company && vm.purchaseOrder.articleCollection) {\n                getBudgetsForCompany(vm.purchaseOrder.company);\n                recalculateBudgetData();\n            }\n        });\n    }\n\n    function onChanges() {\n    }\n\n    function onDestroy() {\n    }\n\n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read){\n            return false\n        }\n\n        return true\n    }\n\n    function captureOtbGrid(s) {\n        otbGrid = s;\n        otbGrid.itemsSource = rowCollection;\n    }\n\n    function getBudgetsForCompany(company) {\n        if (company.id) {\n            BudgetsApiService.getBudgetsForCompany(company.id).then(function(response) {\n                rowData.length = 0;\n\n                vm.companyBudgets = response.data;\n\n                var collectionFiltered = _.filter(vm.companyBudgets, function(budget) {\n                    return budget.collection.id === vm.purchaseOrder.articleCollection.id;\n                });\n\n                var locationGrouped = _.groupBy(collectionFiltered, function(budget) {\n                    return budget.location.id;\n                });\n\n                _.forEach(Object.keys(locationGrouped), function(key) {\n                    var group = locationGrouped[key];\n                    var groupLocation = group[0].location;\n\n                    var element = {\n                        location: groupLocation,\n                        totalOrderedQuantity: _.sumBy(group, function(obj) { return obj.orderedQuantity; }),\n                        totalOrderedCost: Math.round(_.sumBy(group, function(obj) { return obj.orderedCost; })),\n                        costPriceThisOrder: 0,\n                        quantityThisOrder: 0,\n                        totalQuantity: 0,\n                        totalCost: 0,\n                        budgetQuantity: _.sumBy(group, function(obj) { return obj.quantity; }),\n                        budgetCost: _.sumBy(group, function(obj) { return obj.purchaseCost; }),\n                        openToBuyQuantity: 0,\n                        openToBuyCost: 0,\n                        openToBuyPercentage: 0\n                    };\n\n                    // Totals\n                    element.totalQuantity = element.totalOrderedQuantity + element.quantityThisOrder;\n                    element.totalCost = Math.round(element.totalOrderedCost + element.costPriceThisOrder);\n\n                    // Open to buy values\n                    element.openToBuyQuantity = element.budgetQuantity - element.totalQuantity;\n                    element.openToBuyCost = Math.round(element.budgetCost - element.totalCost);\n                    element.openToBuyPercentage = Math.round(element.openToBuyCost / element.budgetCost * 100);\n\n                    rowData.push(element);\n                });\n\n                var totalsElement = {\n                    totalOrderedQuantity: 0,\n                    totalOrderedCost: 0,\n                    costPriceThisOrder: 0,\n                    quantityThisOrder: 0,\n                    totalQuantity: 0,\n                    totalCost: 0,\n                    budgetQuantity: 0,\n                    budgetCost: 0,\n                    openToBuyQuantity: 0,\n                    openToBuyCost: 0,\n                    isTotalsRowElement: true\n                };\n\n                rowData.push(totalsElement);\n\n                var isNewPurchaseOrder = vm.purchaseOrder.id === undefined || vm.purchaseOrder.id === 0;\n\n                if (!isNewPurchaseOrder) {\n                    recalculateBudgetData();\n                    _.forEach(rowData, function(row) {\n                        row.totalOrderedQuantity -= row.quantityThisOrder;\n                        row.totalOrderedCost -= row.costPriceThisOrder;\n                    });\n                }\n\n                if (otbGrid.invalidate) {\n                    otbGrid.invalidate();\n                    rowCollection.refresh();\n                }\n\n            }, function(error) {\n                ToasterService.showError(error.message);\n            });\n        }\n    }\n\n    function recalculateBudgetData() {\n        var locations = [];\n        _.forEach(rowData, function(row) {\n            if (row.location) {\n                locations.push(row.location);\n            }\n        });\n\n        _.forEach(rowData, function(row) {\n            row.quantityThisOrder = 0;\n            row.costPriceThisOrder = 0;\n        });\n\n        var totalsRow = _.find(rowData, function(row) {\n            return row.isTotalsRowElement;\n        });\n\n        if (totalsRow === undefined) {\n            return;\n        }\n\n        totalsRow.totalOrderedQuantity = 0;\n        totalsRow.totalOrderedCost = 0;\n        totalsRow.costPriceThisOrder = 0;\n        totalsRow.quantityThisOrder = 0;\n        totalsRow.totalQuantity = 0;\n        totalsRow.totalCost = 0;\n        totalsRow.budgetQuantity = 0;\n        totalsRow.budgetCost = 0;\n        totalsRow.openToBuyQuantity = 0;\n        totalsRow.openToBuyCost = 0;\n\n        _.forEach(vm.purchaseOrder.orders, function(order) {\n            var currentLocation = order.destination;\n            var budgetRow = _.find(rowData, function(row) {\n                if (row.location === undefined) {\n                    return false;\n                }\n                return row.location.id === currentLocation.id;\n            });\n\n            if (budgetRow) {\n                _.forEach(order.orderArticles, function(orderArticle) {\n                    _.forEach(orderArticle.orderRows, function(orderRow) {\n                        budgetRow.quantityThisOrder += orderRow.quantity;\n                        budgetRow.costPriceThisOrder += orderRow.quantity * orderRow.purchaseCost;\n                    });\n                });\n\n                budgetRow.totalQuantity = budgetRow.quantityThisOrder + budgetRow.totalOrderedQuantity;\n                budgetRow.totalCost = budgetRow.totalOrderedCost + budgetRow.costPriceThisOrder;\n                budgetRow.openToBuyQuantity = budgetRow.budgetQuantity - budgetRow.totalQuantity;\n                budgetRow.openToBuyCost = Math.round(budgetRow.budgetCost - budgetRow.totalCost);\n                budgetRow.openToBuyPercentage = Math.round(budgetRow.openToBuyCost / budgetRow.budgetCost * 100);\n            }\n        });\n\n        var budgetRows = _.reject(rowData, function(row) {\n            return row.isTotalsRowElement;\n        });\n\n        _.forEach(budgetRows, function(row) {\n            totalsRow.totalOrderedQuantity += row.totalOrderedQuantity;\n            totalsRow.totalOrderedCost += row.totalOrderedCost;\n            totalsRow.costPriceThisOrder += row.costPriceThisOrder;\n            totalsRow.quantityThisOrder += row.quantityThisOrder;\n            totalsRow.totalQuantity += row.totalQuantity;\n            totalsRow.totalCost += row.totalCost;\n            totalsRow.budgetQuantity += row.budgetQuantity;\n            totalsRow.budgetCost += row.budgetCost;\n            totalsRow.openToBuyQuantity += row.openToBuyQuantity;\n            totalsRow.openToBuyCost += row.openToBuyCost;\n        });\n\n        totalsRow.openToBuyPercentage = Math.round(totalsRow.openToBuyCost / totalsRow.budgetCost * 100);\n\n        if (otbGrid.invalidate) {\n            otbGrid.invalidate();\n            rowCollection.refresh();\n        }\n    }\n}\n","angular.module('components.caPurchaseOrderDistributionGrid', [])\n    .component('caPurchaseOrderDistributionGrid', {\n        templateUrl: 'main/order/purchaseorder/components/purchaseorderdistributiongrid.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            selectedColorVariant: '<',\n            selectedArticle: '<',\n            purchaseOrder: '<',\n            disabled: '<',\n            orderChangeCount: '<',\n            onPurchaseOrderChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject    \nfunction controller($scope, OrdersApiService, BudgetsApiService) {\n    var vm = this;\n\n    var distributionGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n\n    var highlightForeGroundColor = '#000000';\n    var highlightBackgroundColor = '#ffddee';\n    var summaryCellBackgroundColor = '#dddddd';\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.totalQuantityToDistribute = 0;\n    vm.budgets = [];\n    vm.packs = [];\n    vm.selectedPack = [];\n    vm.locations = [];\n\n    vm.captureDistributionGrid = captureDistributionGrid;\n    vm.cellEditEnded = cellEditEnded;\n    vm.distributeBudgetQuantities = distributeBudgetQuantities;\n    vm.recalculateTotals = recalculateDistributionGridTotals;\n    vm.getAndApplyBudget = getAndApplyBudget;\n\n    function onInit() {\n        OrdersApiService.getLocations().then(function(response) {\n            vm.locations = response;\n        }, function(error) {\n            //toasterservice here\n            console.log(error);\n        });\n\n        $scope.$watch(function() { return vm.selectedColorVariant; }, function() {\n            // Check if the grid has been captured before trying to do something.\n            if (distributionGrid.invalidate) {\n                setupGridColumns();\n                setupGridData();\n                recalculateDistributionGridTotals();\n                distributionGrid.invalidate();\n                rowCollection.refresh();\n            }\n        });\n\n        $scope.$watch(function() { return vm.selectedArticle; }, function() {\n            if (vm.selectedArticle !== undefined && vm.selectedArticle.id !== undefined) {\n                getArticlePacks();\n            }\n        });\n    }\n\n    function onChanges() {\n    }\n\n    function onDestroy() {\n    }\n\n    // Capture the distribution grid and set up its contents\n    function captureDistributionGrid(s) {\n        distributionGrid = s;\n        distributionGrid.itemsSource = rowCollection;\n        configureGridItemsFormatter();\n        setupGrid();\n        setupGridColumns();\n        setupGridData();\n    }\n\n    // Initialize the grid\n    function setupGrid() {\n        rowData.length = 0;\n        distributionGrid.finishEditing(true);\n        distributionGrid.columns.clear();\n        distributionGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    // Create the grid columns\n    function setupGridColumns() {\n        distributionGrid.columns.clear();\n\n        var locationColumn = new wijmo.grid.Column();\n        locationColumn.binding = \"locationName\";\n        locationColumn.header = \" \";\n        locationColumn.allowSorting = false;\n        locationColumn.width = \"2*\";\n        locationColumn.allowSorting = false;\n        locationColumn.isReadOnly = true;\n        distributionGrid.columns.push(locationColumn);\n\n        var colorColumn = new wijmo.grid.Column();\n        colorColumn.binding = \"colorName\";\n        colorColumn.header = \"  \";\n        colorColumn.allowSorting = false;\n        colorColumn.width = \"2*\";\n        colorColumn.allowSorting = false;\n        colorColumn.isReadOnly = true;\n        distributionGrid.columns.push(colorColumn);\n\n        // Column for displaying the budget percentage\n        var budgetColumn = new wijmo.grid.Column();\n        budgetColumn.binding = \"budget\";\n        budgetColumn.header = \"  \";\n        budgetColumn.width = 100;\n        budgetColumn.allowSorting = false;\n        budgetColumn.isReadOnly = false;\n        budgetColumn.align = \"Right\";\n        distributionGrid.columns.push(budgetColumn);\n\n        var totalQuantityColumn = new wijmo.grid.Column();\n        totalQuantityColumn.binding = \"totalQuantity\";\n        totalQuantityColumn.header = \"#\";\n        totalQuantityColumn.allowSorting = false;\n        totalQuantityColumn.width = \"2*\";\n        totalQuantityColumn.allowSorting = false;\n        totalQuantityColumn.isReadOnly = true;\n        totalQuantityColumn.align = \"Right\";\n        distributionGrid.columns.push(totalQuantityColumn);\n\n        var sizeVariants = getSizeVariants(vm.selectedArticle);\n\n        _.forEach(sizeVariants, function(sizeVariant) {\n            var c = new wijmo.grid.Column();\n            c.binding = sizeVariant.variantDetailName;\n            c.header = sizeVariant.variantDetailName;\n            c.width = \"2*\";\n            c.allowSorting = false;\n            c.inputType = 'text';\n            c.isReadOnly = false;\n            distributionGrid.columns.push(c);\n        });\n\n        var rowTotalColumn = new wijmo.grid.Column();\n        rowTotalColumn.binding = \"rowTotal\";\n        rowTotalColumn.header = \"    \";\n        rowTotalColumn.allowSorting = false;\n        rowTotalColumn.width = \"*\";\n        rowTotalColumn.allowSorting = false;\n        rowTotalColumn.isReadOnly = true;\n        distributionGrid.columns.push(rowTotalColumn);\n    }\n\n    // Populate the grid with data from the purchaseOrder\n    function setupGridData() {\n        rowData.length = 0;\n        var sizeVariants = getSizeVariants(vm.selectedArticle);\n        var locationsToProcess = [];\n\n        if (vm.purchaseOrder.id !== undefined && vm.purchaseOrder.id !== 0) {\n            _.forEach(vm.purchaseOrder.orders, function(order) {\n                if (!_.find(locationsToProcess, function (addedLocation) { return addedLocation.id === order.destination.id; })) {\n                    locationsToProcess.push(order.destination);\n                }\n            });\n        } else {\n            locationsToProcess = vm.locations;\n        }\n\n        // Adding one row element to be used as the size distribution weight row.\n        var rw = {\n            isDistributionRowElement: true\n        };\n        _.forEach(sizeVariants, function(sizeVariant) {\n            rw[sizeVariant.variantDetailName] = 0;\n        });\n        rw['rowTotal'] = 0;\n        rowData.push(rw);\n\n        _.forEach(locationsToProcess, function(location) {\n            var r = {};\n\n            r['locationId'] = location.id;\n            r['locationName'] = location.locationNumber + \" \" + location.locationName;\n            r['colorName'] = vm.selectedColorVariant.variantDetailName;\n            r['articleName'] = vm.selectedArticle.articleName;\n            r['variantDetail1Id'] = vm.selectedColorVariant.id;\n            r['budget'] = 0;\n            r['totalQuantity'] = 0;\n            r['rowTotal'] = 0;\n\n            var foundOrder = _.find(vm.purchaseOrder.orders, function(order) {\n                return order.destination.id === location.id;\n            });\n            _.forEach(sizeVariants, function(sizeVariant) {\n                var foundRow;\n                if (foundOrder) {\n                    var foundOrderArticle = _.find(foundOrder.orderArticles, function(orderArticle) {\n                        return orderArticle.article.id === vm.selectedArticle.id;\n                    });\n                    if (foundOrderArticle) {\n                        foundRow = _.find(foundOrderArticle.orderRows, function(orderRow) {\n                            return orderRow.articleVariant.variantDetail2.variantDetailName === sizeVariant.variantDetailName &&\n                                    orderRow.articleVariant.variantDetail1.variantDetailName === vm.selectedColorVariant.variantDetailName;\n                        });\n                    }\n                }\n\n                r[sizeVariant.variantDetailName] = (foundRow) ? foundRow.quantity : 0;\n                r[sizeVariant.variantDetailName + \"ArticleVariant\"] = (foundRow) ? foundRow.articleVariant : null;\n            });\n            rowData.push(r);\n        });\n\n        // Adding one row element to be used to display the totals of each column.\n        var totalsRow = {\n            isTotalsRowElement: true\n        };\n        _.forEach(sizeVariants, function(sizeVariant) {\n            totalsRow[sizeVariant.variantDetailName] = 0;\n        });\n        totalsRow['rowTotal'] = 0;\n        rowData.push(totalsRow);\n    }\n\n    // Do things when the user have edited a cell\n    function cellEditEnded() {\n        updateLocalPurchaseOrder();\n    }\n\n    function updateLocalPurchaseOrder() {\n        writeUpdatesToPurchaseOrder();\n        recalculateDistributionGridTotals();\n        vm.onPurchaseOrderChanged({purchaseOrder: vm.purchaseOrder});\n    }\n\n    // Write the distribution grid data back to the purchaseOrder\n    function writeUpdatesToPurchaseOrder() {\n        _.forEach(rowData, function(row) {\n            if (row.isDistributionRowElement || row.isTotalsRowElement) {\n                return;\n            }\n\n            var order = _.find(vm.purchaseOrder.orders, function(order) {\n                return order.destination.id === row.locationId;\n            });\n\n            var orderArticle = _.find(order.orderArticles, function(orderArticle) {\n                return orderArticle.article.id === vm.selectedArticle.id;\n            });\n\n            var sizeVariants = getSizeVariants(vm.selectedArticle);\n\n            _.forEach(sizeVariants, function(sizeVariant) {\n                var orderRow = _.find(orderArticle.orderRows, function(orderRow) {\n                    return orderRow.articleVariant.variantDetail1.id === vm.selectedColorVariant.id &&\n                           orderRow.articleVariant.variantDetail2.id === sizeVariant.id;\n                });\n\n                if (orderRow === undefined) {\n                    var artVar = _.find(vm.selectedArticle.articleVariants, function(articleVariant) {\n                        return articleVariant.variantDetail1.id === vm.selectedColorVariant.id &&\n                               articleVariant.variantDetail2.id === sizeVariant.id;\n                    });\n\n                    orderRow = newOrderRow(artVar);\n\n                    if (orderArticle.orderRows === undefined) {\n                        orderArticle.orderRows = [];\n                    }\n\n                    orderArticle.orderRows.push(orderRow);\n                }\n\n                orderRow.quantity = row[sizeVariant.variantDetailName];\n            });\n        });\n    }\n\n    // Calculate the row totals and column totals\n    function recalculateDistributionGridTotals() {\n        var columnTotalsRow = _.find(rowData, function(colorRow) {\n            return colorRow.isTotalsRowElement;\n        });\n\n        // Calculate column totals.\n        var sizeVariants = getSizeVariants(vm.selectedArticle);\n        _.forEach(sizeVariants, function(sizeVariant) {\n            var columnQuantity = 0;\n            _.forEach(rowData, function(colorsRow) {\n                if (!colorsRow.isDistributionRowElement && !colorsRow.isTotalsRowElement) {\n                    columnQuantity += colorsRow[sizeVariant.variantDetailName];\n                }\n            });\n\n            columnTotalsRow[sizeVariant.variantDetailName] = columnQuantity;\n        });\n\n        // Calculate row totals.\n        _.forEach(rowData, function(row) {\n            if (!rowData.isTotalsRowElement) {\n                var rowQuantity = 0;\n                _.forEach(sizeVariants, function(sizeVariant) {\n                    rowQuantity += row[sizeVariant.variantDetailName];\n                });\n                row['rowTotal'] = rowQuantity;\n            }\n        });\n\n        distributionGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    // Get all unique variantDetail2s from provided article\n    function getSizeVariants(article) {\n        var sizeVariants = [];\n        _.forEach(article.articleVariants, function(articleVariant) {\n            if (!_.find(sizeVariants, {id: articleVariant.variantDetail2.id})) {\n                sizeVariants.push(articleVariant.variantDetail2);\n            }\n        });\n\n        return _.sortBy(sizeVariants, 'sortOrder');\n    }\n\n    // Get all unique variantDetail1s from provided article\n    function getColorVariants(article) {\n        var colorVariants = [];\n        _.forEach(article.articleVariants, function(articleVariant) {\n            if (!_.find(colorVariants, {id: articleVariant.variantDetail1.id})) {\n                colorVariants.push(articleVariant.variantDetail1);\n            }\n        });\n\n        return _.sortBy(colorVariants, 'sortOrder');\n    }\n\n    // Configures grid highlighting/formatting of certain cells\n    function configureGridItemsFormatter() {\n        distributionGrid.itemFormatter = function(panel, r, c, cell) {\n            var style = cell.style;\n            var regularCellType = wijmo.grid.CellType.Cell;\n\n            if (((r === 0 && c > 3 && c < (distributionGrid.columns.length - 1)) || (c === 2)) && panel.cellType === regularCellType) {\n                style.color = highlightForeGroundColor;\n                style.backgroundColor = highlightBackgroundColor;\n            }\n\n            if ((r === (rowData.length - 1) && c > 3 || c === (distributionGrid.columns.length - 1)) && panel.cellType === regularCellType) {\n                style.fontWeight = 'bolder';\n                style.backgroundColor = summaryCellBackgroundColor;\n            }\n        };\n    }\n\n    // Distributes the quantity defined in vm.totalQuantityToDistribute over the quantity grid cells\n    function distributeBudgetQuantities() {\n        var totalDistributionQuantity = 0;\n        var totalSizesDistributionQuantity = 0;\n\n        var totalsSizesRowElement = _.find(rowData, {isDistributionRowElement: true});\n        var totalsSizesRowElementKeys = _.without(Object.keys(totalsSizesRowElement), 'isDistributionRowElement');\n        totalsSizesRowElementKeys = _.without(totalsSizesRowElementKeys, 'rowTotal');\n\n        // Calculate total 'budget'\n        _.forEach(rowData, function(row) {\n            if (!row.isDistributionRowElement && !row.isTotalsRowElement) {\n                totalDistributionQuantity += row.budget;\n            }\n        });\n\n        // Set the row quantity distribution\n        _.forEach(rowData, function(row) {\n            if (!row.isDistributionRowElement && !row.isTotalsRowElement) {\n                row['totalQuantity'] = Math.floor(vm.totalQuantityToDistribute * (row['budget'] / totalDistributionQuantity));\n            }\n        });\n\n        // Get the full sum, to be used in the weighted ratio calculation below\n        _.forEach(totalsSizesRowElementKeys, function(key) {\n            totalSizesDistributionQuantity += totalsSizesRowElement[key];\n        });\n\n        // To prevent division by zero\n        if (totalSizesDistributionQuantity === 0) {\n            return;\n        }\n\n        // Set the size variant column quantities\n        _.forEach(totalsSizesRowElementKeys, function(key) {\n            if (key !== 'isDistributionRowElement') {\n                _.forEach(rowData, function(row) {\n                    if (!row.isDistributionRowElement && !row.isTotalsRowElement) {\n                        row[key] = Math.floor(row['totalQuantity'] * (totalsSizesRowElement[key] / totalSizesDistributionQuantity));\n                    }\n                });\n            }\n        });\n\n        updateLocalPurchaseOrder();\n        distributionGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    // Fetches the budget for each location, for the selected collection, for the currently selected article.\n    function getAndApplyBudget() {\n        BudgetsApiService.getBudgetsForItemGroupAndCollection(vm.selectedArticle.itemGroup.id, vm.purchaseOrder.articleCollection.id).then(function (response) {\n            vm.budgets = response.data;\n            setGridBudgetValues();\n            var selectedPack = vm.selectedPack;\n            var distributionRow = _.find(rowData, { isDistributionRowElement: true });\n            var sizeVariants = getSizeVariants(vm.selectedArticle);\n            if (selectedPack.id) {\n                _.forEach(selectedPack.packArticleVariants, function(packArticleVariant) {\n                    distributionRow[packArticleVariant.variantDetail.variantDetailName] = packArticleVariant.amount;\n                });\n            } else {\n                _.forEach(sizeVariants, function(sizeVariant) {\n                    distributionRow[sizeVariant.variantDetailName] = 1;\n                });\n            }\n        }, function(error) {\n            // TODO: toasterservice here\n            console.log(error);\n        });\n    }\n\n    // Populate the budget fields with the appropriate data\n    function setGridBudgetValues() {\n        _.forEach(vm.budgets, function(budget) {\n            var rd = _.find(rowData, function(row) {\n                return row.locationId === budget.location.id;\n            });\n            if (rd) {\n                rd.budget = budget.purchaseCost;\n            }\n        });\n\n        distributionGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function getArticlePacks() {\n        OrdersApiService.getPacksForArticle(vm.selectedArticle.id).then(function(response) {\n            vm.packs = response;\n        }, function(error) {\n            // TODO: toasterservice here\n            console.log(error);\n        });\n    }\n\n    function newOrderRow(articleVariant) {\n        var supplierPrice = _.find(articleVariant.supplierPrices, function(supplierPrice) {\n            return supplierPrice.companyId === vm.purchaseOrder.company.id;\n        });\n\n        var purchaseCost = (supplierPrice !== undefined) ? supplierPrice.purchasePrice : articleVariant.purchaseCost;\n\n        return {\n            id: 0,\n            orderStatus: {},\n            articleVariant: articleVariant,\n            purchaseCost: purchaseCost\n        };\n    }\n}\n","angular.module('components.caPurchaseOrderExtraOptions', [])\n    .component('caPurchaseOrderExtraOptions', {\n        templateUrl: 'main/order/purchaseorder/components/purchaseorderextraoptions.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            purchaseOrder: '<',\n            disabled: '<',\n            orderChangeCount: '<',\n            selectedArticle: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller(loadSpinnerService, StockLogisticsApiService, ToasterService) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.showExtraOptions = false;\n    vm.stockLogisticsHasBeenCreated = false;\n\n    vm.toggleExtraOptionsVisibility = toggleExtraOptionsVisibility;\n    vm.createStockLogistics = createStockLogistics;\n\n    function onInit() {\n    }\n\n    function onChanges() {\n    }\n\n    function onDestroy() {\n    }\n\n    function toggleExtraOptionsVisibility() {\n        vm.showExtraOptions = !vm.showExtraOptions;\n    }\n\n        // Use the current quantity data to create or update stock logistics of the current article.\n    function createStockLogistics() {\n        var stockLogistics = [];\n\n        loadSpinnerService.start('mainSpinner');\n        StockLogisticsApiService.getByArticle(vm.selectedArticle.id).then(function(getResponse) {\n\n            var oldStockLogistics = getResponse.data;\n\n            _.forEach(oldStockLogistics, function(stlog) {\n                stockLogistics.push(stlog);\n            });\n\n            _.forEach(vm.purchaseOrder.orders, function(order) {\n                _.forEach(order.orderArticles, function(orderArticle) {\n                    if (orderArticle.article.id === vm.selectedArticle.id) {\n                        _.forEach(orderArticle.orderRows, function(orderRow) {\n                            var stockLogistic = _.find(stockLogistics, function(stLog) {\n                                return stLog.articleVariant.id === orderRow.articleVariant.id && stLog.location.id === order.destination.id;\n                            });\n\n                            if (orderRow.quantity === 0) {\n                                return;\n                            }\n\n                            if (!stockLogistic) {\n                                stockLogistic = newEmptyStockLogistic();\n                                stockLogistic.location = order.destination;\n                                stockLogistic.articleVariant = orderRow.articleVariant;\n                                stockLogistics.push(stockLogistic);\n                            }\n                            stockLogistic.orderingPointMax = orderRow.quantity;\n                        });\n                    }\n                });\n            });\n\n            StockLogisticsApiService.saveStockLogistics(stockLogistics).then(function(response) {\n                vm.stockLogisticsHasBeenCreated = true;\n            }, function(postError) {\n                console.log(postError);\n                ToasterService.showError(postError.message);\n            });\n\n        }, function(getError) {\n            console.log(getError);\n            ToasterService.showError(getError.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n\n    }\n\n    function newEmptyStockLogistic() {\n        return {\n            id: 0,\n            location: {},\n            articlevariant: {},\n            orderingPointMin: 0,\n            orderingPointMax: 0,\n            packSize: 0,\n            quantityInTransit: 0,\n            monday: false,\n            tuesday: false,\n            wednesday: false,\n            thursday: false,\n            friday: false,\n            saturday: false,\n            sunday: false\n        };\n    }\n\n    // Get all unique variantDetail2s from provided article\n    function getSizeVariants(article) {\n        var sizeVariants = [];\n        _.forEach(article.articleVariants, function(articleVariant) {\n            if (!_.find(sizeVariants, {id: articleVariant.variantDetail2.id})) {\n                sizeVariants.push(articleVariant.variantDetail2);\n            }\n        });\n\n        return _.sortBy(sizeVariants, 'sortOrder');\n    }\n\n    // Get all unique variantDetail1s from provided article\n    function getColorVariants(article) {\n        var colorVariants = [];\n        _.forEach(article.articleVariants, function(articleVariant) {\n            if (!_.find(colorVariants, {id: articleVariant.variantDetail1.id})) {\n                colorVariants.push(articleVariant.variantDetail1);\n            }\n        });\n\n        return _.sortBy(colorVariants, 'sortOrder');\n    }\n}\n","angular.module('components.caPurchaseOrderSingleArticleSummaryGrid', [])\n    .component('caPurchaseOrderSingleArticleSummaryGrid', {\n        templateUrl: 'main/order/purchaseorder/components/singlearticlesummarygrid.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            selectedArticle: '<',\n            purchaseOrder: '<',\n            disabled: '<',\n            orderChangeCount: '<',\n            onColorSelected: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $rootScope) {\n    var vm = this;\n\n    var colorsChoiceAndTotalsGrid = {};\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.hasClaim = havePurchaseCostClaim()\n\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.colorsAndTotalsRows = [];\n\n    vm.captureColorChoiceAndTotalsGrid = captureColorChoiceAndTotalsGrid;\n    vm.selectColor = selectColor;\n\n    function onInit() {\n        $scope.$watch(function() { return vm.selectedArticle.id; },\n                      function() {\n                          loadGridData();\n                          refreshGrid();\n                      });\n\n        $scope.$watch(function() { return vm.orderChangeCount; }, function() {\n            loadGridData();\n            refreshGrid();\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read){\n            return false\n        }\n\n        return true\n    }\n\n    function captureColorChoiceAndTotalsGrid(s) {\n        colorsChoiceAndTotalsGrid = s;\n        refreshGrid();\n    }\n\n    function selectColor(colVar) {\n        var articleVariant = _.find(vm.selectedArticle.articleVariants, function(articleVariant) {\n            return articleVariant.variantDetail1.variantDetailName === colVar.colorName;\n        });\n        vm.onColorSelected({colorVariant: articleVariant.variantDetail1});\n    }\n\n    function refreshGrid() {\n        if (colorsChoiceAndTotalsGrid.invalidate) {\n            colorsChoiceAndTotalsGrid.invalidate();\n        }\n        if (colorsChoiceAndTotalsGrid.collectionView !== undefined && colorsChoiceAndTotalsGrid.collectionView.refresh) {\n            colorsChoiceAndTotalsGrid.collectionView.refresh();\n        }\n    }\n\n    function getColorVariants(article) {\n        var colorVariants = [];\n        _.forEach(article.articleVariants, function(articleVariant) {\n            if (!_.find(colorVariants, {id: articleVariant.variantDetail1.id})) {\n                colorVariants.push(articleVariant.variantDetail1);\n            }\n        });\n        return _.sortBy(colorVariants, 'sortOrder');\n    }\n\n    function getSizeVariants(article) {\n        var sizeVariants = [];\n        _.forEach(article.articleVariants, function(articleVariant) {\n            if (!_.find(sizeVariants, {id: articleVariant.variantDetail2.id})) {\n                sizeVariants.push(articleVariant.variantDetail2);\n            }\n        });\n        return _.sortBy(sizeVariants, 'sortOrder');\n    }\n\n    function loadGridData() {\n        vm.colorsAndTotalsRows.length = 0;\n        var colorVariants = getColorVariants(vm.selectedArticle);\n\n        var orderRows = [];\n        _.forEach(vm.purchaseOrder.orders, function(order) {\n            _.forEach(order.orderArticles, function(orderArticle) {\n                if (orderArticle.article.id === vm.selectedArticle.id) {\n                    _.forEach(orderArticle.orderRows, function(orderRow) {\n                        orderRows.push(orderRow);\n                    });\n                }\n            });\n        });\n\n        _.forEach(colorVariants, function(colorVariant) {\n            var row = {};\n\n            row['colorName'] = colorVariant.variantDetailName; // Display name\n            row['totalQuantity'] = 0;\n            row['totalCostPrice'] = 0;\n            row['totalSalesPrice'] = 0;\n            row['colorVariant'] = colorVariant;\n\n            _.forEach(orderRows, function(orderRow) {\n                if (colorVariant.id === orderRow.articleVariant.variantDetail1.id) {\n                    row['totalQuantity'] += orderRow.quantity;\n                    row['totalCostPrice'] += orderRow.quantity * orderRow.purchaseCost;\n                    row['totalSalesPrice'] += orderRow.quantity * orderRow.articleVariant.salesPrice;\n                }\n            });\n\n            vm.colorsAndTotalsRows.push(row);\n        });\n    }\n\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order.purchaseordernew', {\n        url: '/purchaseorder/new',\n        templateUrl: 'main/order/purchaseorder/purchaseorder.tpl.html',\n        controller: 'PurchaseOrderController as vm',\n        resolve: {\n            companies: companiesResolver,\n            locations: locationsResolver,\n            collections: collectionsResolver,\n            isNewPurchaseOrder: function() {return true;},\n            purchaseOrder: function() {return {};}\n        }\n    });\n\n    $stateProvider.state('order.purchaseorder', {\n        url: '/purchaseorder/{purchaseOrderId}',\n        templateUrl: 'main/order/purchaseorder/purchaseorder.tpl.html',\n        controller: 'PurchaseOrderController as vm',\n        resolve: {\n            companies: companiesResolver,\n            locations: locationsResolver,\n            collections: collectionsResolver,\n            isNewPurchaseOrder: function() {return false;},\n            purchaseOrder: purchaseOrderResolver\n        }\n    });\n}\n\nfunction companiesResolver(CompaniesApiService) {\n    return CompaniesApiService.getAll();\n}\n\n// @ngInject\nfunction locationsResolver(LocationsApiService) {\n    return LocationsApiService.listAll();\n}\n\n// @ngInject\nfunction collectionsResolver(OrdersApiService) {\n    return OrdersApiService.getOrderCollections();\n}\n\n// @ngInject\nfunction purchaseOrderResolver(OrdersApiService, $stateParams) {\n    return OrdersApiService.getPurchaseOrder($stateParams.purchaseOrderId);\n}\n\n// @ngInject\nfunction PurchaseOrderController($q, $state, $scope, companies, locations, isNewPurchaseOrder, collections, purchaseOrder,\n    ProductsApiService, OrdersApiService, loadSpinnerService, ToasterService) {\n\n    var vm = this;\n\n    vm.isNewPurchaseOrder = isNewPurchaseOrder;\n    vm.collections = collections;\n    vm.companies = companies;\n    vm.locations = locations;\n    vm.article = {}; // The currently selected article to chose quantities for\n    vm.selectedColorVariant = {}; // The color variant of the currently selected article to be displayed\n    vm.orderChangeCount = 0;\n    vm.selectArticles = selectArticles;\n    vm.purchaseOrderChanged = purchaseOrderChanged;\n    vm.articleIds = [];\n\n    vm.save = save;\n\n    vm.selectArticle = selectArticle;\n    vm.selectColor = selectColor;\n    vm.recieveArticles = recieveArticles;\n\n    activate();\n\n    function activate() {\n        if (!isNewPurchaseOrder) {\n            vm.purchaseOrder = purchaseOrder;\n            vm.company = vm.purchaseOrder.company;\n        } else {\n            vm.purchaseOrder = generateEmptyPurchaseOrder();\n        }\n\n        if (!isNewPurchaseOrder) {\n            initializeOrderEditing();\n        }\n\n        $scope.$watch(function() { return vm.purchaseOrder.articleCollection.id; }, function() {\n            _.forEach(vm.purchaseOrder.orders, function(order) { order.collection = vm.purchaseOrder.articleCollection; });\n        });\n\n        $scope.$watch(function() { return vm.purchaseOrder.plannedDeliveryDate; }, function() {\n            _.forEach(vm.purchaseOrder.orders, function(order) { order.plannedDeliveryDate = vm.purchaseOrder.plannedDeliveryDate; });\n        });\n    }\n\n    function selectArticles(orderArticles) {\n        return function() {\n            return orderArticles.map(function(oa) {\n                return { id: oa.articleId };\n            });\n        };\n    }\n\n    // General setup\n    function initializeOrderEditing() {\n        // Setting the purchaseOrder's collection for easier access.\n        vm.purchaseOrder.articleCollection = vm.purchaseOrder.orders[0].collection;\n    }\n\n    // Save the current purchaseOrder\n    function save() {\n        var isNewPurchaseOrder = vm.purchaseOrder.id === 0;\n\n        var minimizedPurchaseOrder = removeUnnecessaryPurchaseOrderData(vm.purchaseOrder);\n\n        if (!isNewPurchaseOrder) {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.updatePurchaseOrder(minimizedPurchaseOrder).then(function(response) {\n            }, function(error) {\n                console.log(error);\n            }).finally(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n\n        } else { // Create purchase order.\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.createPurchaseOrder(minimizedPurchaseOrder).then(function(response) {\n                $state.go('order.purchaseorder', {purchaseOrderId: response.data.id});\n            }, function(error) {\n                console.log(error);\n            }).finally(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n\n    }\n\n    function removeUnnecessaryPurchaseOrderData(purchaseOrder) \n    {\n        var newPurchaseOrder = {\n            id: purchaseOrder.id,\n            orderNumber: purchaseOrder.orderNumber,\n            orderNumberExternal: purchaseOrder.orderNumberExternal,\n            plannedDeliveryDate: purchaseOrder.plannedDeliveryDate,\n            goesThroughStorageLocation: purchaseOrder.goesThroughStorageLocation,\n            storageLocation: { id: purchaseOrder.storageLocation.id },\n            articleCollection: { id: purchaseOrder.articleCollection.id },\n            orderChange: purchaseOrder.orderChange,\n            orderChangeDate: purchaseOrder.orderChangeDate,\n            company: { id: purchaseOrder.company.id },\n            orderStatus: purchaseOrder.orderStatus,\n            orders: []\n        };\n\n        _.forEach(purchaseOrder.orders, function(o) {\n            var newOrder = {\n                id: o.id,\n                orderNumber: o.orderNumber,\n                orderNumberExternal: o.orderNumberExternal,\n                plannedDeliveryDate: o.plannedDeliveryDate,\n                collection: { id: o.collection.id },\n                destination: { id: o.destination.id },\n                orderArticles: []\n            };\n\n            _.forEach(o.orderArticles, function(oa) {\n                var newOrderArticle = { \n                    id: oa.id,\n                    article: { id: oa.article.id },\n                    orderRows: []\n                };\n                _.forEach(oa.orderRows, function(ordRow) {\n                    if(ordRow.quantity !== 0 && ordRow.id === 0) {\n                        newOrderArticle.orderRows.push({\n                            id: ordRow.id,\n                            orderStatus: ordRow.orderStatus,\n                            articleVariant: { \n                                id: ordRow.articleVariant.id,\n                                barcode: ordRow.articleVariant.barcode\n                            },\n                            purchaseCost: ordRow.purchaseCost,\n                            quantity: ordRow.quantity\n                        });\n                    }\n                });\n                if (newOrderArticle.orderRows.length !== 0) {\n                    newOrder.orderArticles.push(newOrderArticle);\n                }\n            });\n\n            if (newOrder.orderArticles.length !== 0) {\n                newPurchaseOrder.orders.push(newOrder);\n            }\n        });\n\n        newPurchaseOrder.articleCollection = {id: purchaseOrder.articleCollection.id };\n        newPurchaseOrder.company = { id: purchaseOrder.company.id };\n\n        return newPurchaseOrder;\n    }\n\n    // Change the currently selected article\n    function selectArticle(article) {\n        vm.article = article;\n    }\n\n    // Change the currently selected color\n    function selectColor(colorVariant) {\n        vm.selectedColorVariant = colorVariant;\n    }\n\n    function recieveArticles(articles) {\n        var promises = [];\n        loadSpinnerService.start(\"mainSpinner\");\n        _.forEach(articles, function(article) {\n            var articleFetchPromise = ProductsApiService.getProduct(article.id);\n            promises.push(articleFetchPromise);\n        });\n\n        $q.all(promises).then(function(responses) {\n            _.forEach(vm.purchaseOrder.orders, function(order) {\n                _.forEach(responses, function(article) {\n                    order.orderArticles.push({\n                        id: 0,\n                        article: article\n                    });\n                });\n            });\n\n            vm.orderChangeCount += 1;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n    // Builds an empty purchase order to use as a base when starting to edit.\n    function generateEmptyPurchaseOrder() {\n        var purchaseOrder = {\n            id: 0,\n            orderNumber: 0,\n            orderNumberExternal: 0,\n            article: {},\n            orderStatus: {},\n            orders: [],\n            plannedDeliveryDate: new Date(),\n            goesThroughStorageLocation: false,\n            storageLocation: {},\n            articleCollection: {},\n            orderChange: false,\n            orderChangeDate: new Date(),\n            company: {}\n        };\n\n        _.forEach(vm.locations, function(location) {\n            var order = {\n                id: 0,\n                orderArticles: [],\n                destination: location\n            };\n\n            purchaseOrder.orders.push(order);\n        });\n        return purchaseOrder;\n    }\n\n    function purchaseOrderChanged(purchaseOrder) {\n        vm.purchaseOrder = purchaseOrder;\n        vm.orderChangeCount += 1;\n    }\n}\n\nangular\n    .module('order.purchaseorder', [])\n    .config(stateConfig)\n    .controller('PurchaseOrderController', PurchaseOrderController);\n","// @ngInject\nfunction PurchaseOrderAnalysisApiService($q, $window, $cookies, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'purchaseorderanalysis';\n\n    return {\n        getPurchaseOrderAnalysis: ResourcesService.apiFactory.get(endpoint),\n        getSupplierBriefs: ResourcesService.apiFactory.get(endpoint + '/supplierbriefs'),\n        getArticleCollectionBriefs: ResourcesService.apiFactory.get(endpoint + '/articlecollectionbriefs'),\n        getMainGroupBriefs: ResourcesService.apiFactory.get(endpoint + '/maingroupbriefs')\n    };\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('purchaseorderanalysis.api', [])\n    .factory('PurchaseOrderAnalysisApiService', PurchaseOrderAnalysisApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order.purchaseorderanalysis',{\n        url: '/purchaseorderanalysis?{s}&{page}&{limit}&{a}&{i}&{ac}',\n        templateUrl: 'main/order/purchaseorderanalysis/purchaseorderanalysis.tpl.html',\n        controller: 'PurchaseOrderAnalysisController as vm',\n        resolve: {\n            suppliers: companyResolver,\n            mainGroups: mainGroupResolver,\n            articleCollections: articleCollectionResolver\n        }\n    });\n}\n\n/*\ns: supplier id\nlimit: number of results per page\na: article collection id\ni: include inactive articles (0 = false, 1 = true)\npage: current page\nac: show all collections\n*/\n\n// @ngInject\nfunction companyResolver(PurchaseOrderAnalysisApiService) {\n    return PurchaseOrderAnalysisApiService.getSupplierBriefs();\n}\n\n// @ngInject\nfunction mainGroupResolver(PurchaseOrderAnalysisApiService) {\n    return PurchaseOrderAnalysisApiService.getMainGroupBriefs();\n}\n\n// @ngInject\nfunction articleCollectionResolver(PurchaseOrderAnalysisApiService) {\n    return PurchaseOrderAnalysisApiService.getArticleCollectionBriefs();\n}\n\n// @ngInject\nfunction PurchaseOrderAnalysisController($scope, $state, $stateParams, $translate,\n    suppliers, mainGroups, articleCollections, PurchaseOrderAnalysisApiService, confirmationDialogService, purchaseOrderAnalysisFilterDialogService,\n    loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    //Properties\n    vm.purchaseOrderAnalysisArticles = [];\n    vm.purchaseOrderAnalysisArticlesLength = 0;\n    vm.completeListOfPurchageAnalysisRows = [];\n    vm.showWeeks = false;\n    vm.showProduct = false;\n    vm.suppliers = suppliers;\n    vm.allMainGroups = mainGroups;\n    vm.mainGroups = [];\n    vm.articleCollections = articleCollections;\n    vm.weekLimit = [24, 20, 16, 12, 8, 4];\n    vm.selectedWeekLimit = undefined;\n    vm.keepProductTogether = true;\n    vm.numberOfResultsPerPage = [50, 100, 200, 300, 400, 500];\n    vm.selectedMainGroup = {};\n\n    //Pick show all article collections from state params if possible\n    vm.showAllCollections = $stateParams.ac !== undefined && $stateParams.ac === '1' ? true : false;\n    //Pick include inactive articles from state params if possible\n    vm.includeInactive = $stateParams.i !== undefined && $stateParams.i === '1' ? true : false;\n    //Pick selected supplier from state params if possible\n    vm.selectedSupplier = $stateParams.s !== undefined && $stateParams.s > 0 ? _.find(vm.suppliers, function(s) { return '' + s.id === $stateParams.s; }) : {};\n    //Pick selected article collection from state params if possible\n    vm.selectedArticleCollection = $stateParams.a !== undefined && $stateParams.a > 0 ? _.find(vm.articleCollections, function(a) { return '' + a.id === $stateParams.a; }) : _.find(vm.articleCollections, {'isCurrent': true});\n    //Pick current page from state params if possible\n    vm.currentPage = $stateParams.page !== undefined && $stateParams.page > 0 ? parseInt($stateParams.page) : 1;\n    //Pick selected number of results from state params if possible\n    vm.selectedNumberOfResultsPerPage = $stateParams.limit !== undefined && $stateParams.limit > 0 ? parseInt($stateParams.limit) : 300;\n\n    //Methods\n    vm.toggleShowProduct = toggleShowProduct;\n    vm.canCreateOrder = canCreateOrder;\n    vm.createOrder = createOrder;\n    vm.calculateMonth = calculateMonth;\n    vm.toggleArticleRows = toggleArticleRows;\n    vm.sumRowsWeek = sumRowsWeek;\n    vm.sumRowsMonth = sumRowsMonth;\n    vm.sumQuantityToOrder = sumQuantityToOrder;\n    vm.sumTotalQuantityToOrder = sumTotalQuantityToOrder;\n    vm.sumWarehouseStock = sumWarehouseStock;\n    vm.sumStoreStock = sumStoreStock;\n    vm.sumOrderedQuantity = sumOrderedQuantity;\n    vm.sumWeeksLeftInStock = sumWeeksLeftInStock;\n    vm.sumMonthsLeftInStock = sumMonthsLeftInStock;\n    vm.sumRowWeeksLeftInStock = sumRowWeeksLeftInStock;\n    vm.sumRowMonthsLeftInStock = sumRowMonthsLeftInStock;\n    vm.weeksLeftInStockAfterOrder = weeksLeftInStockAfterOrder;\n    vm.monthsLeftInStockAfterOrder = monthsLeftInStockAfterOrder;\n    vm.clearFilter = clearFilter;\n    vm.filterAnalysisRows = filterAnalysisRows;\n    vm.averageSalesPerMonth = averageSalesPerMonth;\n    vm.averageSalesPerWeek = averageSalesPerWeek;\n    vm.showChangedWeekAverage = showChangedWeekAverage;\n    vm.showChangedMonthAverage = showChangedMonthAverage;\n    vm.showFilterDialog = showFilterDialog;\n    vm.goToFirst = goToFirst;\n    vm.goToPrevious = goToPrevious;\n    vm.goToNext = goToNext;\n    vm.goToLast = goToLast;\n    vm.getPageNumber = getPageNumber;\n\n    activate();\n\n    function activate() {\n        if ($stateParams.s && $stateParams.s > 0) {\n            loadPurchaseOrderAnalysis();\n        } else {\n            showFilterDialog();\n        }\n    }\n\n    function getPageNumber(rel) {\n        if (vm.links && vm.links.length > 0) {\n            var pageNumber = _.find(vm.links, function(o) {\n                return o.rel === rel;\n            });\n            return pageNumber.page;\n        } else {\n            return '';\n        }\n    }\n    function goToFirst() {\n        // 1: {href: \"order/purchaseorderanalysis?limit=300&page=1&s=15&a=43&i=0&ac=0\", rel: \"first\", type: \"GET\"}\n        var first = _.find(vm.links, function(o) {\n            return o.rel === 'first';\n        });\n\n        $state.go('order.purchaseorderanalysis', {\n            s: vm.selectedSupplier.id,\n            limit: first.limit,\n            a: vm.selectedArticleCollection.id,\n            page: first.page,\n            i: vm.includeInactive ? '1': '0',\n            ac: vm.showAllCollections ? '1': '0'\n        });\n    }\n    function goToPrevious() {\n        // 1: {href: \"order/purchaseorderanalysis?limit=300&page=1&s=15&a=43&i=0&ac=0\", rel: \"previous\", type: \"GET\"}\n        var previous = _.find(vm.links, function(o) {\n            return o.rel === 'previous';\n        });\n\n        $state.go('order.purchaseorderanalysis', {\n            s: vm.selectedSupplier.id,\n            limit: previous.limit,\n            a: vm.selectedArticleCollection.id,\n            page: previous.page,\n            i: vm.includeInactive ? '1': '0',\n            ac: vm.showAllCollections ? '1': '0'\n        });\n    }\n    function goToNext() {\n        // 3: {href: \"order/purchaseorderanalysis?limit=300&page=2&s=15&a=43&i=0&ac=0\", rel: \"next\", type: \"GET\"}\n        var next = _.find(vm.links, function(o) {\n            return o.rel === 'next';\n        });\n\n        $state.go('order.purchaseorderanalysis', {\n            s: vm.selectedSupplier.id,\n            limit: next.limit,\n            a: vm.selectedArticleCollection.id,\n            page: next.page,\n            i: vm.includeInactive ? '1': '0',\n            ac: vm.showAllCollections ? '1': '0'\n        });\n    }\n    function goToLast() {\n        // 4: {href: \"order/purchaseorderanalysis?limit=300&page=6&s=15&a=43&i=0&ac=0\", rel: \"last\", type: \"GET\"\n        var last = _.find(vm.links, function(o) {\n            return o.rel === 'last';\n        });\n\n        $state.go('order.purchaseorderanalysis', {\n            s: vm.selectedSupplier.id,\n            limit: last.limit,\n            a: vm.selectedArticleCollection.id,\n            page: last.page,\n            i: vm.includeInactive ? '1': '0',\n            ac: vm.showAllCollections ? '1': '0'\n        });\n    }\n\n    function showFilterDialog() {\n        purchaseOrderAnalysisFilterDialogService\n            .showDialog(\n                vm.selectedSupplier,\n                vm.suppliers,\n                vm.selectedNumberOfResultsPerPage,\n                vm.numberOfResultsPerPage,\n                vm.selectedArticleCollection,\n                vm.articleCollections,\n                vm.showAllCollections,\n                vm.selectedMainGroup,\n                vm.mainGroups,\n                vm.selectedWeekLimit,\n                vm.weekLimit,\n                vm.keepProductTogether,\n                vm.showWeeks,\n                vm.showProduct,\n                vm.includeInactive\n            )\n            .then(function(response) {\n                if (response.confirmation) {\n                    var reloadArticles = false;\n\n                    if (response.selectedSupplier && response.selectedSupplier.id !== vm.selectedSupplier.id) {\n                        reloadArticles = true;\n                    }\n\n                    if (response.selectedArticleCollection && (!vm.selectedArticleCollection || response.selectedArticleCollection.id !== vm.selectedArticleCollection.id)) {\n                        vm.selectedArticleCollection = response.selectedArticleCollection;\n                        reloadArticles = true;\n                    }\n                    if (response.includeInactive !== vm.includeInactive) {\n                        vm.includeInactive = response.includeInactive;\n                        reloadArticles = true;\n                    }\n                    if (response.selectedNumberOfResultsPerPage && (!vm.selectedNumberOfResultsPerPage || response.selectedNumberOfResultsPerPage !== vm.selectedNumberOfResultsPerPage)) {\n                        vm.selectedNumberOfResultsPerPage = response.selectedNumberOfResultsPerPage;\n                        reloadArticles = true;\n                    }\n                    if (response.showAllCollections !== vm.showAllCollections) {\n                        vm.showAllCollections = response.showAllCollections;\n                        reloadArticles = true;\n                    }\n\n                    if (reloadArticles) {\n                        $state.go('order.purchaseorderanalysis', {\n                            s: response.selectedSupplier.id,\n                            limit: vm.selectedNumberOfResultsPerPage,\n                            a: vm.selectedArticleCollection.id,\n                            page: vm.currentPage,\n                            i: vm.includeInactive ? '1': '0',\n                            ac: vm.showAllCollections ? '1': '0'\n                        });\n                    }\n\n                    var refilterArticles = false;\n                    if (response.selectedMainGroup && (!vm.selectedMainGroup || response.selectedMainGroup.id !== vm.selectedMainGroup.id)) {\n                        vm.selectedMainGroup = response.selectedMainGroup;\n                        refilterArticles = true;\n                    }\n                    if (response.selectedWeekLimit !== vm.selectedWeekLimit) {\n                        vm.selectedWeekLimit = response.selectedWeekLimit;\n                        refilterArticles = true;\n                    }\n                    if (response.keepProductTogether !== vm.keepProductTogether) {\n                        vm.keepProductTogether = response.keepProductTogether;\n                        refilterArticles = true;\n                    }\n                    if (refilterArticles) {\n                        filterAnalysisRows();\n                    }\n\n                    if (response.showWeeks !== vm.showWeeks) {\n                        vm.showWeeks = response.showWeeks;\n                    }\n                    if (response.showProduct !== vm.showProduct) {\n                        vm.showProduct = response.showProduct;\n                        toggleShowProduct();\n                    }\n                }\n            });\n    }\n\n    function loadPurchaseOrderAnalysis() {\n        loadSpinnerService.start('mainSpinner');\n        var request = {\n            articleCollectionId: vm.selectedArticleCollection.id,\n            includeInactive: vm.includeInactive,\n            includeAllArticleCollections: vm.showAllCollections,\n            limit: vm.selectedNumberOfResultsPerPage,\n            page: vm.currentPage,\n            supplierId: vm.selectedSupplier.id\n        };\n        PurchaseOrderAnalysisApiService.getPurchaseOrderAnalysis(request).then(function(response) {\n            vm.completeListOfPurchageAnalysisRows = response !== null && response.data !== null && response.data.results !== null ? response.data.results : [];\n            vm.currentPage = response.data.page;\n            vm.links = response !== null && response.links !== null ? response.links : [];\n\n            _.forEach(vm.completeListOfPurchageAnalysisRows, function(article) {\n                //Add default value for quantity to order\n                _.forEach(article.articleVariants, function (row) {\n                    row.quantityToOrder = 0;\n                });\n                //Make a copy of all article variants to use while filtering\n                article.completeListOfArticleVariants = article.articleVariants;\n            });\n            //Make sure no article variant rows are show at default\n            _.forEach(vm.completeListOfPurchageAnalysisRows, function(article) {\n                article.showRows = false;\n                if (vm.showProduct === false) {\n                    article.showRows = true;\n                }\n                _.forEach(article.articleVariants, function (row) {\n                    row.showRow = true;\n                });\n            });\n            filterAnalysisRows();\n        }, function (error) {\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function filterAnalysisRows() {\n        loadSpinnerService.start('mainSpinner');\n\n        vm.purchaseOrderAnalysisArticles = vm.completeListOfPurchageAnalysisRows;\n\n        //First filter by selected main group\n        if (vm.selectedMainGroup && vm.selectedMainGroup.id > 0) {\n            vm.purchaseOrderAnalysisArticles = _.filter(vm.purchaseOrderAnalysisArticles, function(article) {\n                return article.mainGroupId === vm.selectedMainGroup.id;\n            });\n        }\n\n        //Second filter by articles' stock value, taking in account if all article variants are below threshold\n        if (vm.selectedWeekLimit) {\n            if (vm.keepProductTogether === true) {\n                vm.purchaseOrderAnalysisArticles = _.filter(vm.purchaseOrderAnalysisArticles, function(article) {\n                    return !_.every(article.articleVariants, function (row) {\n                        return row.weeksLeftInStock > vm.selectedWeekLimit;\n                    });\n                });\n            } else {\n                vm.purchaseOrderAnalysisArticles = _.filter(vm.purchaseOrderAnalysisArticles, function(article) {\n                    return _.every(article.articleVariants, function (row) {\n                        return row.weeksLeftInStock < vm.selectedWeekLimit;\n                    });\n                });\n            }\n        }\n\n        vm.purchaseOrderAnalysisArticlesLength = Object.keys(vm.purchaseOrderAnalysisArticles).length;\n\n        //Filter list of maingroups depending on which are shown, to prevent choosing a group that is not shown\n        vm.mainGroups = _.filter(vm.allMainGroups, function(mg) {\n            var index = _.findIndex(vm.completeListOfPurchageAnalysisRows, function(article) {\n                return article.mainGroupId === mg.id;\n            });\n            return index > -1;\n        });\n        vm.mainGroups.unshift({\n            id: -1,\n            mainGroupCode: ' ',\n            mainGroupDescription: ' '\n        });\n\n        loadSpinnerService.stop('mainSpinner');\n    }\n\n    function createOrder() {\n        var listOfArticles = angular.copy(vm.completeListOfPurchageAnalysisRows);\n        listOfArticles = _.filter(listOfArticles, function(article) {\n            var sum = 0;\n            sum = _.sumBy(article.articleVariants, function(row) {\n                return row.quantityToOrder;\n            });\n            return sum > 0;\n        });\n\n        var message = $translate.instant('purchaseorderanalysis.confirmCreateOrder') + '<br><br>';\n        message += '<table style=\"width:100%\">' +\n            '<thead>' +\n            '<th colspan=\"2\">' + $translate.instant('article.article') + '</th>' +\n            '<th>' + $translate.instant('article.variantdetail1') + '</th>' +\n            '<th>' + $translate.instant('article.variantdetail2') + '</th>' +\n            '<th>' + $translate.instant('common.quantity') + '</th>' +\n            '</thead>';\n        _.forEach(listOfArticles, function(article) {\n            message += '<tr>' +\n                '<td>' + article.productNumber + '</td>' +\n                '<td>' + article.productName + '</td>' +\n                '<td colspan=\"3\">&nbsp;</td>' +\n                '</tr>';\n            _.forEach(article.completeListOfArticleVariants, function(articleVariant) {\n                if (articleVariant.quantityToOrder && articleVariant.quantityToOrder > 0) {\n                    message += '<tr>' +\n                        '<td>&nbsp;</td>' +\n                        '<td>&nbsp;</td>' +\n                        '<td>' + articleVariant.variantDetail1 + '</td>' +\n                        '<td>' + articleVariant.variantDetail2 + '</td>' +\n                        '<td>' + articleVariant.quantityToOrder + '</td>' +\n                        '</tr>';\n                }\n            });\n        });\n        message += '</table>';\n        confirmationDialogService.showDialog(message).then(function (result) {\n            if (result === true) {\n                $state.go('order.new', {\n                    orderSystemType: 'store',\n                    supplierId: vm.selectedSupplier.id,\n                    articles: listOfArticles\n                });\n            }\n        });\n    }\n\n    function toggleShowProduct() {\n        _.forEach(vm.purchaseOrderAnalysisArticles, function(article) {\n            article.showRows = !vm.showProduct;\n        });\n    }\n    function toggleArticleRows(article) {\n        if (!article.showRows) { article.showRows = false; }\n        article.showRows = !article.showRows;\n    }\n\n    function weeksLeftInStockAfterOrder(row) {\n        var averageSales = averageSalesPerWeek(row);\n        if (averageSales <= 0) { return 0; }\n        var weeksLeft = (row.currentWarehouseStockQuantity + row.orderedQuantity + row.quantityToOrder) / averageSales;\n        return weeksLeft;\n    }\n\n    function monthsLeftInStockAfterOrder(row) {\n        var averageSales = averageSalesPerMonth(row);\n        if (averageSales === 0) { return 0; }\n        var monthsLeft = (row.currentWarehouseStockQuantity + row.orderedQuantity + row.quantityToOrder) / averageSales;\n        return monthsLeft;\n    }\n\n    function averageSalesPerWeek(row) {\n        var averageSales =  (row.week1 + row.week2 + row.week3 + row.week4 +\n                            row.week5 + row.week6 + row.week7 + row.week8 +\n                            row.week9 + row.week10 + row.week11 + row.week12) / 12;\n        return averageSales;\n    }\n\n    function averageSalesPerMonth(row) {\n        var averageSales = averageSalesPerWeek(row) * 4;\n        return averageSales;\n    }\n\n    function sumRowsWeek(article, weekNo) {\n        var sum = 0;\n        switch (weekNo) {\n            case 1: sum = _.sumBy(article.articleVariants, function(o) { return o.week1; }); break;\n            case 2: sum = _.sumBy(article.articleVariants, function(o) { return o.week2; }); break;\n            case 3: sum = _.sumBy(article.articleVariants, function(o) { return o.week3; }); break;\n            case 4: sum = _.sumBy(article.articleVariants, function(o) { return o.week4; }); break;\n            case 5: sum = _.sumBy(article.articleVariants, function(o) { return o.week5; }); break;\n            case 6: sum = _.sumBy(article.articleVariants, function(o) { return o.week6; }); break;\n            case 7: sum = _.sumBy(article.articleVariants, function(o) { return o.week7; }); break;\n            case 8: sum = _.sumBy(article.articleVariants, function(o) { return o.week8; }); break;\n            case 9: sum = _.sumBy(article.articleVariants, function(o) { return o.week9; }); break;\n            case 10: sum = _.sumBy(article.articleVariants, function(o) { return o.week10; }); break;\n            case 11: sum = _.sumBy(article.articleVariants, function(o) { return o.week11; }); break;\n            case 12: sum = _.sumBy(article.articleVariants, function(o) { return o.week12; }); break;\n            default:\n                sum = 0;\n        }\n        return sum;\n    }\n    function sumRowsMonth(article, monthNo) {\n        var sum = 0;\n        switch (monthNo) {\n            case 1: sum = _.sumBy(article.articleVariants, function(row) { return calculateMonth(1, row); }); break;\n            case 2: sum = _.sumBy(article.articleVariants, function(row) { return calculateMonth(2, row); }); break;\n            case 3: sum = _.sumBy(article.articleVariants, function(row) { return calculateMonth(3, row); }); break;\n            default:\n                sum = 0;\n        }\n        return sum;\n    }\n    function sumQuantityToOrder(article) {\n        var sum = _.sumBy(article.articleVariants, function(row) {\n            return row.quantityToOrder;\n        });\n        return sum;\n    }\n    function sumTotalQuantityToOrder() {\n        var sum = 0;\n        _.forEach(vm.completeListOfPurchageAnalysisRows, function(article) {\n            sum += _.sumBy(article.completeListOfArticleVariants, function(row) {\n                return row.quantityToOrder;\n            });\n        });\n        return sum;\n    }\n    function sumWarehouseStock(article) {\n        var sum = _.sumBy(article.articleVariants, function(row) {\n            return row.currentWarehouseStockQuantity;\n        });\n        return sum;\n    }\n    function sumStoreStock(article) {\n        var sum = _.sumBy(article.articleVariants, function(row) {\n            return row.currentStoreStockQuantity;\n        });\n        return sum;\n    }\n    function sumOrderedQuantity(article) {\n        var sum = _.sumBy(article.articleVariants, function(row) {\n            return row.orderedQuantity;\n        });\n        return sum;\n    }\n    function sumWeeksLeftInStock(article) {\n        var sum = _.sumBy(article.articleVariants, function(row) {\n            return row.weeksLeftInStock;\n        });\n        return sum;\n    }\n    function sumMonthsLeftInStock(article) {\n        //Generalize month to four weeks\n        var sum = 0;\n        _.forEach(article.articleVariants, function(row) {\n            sum += row.weeksLeftInStock / 4;\n        });\n        return sum;\n    }\n\n    function sumRowWeeksLeftInStock(row) {\n        var sum = row.weeksLeftInStock;\n        return sum;\n    }\n    function sumRowMonthsLeftInStock(row) {\n        var sum = row.weeksLeftInStock / (4); //Month is generalized to four weeks\n        return sum;\n    }\n\n    function showChangedWeekAverage(row) {\n        var weeksLeftInStockAfterOrder = (vm.weeksLeftInStockAfterOrder(row)).toFixed(2);\n        var sumRowWeeksLeftInStock = (vm.sumRowWeeksLeftInStock(row)).toFixed(2);\n\n        return weeksLeftInStockAfterOrder > sumRowWeeksLeftInStock;\n    }\n\n    function showChangedMonthAverage(row) {\n        var monthsLeftInStockAfterOrder = (vm.monthsLeftInStockAfterOrder(row)).toFixed(2);\n        var sumRowMonthsLeftInStock = (vm.sumRowMonthsLeftInStock(row)).toFixed(2);\n\n        return monthsLeftInStockAfterOrder > sumRowMonthsLeftInStock;\n    }\n\n    function canCreateOrder() {\n        var sum = 0;\n        _.forEach(vm.purchaseOrderAnalysisArticles, function(article) {\n            sum += _.sumBy(article.articleVariants, function(row) {\n                return row.quantityToOrder;\n            });\n        });\n\n        return sum > 0;\n    }\n\n    function calculateMonth(monthNo, row) {\n        switch (monthNo) {\n            case 1:\n                return row.week1 + row.week2 + row.week3 + row.week4;\n            case 2:\n                return row.week5 + row.week6 + row.week7 + row.week8;\n            case 3:\n                return row.week9 + row.week10 + row.week11 + row.week12;\n        }\n    }\n\n    function clearFilter() {\n        vm.selectedNumberOfResultsPerPage = 300;\n        vm.includeInactive = false;\n        vm.selectedArticleCollection = _.find(vm.articleCollections, { 'isCurrent': true });\n        vm.selectedMainGroup = undefined;\n        vm.selectedWeekLimit = undefined;\n        filterAnalysisRows();\n    }\n}\n\nangular\n    .module('order.purchaseorderanalysis', [])\n    .config(stateConfig)\n    .controller('PurchaseOrderAnalysisController', PurchaseOrderAnalysisController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order.purchaseordersearch', {\n        url: '/purchaseordersearch',\n        templateUrl: 'main/order/purchaseordersearch/purchaseordersearch.tpl.html',\n        controller: 'PurchaseOrderSearchController as vm'\n    });\n}\n\n// @ngInject\nfunction PurchaseOrderSearchController($state, $window, $scope, OrdersApiService, loadSpinnerService, ResourcesService) {\n    var vm = this;\n\n    vm.searchTerm = \"\";\n    vm.currentPage = 1;\n    vm.itemsPerPage = 15;\n    vm.totalItems = 0;\n\n    vm.purchaseOrders = [];\n\n    vm.transitionToState = transitionToState;\n\n    vm.onlyOrderChangeOrders = true;\n    vm.onlyUndelivered = false;\n\n    activate();\n\n    function activate() {\n        console.log(\"Activating\");\n        OrdersApiService.getPurchaseOrders(vm.currentPage, vm.searchTerm, vm.itemsPerPage, vm.onlyUndelivered, vm.onlyOrderChangeOrders).then(function(response) {\n            vm.purchaseOrders = response.data.data;\n        }, function(error) {\n            console.log(error);\n        });\n    }\n\n    function transitionToState(purchaseOrderId) {\n        console.log(\"State.go\");\n        $state.go('order.purchaseorder', {purchaseOrderId: purchaseOrderId});\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n\n}\n\nangular\n    .module('order.purchaseordersearch', [])\n    .config(stateConfig)\n    .controller('PurchaseOrderSearchController', PurchaseOrderSearchController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order.intrastatReports', {\n        url: '/intrastatreports',\n        templateUrl: 'main/order/reports/intrastatReports.tpl.html',\n        controller: 'IntrastatReportsController as vm',\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction IntrastatReportsController($translate, Rms2ReportsApiService, ToasterService, loadSpinnerService) {\n    var vm = this;\n\n    //Variables\n    vm.fromDate = new Date();\n    vm.fromDate.setDate(vm.fromDate.getDate() - 1);\n    vm.toDate = new Date();\n\n    //Methods\n    vm.getIntrastatReport = getIntrastatReport;\n\n    function getIntrastatReport() {\n        var request = {\n            fromDate : vm.fromDate,\n            toDate : vm.toDate\n        }\n\n        loadSpinnerService.start(\"mainSpinner\");\n        Rms2ReportsApiService.getIntrastatReport(request).then(function(response) {\n            console.log(response.data);\n            ToasterService.showSuccess(\"SUCCESS\");\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n}\n\nangular.module('order.intrastatReports', [])\n    .config(stateConfig)\n    .controller('IntrastatReportsController', IntrastatReportsController);\n","// @ngInject\nfunction Rms2ReportsApiService($q, $window, $cookies, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'reporting';\n\n    return {\n        getIntrastatReport: getIntrastatReport,\n    };\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36012-36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s-_]){1,}.(pdf|csv|xls|xlsx)/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n    \n    function formatDate(date) {\n        if (!date) { return ''; }\n        return date.getFullYear() + '-' + zeroFill(date.getMonth() + 1, 2) + '-' + zeroFill(date.getDate(), 2);\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            return new Array(width + ((/\\./).test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n\n    function getIntrastatReport(request) {\n        var reportRequest = {\n            fromDeliveryDate: new Date(Date.UTC(request.fromDate.getFullYear(), request.fromDate.getMonth(), request.fromDate.getDate())),\n            toDeliveryDate: new Date(Date.UTC(request.toDate.getFullYear(), request.toDate.getMonth(), request.toDate.getDate(), 23, 59, 59, 0)),\n        }\n\n        var jsonData = JSON.stringify(reportRequest);\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + endpoint + '/intrastatReport', jsonData).then(function(response) {\n            var blob = new Blob([\"\\uFEFF\" + response.data.content], {type: 'data:text/csv;charset=utf-8'});\n            var fileName = response.data.fileName;\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('reports.api2', [])\n    .factory('Rms2ReportsApiService', Rms2ReportsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('order.transitReports', {\n        url: '/transitreports',\n        templateUrl: 'main/order/reports/transitReports.tpl.html',\n        controller: 'TransitReportsController as vm',\n        resolve: {\n            locations: locationsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction locationsResolver(OrdersApiService) {\n    return OrdersApiService.getLocations();\n}\n\n// @ngInject\nfunction TransitReportsController($translate, OrdersApiService, ToasterService, locations, loadSpinnerService) {\n    var vm = this;\n\n    //Properties\n    vm.reportParameters = {\n        comparisonDate: new Date(),\n        locationIds: []\n    };\n    vm.selectedLocations = [];\n    vm.selectedCompanies = [];\n    vm.printLanguage = 'se';\n    vm.locations = locations;\n    vm.selectedLocations = angular.copy(locations);\n\n    //Methods\n    vm.getTransitReport = getTransitReport;\n\n    function getTransitReport() {\n        vm.reportParameters.locationIds = [];\n        vm.selectedLocations.forEach(function(location) { vm.reportParameters.locationIds.push(location.id); });\n        vm.reportParameters.languageCode = vm.printLanguage;\n\n        loadSpinnerService.start(\"mainSpinner\");\n        OrdersApiService.downloadTransitReport(vm.reportParameters).then(function(response) {\n            if (response && response.status === 204) {\n                ToasterService.showWarning(\n                    $translate.instant('reports.ui.transit.comparisonDate') + ' ' +\n                        formatDate(vm.reportParameters.comparisonDate) + ' ' +\n                    $translate.instant('common.noResults'),\n                    $translate.instant('reports.ui.transit')\n                );\n            }\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n    function formatDate(date) {\n        if (!date) { return ''; }\n        return date.getFullYear() + '-' + zeroFill(date.getMonth() + 1, 2) + '-' + zeroFill(date.getDate(), 2);\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            return new Array(width + ((/\\./).test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n}\n\nangular.module('order.transitReports', [])\n    .config(stateConfig)\n    .controller('TransitReportsController', TransitReportsController);\n","// @ngInject\nfunction Rms2OrdersApiService($q, $window, $cookies, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'purchaseorder';\n\n    return {\n        getCountries: ResourcesService.apiRms2Factory.get('country/countries'),\n        deliverStoreOrder: deliverStoreOrder,\n        deliverAutoOrder: deliverAutoOrder,\n        getAll: getAll,\n        deliverInternalOrder: deliverInternalOrder,\n        deliverAutoInternalOrder: deliverAutoInternalOrder,\n        deliverReturnOrder: deliverReturnOrder,\n        updateCommentOnOrderRows: updateCommentOnOrderRows\n    };\n\n    function getAll(searchTerms) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (searchTerms.page && searchTerms.page < 0) {\n            searchTerms.page = 1;\n        }\n\n        if (searchTerms.limit && searchTerms.limit > 0) {\n            params.limit = searchTerms.limit;\n        }\n\n        if (!_.isEmpty(searchTerms.searchTerm)) {\n            params.searchTerm = searchTerms.searchTerm;\n        }\n\n        params.page = searchTerms.page;\n        params.orderTypes = searchTerms.orderTypes;\n        params.onlyUndelivered = searchTerms.showUndeliveredOnly;\n        params.onlyUnprinted = searchTerms.showUnprintedOnly;\n        params.onlyUnapproved = searchTerms.showUnapprovedOnly;\n        params.onlyOrderNumber = searchTerms.onlyOrderNumber;\n        params.monthBack = searchTerms.monthBack;\n\n        DSHttpAdapter.GET(DS.defaults.rms2Path + 'purchaseorder/search', { params: params }).then(function getAllOrders(response) {\n            deferred.resolve(response.data.data);\n        }, function getAllOrdersError(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deliverStoreOrder(request) {\n        var transactionId = crypto.randomUUID();\n        var deliveryRequest = {\n            orderId: request.orderId,\n            deliveringUserId: request.deliveringUserId,\n            lineItems: []\n        }\n        _.forEach(request.lineItems, function(lineItem) {\n            deliveryRequest.lineItems.push({\n                id: transactionId,\n                quantity: lineItem.quantity,\n                lineNumber: lineItem.lineNumber,\n                date: lineItem.date,\n                closeDelivery: !lineItem.restDelivery\n            });\n        });\n\n        var jsonData = JSON.stringify(deliveryRequest);\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + endpoint + '/deliverPurchaseOrder', jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deliverAutoOrder(request) {\n        var transactionId = crypto.randomUUID();\n        var deliveryRequest = {\n            orderId: request.orderId,\n            deliveringUserId: request.deliveringUserId,\n            lineItems: []\n        }\n        _.forEach(request.lineItems, function(lineItem) {\n            deliveryRequest.lineItems.push({\n                id: transactionId,\n                quantity: lineItem.quantity,\n                lineNumber: lineItem.lineNumber,\n                date: lineItem.date,\n                closeDelivery: !lineItem.restDelivery\n            });\n        });\n\n        var jsonData = JSON.stringify(deliveryRequest);\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + endpoint + '/deliverAutoOrder', jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deliverInternalOrder(request) {\n        var transactionId = crypto.randomUUID();\n        var deliveryRequest = {\n            orderId: request.orderId,\n            deliveringUserId: request.deliveringUserId,\n            lineItems: []\n        }\n        _.forEach(request.lineItems, function(lineItem) {\n            deliveryRequest.lineItems.push({\n                id: transactionId,\n                quantity: lineItem.quantity,\n                lineNumber: lineItem.lineNumber,\n                date: lineItem.date,\n                closeDelivery: !lineItem.restDelivery\n            });\n        });\n\n        var jsonData = JSON.stringify(deliveryRequest);\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + endpoint + '/deliverInternalOrder', jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deliverAutoInternalOrder(request) {\n        var transactionId = crypto.randomUUID();\n        var deliveryRequest = {\n            orderId: request.orderId,\n            deliveringUserId: request.deliveringUserId,\n            lineItems: []\n        }\n        _.forEach(request.lineItems, function(lineItem) {\n            deliveryRequest.lineItems.push({\n                id: transactionId,\n                quantity: lineItem.quantity,\n                lineNumber: lineItem.lineNumber,\n                date: lineItem.date,\n                closeDelivery: !lineItem.restDelivery\n            });\n        });\n\n        var jsonData = JSON.stringify(deliveryRequest);\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + endpoint + '/deliverAutoInternalOrder', jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deliverReturnOrder(request) {\n        var transactionId = crypto.randomUUID();\n        var deliveryRequest = {\n            orderId: request.orderId,\n            deliveringUserId: request.deliveringUserId,\n            lineItems: []\n        }\n        _.forEach(request.lineItems, function(lineItem) {\n            deliveryRequest.lineItems.push({\n                id: transactionId,\n                quantity: lineItem.quantity,\n                lineNumber: lineItem.lineNumber,\n                date: lineItem.date,\n                closeDelivery: !lineItem.restDelivery\n            });\n        });\n\n        var jsonData = JSON.stringify(deliveryRequest);\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + endpoint + '/deliverReturnOrder', jsonData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateCommentOnOrderRows(orderRows){\n        var deferred = $q.defer();\n\n        var request = {\n            comment: orderRows[0].comment,\n            orderRowIds: []\n        };\n\n        _.forEach(orderRows, function(row){\n            request.orderRowIds.push(row.id);\n        });\n\n        DSHttpAdapter.PUT(DS.defaults.rms2Path + endpoint + '/updateOrderRowComment', request).then(function(response){\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n        \n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('orders.api2', [])\n    .factory('Rms2OrdersApiService', Rms2OrdersApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.importfileslist.articleimport',{\n        url: '/articleimport',\n        views: {'wideColumnView@product': {\n            templateUrl: 'main/product/articleimport/articleimport.tpl.html',\n            controller: 'ArticleImportController as vm'\n        }},\n        resolve: {\n            companies: companiesResolver,\n            collections: collectionsResolver,\n            locations: locationsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction companiesResolver(FileDataImportApiService) {\n    return FileDataImportApiService.getSuppliers();\n}\n\n// @ngInject\nfunction collectionsResolver(FileDataImportApiService) {\n    return FileDataImportApiService.getArticleCollections();\n}\n\n// @ngInject\nfunction locationsResolver(FileDataImportApiService) {\n    return FileDataImportApiService.getLocations();\n}\n\n// @ngInject\nfunction ArticleImportController($state, $scope, $translate, companies, collections, locations, loadSpinnerService, FileDataImportApiService, ToasterService) {\n    var vm = this;\n\n    vm.companies = _.sortBy(companies, function(company) { return company.companyName; });\n    vm.collections = collections;\n    vm.locations = locations;\n\n    vm.JSonAdaptedSheetData = {};\n    vm.inDataColumnNames = [];\n\n    vm.articlesOrdersImportRequest = {\n        fileName: \"\",\n        company: \"\",\n        articlesOrdersImportRows: []\n    };\n\n    vm.selectedCollection = _.find(vm.collections, function(collection) {\n        return collection.isCurrent;\n    });\n    vm.plannedDeliveryDate = new Date();\n\n    vm.mapping = {\n        alternativeArticleNumber: \"\",\n        articleName: \"\",\n        articleDescription: \"\",\n        variant1Name: \"\",\n        variant2Name: \"\",\n        quantity: \"\",\n        purchaseCost: \"\",\n        previousPrice: \"\",\n        salesPrice: \"\",\n        itemGroupString: \"\",\n        subCategory: \"\",\n        articleTypeString: \"\",\n        barcode: \"\",\n        plannedDeliveryDate: \"\",\n        orderNumberExternal: \"\",\n        intrastatCode: \"\",\n        departmentCode: \"\"\n    };\n\n    vm.articlesOrdersImport = {}; // The returned import data from backend.\n\n    vm.handleFile = handleFile;\n    vm.sendRequestData = sendRequestData;\n    vm.saveMapping = saveMapping;\n    vm.hasError = hasError;\n\n    var fileInputDomElement = $(\"#xlf\")[ 0 ];\n\n    activate();\n\n    function activate() {\n        fileInputDomElement.addEventListener('change', handleFile, false);\n\n        $scope.$watch(function() { return vm.articlesOrdersImportRequest.company; },\n            function(company) {\n                if (company === undefined || company === \"\") {\n                    return;\n                }\n\n                FileDataImportApiService.getArticlesOrdersImportColumnMapping(company.id).then(function(response) {\n                    if (response.id !== 0) { // Mapping exists.\n                        var keys = Object.keys(response);\n                        _.forEach(keys, function(key) {\n                            if (_.find(vm.inDataColumnNames, function(columnName) { return columnName === response[key]; })) {\n                                vm.mapping[key] = response[key];\n                            }\n                        });\n                    }\n                }, function (error) {\n                    console.log(error);\n                });\n\n                console.log(\"Company changed.\");\n                console.log(company);\n            }\n        );\n    }\n\n    function hasError() {\n        var hasNoCollectionCode = !vm.selectedCollection || !vm.selectedCollection.id;\n        var hasNoBarcodeMapping = !vm.mapping || vm.mapping.barcode === '';\n        //var hasNoLocation = !vm.articlesOrdersImportRequest.location || !vm.articlesOrdersImportRequest.location.id;\n        var hasNoCompany = !vm.articlesOrdersImportRequest.company || !vm.articlesOrdersImportRequest.company.id;\n        return hasNoCollectionCode || hasNoBarcodeMapping || hasNoCompany; //|| hasNoLocation\n    }\n\n    function handleFile(e) {\n        var files = e.target.files;\n        var i,f;\n        for (i = 0, f = files[i]; i !== files.length; ++i) {\n            var reader = new FileReader();\n\n            reader.onload = onLoadFunction;\n            loadSpinnerService.start('mainSpinner');\n            reader.readAsArrayBuffer(f);\n        }\n\n        function onLoadFunction(e) {\n            try {\n                // --- File data read ---\n                // From MDN: \"readAsBinaryString is deprecated and readAsArrayBuffer() should be used instead.\"\n\n                // ReadAsArrayBuffer solution.\n                var data = \"\";\n                var bytes = new Uint8Array(e.target.result);\n                var length = bytes.byteLength;\n                for (var i = 0; i < length; i++) {\n                    data += String.fromCharCode(bytes[i]);\n                }\n\n                // --- XLSX ---\n                // Read Excel data into a workbook object representation.\n                var workbook = XLSX.read(data, {type: 'binary'});\n\n                // Getting the name of the first sheet in the workbook.\n                var firstSheetName = workbook.SheetNames[0];\n\n                // Getting the sheet based on the firstSheetName.\n                var workSheet = workbook.Sheets[firstSheetName];\n\n                // The JSon representation of the worksheet returned by js-xlsx is pretty similar to how\n                // we want our request data to be formatted.\n                vm.JSonAdaptedSheetData = XLSX.utils.sheet_to_json(workSheet);\n\n                extractInDataColumnNames();\n            } catch (error) {\n                console.log(error);\n            } finally {\n                loadSpinnerService.stop('mainSpinner');\n            }\n        }\n    }\n\n    // Once the mapping has been determined we can use it to create the DTOs we're going\n    // to send to the backend.\n    function createRequestData() {\n        vm.articlesOrdersImportRequest.articlesOrdersImportRows = [];\n\n        var mappingKeys = Object.keys(vm.mapping);\n\n        _.forEach(vm.JSonAdaptedSheetData, function(rowObject) {\n            var requestDto = {};\n            _.forEach(mappingKeys, function(mapKey) {\n                var mapValue = vm.mapping[mapKey];\n                if (mapValue !== \"\" || mapValue !== undefined) {\n                    requestDto[mapKey] = rowObject[mapValue];\n                    requestDto['collection'] = vm.selectedCollection.collectionCode;\n                    requestDto['plannedDeliveryDate'] = vm.plannedDeliveryDate;\n                }\n            });\n\n            vm.articlesOrdersImportRequest.articlesOrdersImportRows.push(requestDto);\n        });\n\n        vm.articlesOrdersImportRequest.fileName = fileInputDomElement.value;\n    }\n\n    function saveMapping() {\n        var mappingRequest = {\n            alternativeArticleNumber: vm.mapping.alternativeArticleNumber,\n            articleDescription: vm.mapping.articleDescription,\n            articleName: vm.mapping.articleName,\n            articleTypeString: vm.mapping.articleTypeString,\n            barcode: vm.mapping.barcode,\n            departmentCode: vm.mapping.departmentCode,\n            intrastatCode: vm.mapping.intrastatCode,\n            itemGroupString: vm.mapping.itemGroupString,\n            orderNumberExternal: vm.mapping.orderNumberExternal,\n            plannedDeliveryDate: vm.mapping.plannedDeliveryDate,\n            previousPrice: vm.mapping.previousPrice,\n            purchaseCost: vm.mapping.purchaseCost,\n            quantity: vm.mapping.quantity,\n            salesPrice: vm.mapping.salesPrice,\n            subCategory: vm.mapping.subCategory,\n            variant1Name: vm.mapping.variant1Name,\n            variant2Name: vm.mapping.variant2Name\n        };\n\n        FileDataImportApiService.setArticlesOrdersImportColumnMapping(vm.articlesOrdersImportRequest.company.id, mappingRequest);\n    }\n\n    // Post the assembled data to backend.\n    function sendRequestData() {\n        saveMapping();\n        loadSpinnerService.start('mainSpinner');\n        createRequestData();\n\n        FileDataImportApiService.createArticlesOrders(vm.articlesOrdersImportRequest).then(function(response) {\n            vm.articlesOrdersImport = response;\n            $state.go('product.importfileslist.importeditor', { importFileId: vm.articlesOrdersImport.id });\n        }, function(error) {\n            console.log(error);\n            showErrorToaster(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    // js-xlsx has done most of the work already. All we need to do is extract the javascript object\n    // property names, and we're set.\n    function extractInDataColumnNames() {\n        if (vm.JSonAdaptedSheetData.length !== 0) {\n            vm.inDataColumnNames = [];\n            vm.inDataColumnNames.push(\"\");\n            _.forEach(vm.JSonAdaptedSheetData, function(sheetData) {\n                var keys = Object.keys(sheetData);\n\n                _.forEach(keys, function(key) {\n                    if (!_.find(vm.inDataColumnNames, function(name) { return name === key; })) {\n                        vm.inDataColumnNames.push(key);\n                    }\n                });\n            });\n        }\n    }\n\n    function showErrorToaster(message) {\n        var title = $translate.instant('common.error');\n        ToasterService.showError(message, title);\n    }\n\n}\n\nangular\n    .module('importfileslist.articleimport', [])\n    .config(stateConfig)\n    .controller('ArticleImportController', ArticleImportController);\n","// @ngInject\nfunction ArticleAddNewArticleVariantDialogService($uibModal, ProductsApiService){\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(article, articleCollections, variantGroups){\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: false,\n            controller: 'ArticleAddNewArticleVariantDialogController as vm',\n            templateUrl: 'main/product/articles/articleAddNewArticleVariantDialog/articleAddNewArticleVariantDialog.tpl.html',\n            size: 'lg',\n            resolve: {\n                articleObject: function (){\n                    return article;\n                },\n                articleCollections: function (){\n                    return articleCollections;\n                },\n                variantGroups: function (){\n                    return variantGroups.variantGroups;\n                }\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction ArticleAddNewArticleVariantDialogController($scope, $uibModalInstance, articleObject, articleCollections ,variantGroups, ProductsApiService, VariantsApiService, loadSpinnerService, ToasterService, $translate) {\n    var vm = this;\n\n//Variables\n    //relevant data\n    vm.articleObject = articleObject;\n    vm.articleCollections = articleCollections;\n    vm.variantGroups = variantGroups;\n    vm.selectedVariantGroup = null;\n    vm.selectedVariant = null;\n    vm.sizes = [];\n    vm.colors = [];\n    vm.isBarcodeGenerationAllowed = true;\n\n    vm.fromSizeOption = 'product'\n    //new data\n    vm.newArticleVariants = [];\n    vm.newColorName = \"\";\n    vm.newSalesColorName = \"\";\n    vm.colorError = {};\n    vm.newArticleCollection = vm.articleObject.articleCollection;\n    vm.newPurchaseCost = vm.articleObject.purchaseCost;\n    vm.newSalesPrice = vm.articleObject.salesPrice;\n    vm.newPreviousPrice = vm.articleObject.previousPrice;\n\n//Functions\n    vm.resetValuesFromArticle = resetValuesFromArticle;\n    vm.updateValues = updateValues;\n    vm.removeVariantDetail = removeVariantDetail;\n    vm.updateFromSizes = updateFromSizes;\n    vm.addSelectedVariant = addSelectedVariant;\n    //validation\n    vm.validateNewColor = validateNewColor;\n    vm.validateSizes = validateSizes;\n    vm.validateBarcode = validateBarcode;\n    vm.anyVariantsSelected = anyVariantsSelected;\n    vm.anyErrorOnVariants = anyErrorOnVariants;\n    vm.hasError = hasError;\n    vm.hasWarning = hasWarning;\n    vm.isAddButtonDisabled = isAddButtonDisabled;\n    vm.getErrorTooltip = getErrorTooltip;\n    //final \n    vm.addArticleVariantsToProduct = addArticleVariantsToProduct;\n    vm.closeModal = closeModal;\n\n    activate();\n    \n    function activate() {    \n        addWatchesForSelect();\n        addUniqueColors();\n        addUniqueSizes();\n\n        firstInit();\n        validateNewColor();\n        validateSizes();\n    }\n\n    function firstInit(){\n        vm.selectedVariantGroup = _.isUndefined(vm.articleObject.variantGroup2) ? null : _.find(vm.variantGroups, function(vg){\n            return vg.id === vm.articleObject.variantGroup2.id\n        });\n        vm.selectedVariant = null;\n        vm.isBarcodeGenerationAllowed = (vm.articleObject.itemGroup.brand.brandCategory !== undefined && vm.articleObject.itemGroup.brand.brandCategory.isBarcodeGenerationAllowed);\n        \n        if(vm.sizes.length > 0){\n            vm.fromSizeOption = 'product';\n        }\n        else if(vm.variantGroups.length > 0) {\n            vm.fromSizeOption = 'variantgroup';\n        }\n        else{\n            vm.fromSizeOption = 'variant';\n        }\n\n        vm.newColorName = \"\";\n        vm.colorError = {\n            severity: \"\",\n            messageKey: \"\",\n            colorObj: {}\n        };\n\n        updateFromSizes();\n    }\n\n    function addWatchesForSelect(){\n        $scope.$watch(function() {\n            return vm.selectedVariant;\n        },function(){\n            addSelectedVariant();\n        });      \n\n        $scope.$watch(function() {\n            return vm.selectedVariantGroup;\n        },function(){\n            updateFromSizes();\n        });\n    }\n\n    function initializeNewArticleVariants(fromSizes, orderBy){\n        vm.newArticleVariants = [];\n\n        vm.newArticleCollection = vm.articleObject.articleCollection;\n        vm.newPurchaseCost = vm.articleObject.purchaseCost;\n        vm.newSalesPrice = vm.articleObject.salesPrice;\n        vm.newPreviousPrice = vm.articleObject.previousPrice;\n        \n        var sortedSizes = fromSizes.sort((a, b) => {\n            return a[orderBy] - b[orderBy];\n        });\n\n        _.forEach(sortedSizes, function (size) {\n            addNewArticleVariant({ id: size.id, name: size.variantDetailName, sortOrder: size.sortOrder }, false);\n        });\n    }\n\n    function addSelectedVariant(){\n        if(vm.selectedVariant !== null && vm.selectedVariant !== \"\")\n            addNewArticleVariant(vm.selectedVariant, true);\n\n        vm.selectedVariant = null;\n    }\n\n    function removeVariantDetail(atIndex){\n        vm.newArticleVariants.splice(atIndex, 1);\n    }\n\n    function addNewArticleVariant (size, removeable){\n        if(vm.newArticleVariants.filter(x => x.variantDetail2.id === size.id).length === 0){\n            vm.newArticleVariants.push(\n                {\n                    id : 0,\n                    barcode : \"\",\n                    articleCollection: vm.newArticleCollection,\n                    purchaseCost: vm.newPurchaseCost,\n                    salesPrice: vm.newSalesPrice,\n                    previousPrice: vm.newPreviousPrice,\n                    variantDetail1: { variantDetailName: vm.newColorName.trim() },\n                    variantDetail2: { id: size.id, variantDetailName: size.name, sortOrder: size.sortOrder },\n                    salesColour: vm.newColorName.trim(),\n                    useThisVariant: true,\n                    isRemoveable: removeable,\n                    errorBarcodeGenerationNotAllowed: !vm.isBarcodeGenerationAllowed\n                }\n            );\n        }\n\n        validateSizes();\n    }\n\n    function addUniqueColors(){\n        vm.colors = [];\n        _.forEach(vm.articleObject.articleVariants, function(articleVariant) {\n            var existingColor = vm.colors.find(x => x.color.variantDetailName === articleVariant.variantDetail1.variantDetailName)\n\n            if(_.isUndefined(existingColor)){ //Add color to list of unique colors\n                vm.colors.push({\n                    color: articleVariant.variantDetail1,\n                    sizesOnColor: [articleVariant.variantDetail2]\n                });\n            }\n            else { //Add size to existing color\n                existingColor.sizesOnColor.push(articleVariant.variantDetail2);\n            }\n        });\n    }\n\n    function addUniqueSizes(){\n        vm.sizes = [];\n        _.forEach(vm.articleObject.articleVariants, function(articleVariant) {\n            if(!vm.sizes.some(x => x.id === articleVariant.variantDetail2.id)){\n                vm.sizes.push(articleVariant.variantDetail2);\n            }\n        });\n\n    }\n\n    function updateValues() {\n        if(!_.isUndefined(vm.newColorName) && vm.newColorName !== \"\"){\n            _.forEach(vm.newArticleVariants, function(newArticleVariant){\n                newArticleVariant.purchaseCost = vm.newPurchaseCost;\n                newArticleVariant.salesPrice = vm.newSalesPrice;\n                newArticleVariant.previousPrice = vm.newPreviousPrice;  \n                newArticleVariant.variantDetail1 = { variantDetailName: vm.newColorName.trim() }; \n                newArticleVariant.salesColour = vm.newSalesColorName === \"\" || _.isUndefined(vm.newSalesColorName) ? vm.newColorName.trim() :  vm.newSalesColorName.trim();  \n                newArticleVariant.articleCollection = vm.newArticleCollection;    \n            });\n        }\n        \n        validateNewColor();\n        validateSizes();\n    }\n\n    function resetValues(){\n        addUniqueColors();\n        addUniqueSizes();\n\n        if(!_.isUndefined(vm.newColorName) && vm.newColorName !== \"\"){\n            _.forEach(vm.newArticleVariants, function(newArticleVariant){\n                newArticleVariant.purchaseCost = vm.newPurchaseCost;\n                newArticleVariant.salesPrice = vm.newSalesPrice;\n                newArticleVariant.previousPrice = vm.newPreviousPrice;  \n                newArticleVariant.variantDetail1 = { variantDetailName: vm.newColorName.trim() }; \n                newArticleVariant.salesColour = vm.newSalesColorName === \"\" || _.isUndefined(vm.newSalesColorName) ? vm.newColorName.trim() :  vm.newSalesColorName.trim(); \n                newArticleVariant.articleCollection = vm.newArticleCollection;    \n                newArticleVariant.barcode = \"\";\n                newArticleVariant.errorBarcodeGenerationNotAllowed = !vm.isBarcodeGenerationAllowed\n            });\n        }\n        \n        validateNewColor();\n        validateSizes();\n    }\n\n    function addArticleVariantsToProduct(shouldClose){\n        if(!isAddButtonDisabled()){\n            _.forEach(vm.newArticleVariants, function(newAv){ \n                if(newAv.useThisVariant){\n                    vm.articleObject.articleVariants.push(angular.copy(newAv));\n                }\n            });\n\n            if(vm.fromSizeOption === 'variantgroup'){\n                vm.articleObject.variantGroup2 = angular.copy(vm.selectedVariantGroup);\n            }\n\n            ToasterService.showSuccess(\"\", $translate.instant('common.done'));\n\n            if(shouldClose)\n                closeModal()\n            else{\n                vm.newSalesColorName = \"\";  \n                document.getElementById(\"color\").select();\n                resetValues();\n            }\n        }\n        else {\n            ToasterService.showError(\"\", $translate.instant('common.error'));\n        }\n    }\n\n    function resetValuesFromArticle(){\n        firstInit();\n        validateNewColor();\n        validateSizes();\n    }\n\n    function validateNewColor(){\n        vm.colorError = {};\n\n        if(_.isUndefined(vm.newColorName) || vm.newColorName.trim().length === 0) {\n            vm.colorError.messageKey = \"article.newarticlevariant.error.colorempty\";\n            vm.colorError.severity = \"error\";\n            vm.colorError.colorObj = {};\n            return;\n        }\n\n        _.forEach(vm.colors, function(color){\n            if(normalizeString(color.color.variantDetailName.toLowerCase()) === normalizeString(vm.newColorName.trim().toLowerCase())){\n                vm.colorError.messageKey = \"article.newarticlevariant.warning.coloralreadyexists\";\n                vm.colorError.severity = \"warning\";\n                vm.colorError.colorObj = color;\n            }\n        })\n    }\n\n    function validateSizes(){\n        _.forEach(vm.newArticleVariants, function(newArtVar){\n            var sizeId = newArtVar.variantDetail2.id;\n            newArtVar.errorOnSize = false;\n\n            if(vm.colorError.severity === \"warning\"){\n                var sizeExist = vm.colorError.colorObj.sizesOnColor.filter(x => x.id === sizeId).length > 0\n                newArtVar.hasError = sizeExist;\n                newArtVar.errorOnSize = sizeExist;\n            }\n            \n            checkErrorOnVariant(newArtVar);\n        });\n    }\n\n    function validateBarcode(articleVariant){\n        articleVariant.errorBarcodeExists = false;\n        articleVariant.errorBarcodeDuplicate = false;\n        articleVariant.errorBarcodeGenerationNotAllowed = false;\n\n        if(!_.isUndefined(articleVariant.barcode) && articleVariant.barcode.trim() !== \"\")\n        {\n            checkIfBarcodeOnSelectedArticle(articleVariant);\n            checkIfBarcodeExistsAlready(articleVariant);\n        }\n        else if(!vm.isBarcodeGenerationAllowed){\n            articleVariant.errorBarcodeGenerationNotAllowed = true;\n        }\n\n        checkIfBarcodeDuplicatesInNewVariants();\n\n        validateSizes();\n    }\n\n    function checkIfBarcodeOnSelectedArticle(articleVariant){\n        var filteredAVlength = vm.articleObject.articleVariants.filter(x => x.barcode === articleVariant.barcode).length;\n        var filteredAVBlength = vm.articleObject.articleVariants.filter(x => _.isUndefined(x.articleVariantBarcodes) ? false : x.articleVariantBarcodes.filter(y => y.barcode === articleVariant.barcode).length !== 0).length;\n\n        articleVariant.errorBarcodeExists = filteredAVlength !== 0 || filteredAVBlength !== 0\n    }\n\n    function checkIfBarcodeDuplicatesInNewVariants(){\n        _.forEach(vm.newArticleVariants, function(av) {\n            if(!_.isUndefined(av.barcode) && av.barcode.trim() !== \"\")\n                av.errorBarcodeDuplicate = vm.newArticleVariants.filter(x => x.barcode === av.barcode).length > 1\n        })\n    }\n\n    function checkIfBarcodeExistsAlready(articleVariant){\n        loadSpinnerService.start('mainSpinner');\n        ProductsApiService.checkIfBarcodeExists(articleVariant.barcode).then(function(response){\n            if(response)\n                articleVariant.errorBarcodeExists = true;\n            checkErrorOnVariant(articleVariant);\n        }, function(error){\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateFromSizes(){\n        vm.newArticleVariants = [];\n        if(vm.fromSizeOption === 'product'){\n            initializeNewArticleVariants(vm.sizes, 'sortOrder');\n        }\n        else if(vm.fromSizeOption === 'variantgroup'){\n            if(vm.selectedVariantGroup !== null){\n                initializeNewArticleVariants(vm.selectedVariantGroup.variantDetails, 'sortOrder');\n            }\n        }\n        else if(vm.fromSizeOption === 'variant'){\n            //Do nothing\n        }\n    }\n\n    function checkErrorOnVariant(articleVariant){\n        articleVariant.hasError = articleVariant.errorOnSize || articleVariant.errorBarcodeExists || articleVariant.errorBarcodeDuplicate || articleVariant.errorBarcodeGenerationNotAllowed;\n    }\n\n    function anyVariantsSelected(){\n        return vm.newArticleVariants.filter(x => x.useThisVariant).length > 0;        \n    }\n\n    function anyErrorOnVariants(){\n        return vm.newArticleVariants.filter(x => x.hasError && x.useThisVariant).length > 0;\n    }\n\n    function hasError() {\n        if(vm.colorError.severity === \"error\")\n            return true;\n\n        return false;\n    }\n    \n    function hasWarning() {\n        if(vm.colorError.severity === \"warning\")\n            return true;\n\n        return false;\n    }\n\n    function getErrorTooltip(articleVariant){\n        var text = \"\";\n\n        if(articleVariant.errorOnSize){\n            text += $translate.instant('article.newarticlevariant.error.sizealreadyoncolor');\n        } \n\n        if(articleVariant.errorBarcodeExists){\n            text += (text.length > 0 ? \", \" : \"\") + $translate.instant('article.newarticlevariant.error.barcodeexists');\n        }\n\n        if(articleVariant.errorBarcodeDuplicate){\n            text += (text.length > 0 ? \", \" : \"\") + $translate.instant('article.newarticlevariant.error.barcodeduplicate');\n        }\n\n        if(articleVariant.errorBarcodeGenerationNotAllowed){\n            text += (text.length > 0 ? \", \" : \"\") + $translate.instant('article.newarticlevariant.error.barcodegenerationnotallowed');\n        }\n\n        return text;\n    }\n\n    function isAddButtonDisabled(){\n        return(vm.hasError() || vm.anyErrorOnVariants() || !vm.anyVariantsSelected())\n    }\n\n    function normalizeString(str) {\n        //Make sure string contains only letters, numbers and some special characters\n        var retVal = str;\n        var r = /[^ \\(\\)\\/\\\\0-9\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]+/g;\n        retVal = str.replace(r, '');\n        //Make sure there are no extra whitespace\n        var r2 = /[\\s]{2,}/g;\n        retVal = retVal.replace(r2, ' ');\n        //Remove leading and trailing whitespace\n        retVal = retVal.trim();\n        return retVal;\n    }\n\n    function closeModal() {\n        $uibModalInstance.close();\n    }\n}\n\nangular\n    .module('product.articles.articleAddNewArticleVariantDialog', [])\n    .service('ArticleAddNewArticleVariantDialogService', ArticleAddNewArticleVariantDialogService)\n    .controller('ArticleAddNewArticleVariantDialogController', ArticleAddNewArticleVariantDialogController);","// @ngInject\nfunction ArticleChangeItemGroupDialogService($uibModal, ProductsApiService) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(articleId, itemGroups) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'ArticleChangeItemGroupDialogController as vm',\n            templateUrl: 'main/product/articles/articleChangeItemGroupDialog/articleChangeItemGroupDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            article: function () {\n                return ProductsApiService.getProduct(articleId);\n            },\n            itemGroups: function () {\n                return itemGroups;\n            },\n            salesChannels: function () {\n                return ProductsApiService.getSalesChannels();\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction ArticleChangeItemGroupDialogController($scope, $uibModalInstance, $timeout, article, itemGroups, salesChannels, ProductsApiService, FileOperationsApiService, loadSpinnerService, ResourcesService, ToasterService, $translate) {\n    var vm = this;\n\n    vm.selectedArticle = article;\n    vm.selectedArticleCopy = angular.copy(vm.selectedArticle);\n    vm.newArticleVariantsForNewSuppliers = [];\n    vm.itemGroups = itemGroups;\n    vm.closeModal = closeModal;\n    vm.hasChanged = false;\n    vm.isNewItemGroup = false;\n    vm.isNewSupplier = false;\n    vm.changesToSupplier = false;\n    vm.includeSupplierPrices = false;\n    vm.availableSubCategories = [];\n    vm.availableDepartments = [];\n    vm.newSuppliers = [];\n    vm.sameSuppliers = [];\n    vm.removedSuppliers = [];\n    vm.salesChannels = salesChannels;\n\n    vm.changeItemGroup = changeItemGroup;\n    vm.copyToAllPrices = copyToAllPrices;\n    vm.saveNewItemGroup = saveNewItemGroup;\n    vm.setSupplierData = setSupplierData;\n    vm.copyAllNewVariantsForSupplierPrices = copyAllNewVariantsForSupplierPrices;\n    activate();\n\n\n    function activate() {\n    }\n\n    function changeItemGroup(itemGroup) {\n        if (itemGroup) {\n            vm.selectedArticleCopy.subCategory = {};\n            loadItemGroupData(itemGroup);\n        }\n    }\n    function loadItemGroupData(itemGroup) {\n        ProductsApiService.getItemGroup(itemGroup.id).then(function (result) {\n            vm.selectedArticleCopy.itemGroup = result;\n            loadMainGroupData(result, true);\n\n            vm.selectedArticleCopy.preferredSupplier = result.brand.company;\n            vm.selectedArticleCopy.suppliers = result.brand.companies;\n            \n            vm.removedSuppliers.length = 0;\n            vm.sameSuppliers.length = 0;\n            vm.newSuppliers.length = 0;\n\n            _.forEach(vm.selectedArticleCopy.suppliers, function(newSupp){\n                if (!_.find(vm.selectedArticle.suppliers, function(oldSupp) {return oldSupp.id === newSupp.id; }))\n                    vm.newSuppliers.push(newSupp);\n                else {\n                    vm.sameSuppliers.push(newSupp);\n                }\n            });\n            \n            _.forEach(vm.selectedArticle.suppliers, function(oldSupp){\n                if (!_.find(vm.sameSuppliers, function(sameSupp) {return sameSupp.id === oldSupp.id; }))\n                    vm.removedSuppliers.push(oldSupp);\n            });\n\n            _.forEach(vm.selectedArticleCopy.articleVariants, function(av){\n                if(av.supplierPrices.length > 0)\n                    vm.includeSupplierPrices = true;\n            })\n\n            copyAllNewVariantsForSupplierPrices();\n\n            \n            console.log(vm.selectedArticleCopy);\n\n            vm.hasChanged = true;\n            vm.isNewItemGroup = Boolean(vm.selectedArticleCopy.itemGroup.itemGroupCode !== vm.selectedArticle.itemGroup.itemGroupCode);\n            vm.changesToSupplier = Boolean(vm.selectedArticleCopy.preferredSupplier.id !== vm.selectedArticle.preferredSupplier.id || vm.selectedArticleCopy.suppliers.length > 1);\n            vm.isNewSupplier = Boolean(vm.removedSuppliers.length > 0 || vm.newSuppliers.length > 0);\n        });\n    }\n    function loadMainGroupData(itemGroup, setDefaults) {\n        if (itemGroup) {\n            ProductsApiService.getMainGroup(itemGroup.mainGroup.id).then(function (result) {\n                vm.selectedArticleCopy.itemGroup.mainGroup = result;\n\n                vm.availableSubCategories = _.sortBy(result.subCategories, function (subCategory) {\n                    return subCategory.subCategoryCode;\n                });\n\n                vm.availableDepartments = _.sortBy(result.departments, function (department) {\n                    return department.departmentCode;\n                });\n                resolveIntrastats();\n\n                if (setDefaults) {\n                    selectDefaultDepartment(result.departments);\n                    selectDefaultSubCatgory(result.subCategories);\n                    selectDefaultAccounts(result);\n                }\n\n                ProductsApiService.getVariant(result.variant2.id).then(function (variant) {\n                    vm.variant2 = variant;\n                    selectDefaultVat();\n                    selectDefaultIntrastat();\n                    selectDefaultVariantGroup();\n                    selecteDefaultIsVariant();\n                    selectDefaultSalechannels(itemGroup);\n                });\n            });\n        }\n    }\n    function setSupplierData(itemGroup) {\n        if (itemGroup) {\n                \n        }\n    }\n    function copyAllNewVariantsForSupplierPrices() {\n\n        vm.newArticleVariantsForNewSuppliers.length = 0;\n        if(vm.includeSupplierPrices){    \n            _.forEach(vm.newSuppliers, function (supplier) {\n                _.forEach(vm.selectedArticleCopy.articleVariants, function (variant) {\n                    var newVariant = {\n                        purchaseCost: variant.purchaseCost,\n                        variantDetail1: variant.variantDetail1,\n                        variantDetail2: variant.variantDetail2,\n                        articleVariantId: variant.id,\n                        companyName: supplier.companyName,\n                        purchasingCurrency: supplier.purchasingCurrency,\n                        preferredSupplierId: supplier.id\n                    };\n\n                    vm.newArticleVariantsForNewSuppliers.push(newVariant);\n                });\n            });\n        }\n\n    }\n    function resolveIntrastats() {\n\n        var intrastats = [];\n\n        if (vm.selectedArticleCopy.itemGroup) {\n\n            var mainGroup = vm.selectedArticleCopy.itemGroup.mainGroup;\n            var subCategory = vm.selectedArticleCopy.subCategory;\n\n            if (mainGroup && mainGroup.intrastats) {\n                intrastats = _.unionBy(intrastats, mainGroup.intrastats, 'id');\n            }\n            if (subCategory && subCategory.intrastats) {\n                intrastats = _.unionBy(intrastats, subCategory.intrastats, 'id');\n            }\n\n            if (!vm.selectedArticleCopy.intrastat || _.filter(intrastats, { id: vm.selectedArticleCopy.intrastat.id }).length === 0) {\n                selectDefaultIntrastat();\n            }\n        }\n\n        intrastats.forEach(function (intrastat) {\n            if (intrastat.internalDescription && intrastat.internalDescription.length > 15) {\n                intrastat.internalDescription = intrastat.internalDescription.substr(0, 15) + '...';\n            }\n        }, this);\n\n        vm.intrastats = intrastats;\n    }\n\n    function selectDefaultVat() {\n        if (vm.selectedArticleCopy.itemGroup && vm.selectedArticleCopy.itemGroup.vat) {\n            var vatId = vm.selectedArticleCopy.itemGroup.vat.id;\n            var vat = _.find(vm.vats, function (vat) {\n                return vat.id === vatId;\n            });\n            vm.selectedArticleCopy.vat = vat;\n\n\n        }\n    }\n\n    function selectDefaultSalechannels(itemGroup) {\n        loadSpinnerService.start('mainSpinner', { message: $translate.instant('article.checkingSalesChannels') });\n        ProductsApiService.getItemGroup(itemGroup.id).then(function (response) {\n            itemGroup = response;\n\n            var salesChannels = _.clone(vm.salesChannels);\n\n            if (itemGroup.mainGroup && itemGroup.mainGroup.salesChannels && itemGroup.mainGroup.salesChannels.length > 0) {\n                salesChannels = _.intersectionBy(salesChannels, itemGroup.mainGroup.salesChannels, 'id');\n            }\n\n            if (itemGroup.brand && itemGroup.brand.salesChannels && itemGroup.brand.salesChannels.length > 0) {\n                salesChannels = _.intersectionBy(salesChannels, itemGroup.brand.salesChannels, 'id');\n            }\n\n            vm.selectedArticleCopy.salesChannels = salesChannels;\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function selectDefaultDepartment(departments) {\n        if (departments.length === 1) {\n            vm.selectedArticleCopy.department = departments[0];\n        }\n    }\n\n    function selectDefaultSubCatgory(subCategories) {\n        if (subCategories.length === 1) {\n            vm.selectedArticleCopy.subCategory = subCategories[0];\n        }\n    }\n\n    function selectDefaultAccounts(mainGroup) {\n        if (mainGroup.discountAccount) {\n            vm.selectedArticleCopy.discountAccount = mainGroup.discountAccount;\n        }\n        if (mainGroup.salesAccount) {\n            vm.selectedArticleCopy.salesAccount = mainGroup.salesAccount;\n        }\n    }\n\n    function selecteDefaultIsVariant() {\n        if (vm.selectedArticleCopy.itemGroup && vm.selectedArticleCopy.itemGroup.mainGroup) {\n            vm.selectedArticleCopy.isVariant = vm.selectedArticleCopy.itemGroup.mainGroup.isVariant;\n        }\n    }\n    function selectDefaultIntrastat() {\n        if (!vm.hasChanged) {\n            return;\n        }\n\n        //If exists in both\n        if (vm.selectedArticleCopy.itemGroup.mainGroup && vm.selectedArticleCopy.subCategory) {\n            var intrastats = _.intersectionBy(vm.selectedArticleCopy.itemGroup.mainGroup.intrastats, vm.selectedArticleCopy.subCategory.intrastats, 'id');\n            if (intrastats.length === 1) {\n                vm.selectedArticleCopy.intrastat = intrastats[0];\n                return;\n            }\n        }\n\n        //If only one in maingroup\n        if (vm.selectedArticleCopy.itemGroup.mainGroup && vm.selectedArticleCopy.itemGroup.mainGroup.intrastats && vm.selectedArticleCopy.itemGroup.mainGroup.intrastats.length === 1) {\n            vm.selectedArticleCopy.intrastat = vm.selectedArticleCopy.itemGroup.mainGroup.intrastats[0];\n            return;\n        }\n\n        //If only one in subCategory\n        if (vm.selectedArticleCopy.subCategory && vm.selectedArticleCopy.subCategory.intrastats && vm.selectedArticleCopy.subCategory.intrastats.length === 1) {\n            vm.selectedArticleCopy.intrastat = vm.selectedArticleCopy.subCategory.intrastats[0];\n            return;\n        }\n    }\n\n    function selectDefaultVariantGroup() {\n        if (vm.selectedArticleCopy.itemGroup.variantGroup2 !== undefined && vm.selectedArticleCopy.itemGroup.variantGroup2 !== null) {\n            var groupId = vm.selectedArticleCopy.itemGroup.variantGroup2.id;\n            var group = _.find(vm.variant2.variantGroups, function (variantGroup) {\n                return variantGroup.id === groupId;\n            });\n            vm.selectedArticleCopy.variantGroup2 = group;\n            changeVariantGroup();\n        }\n    }\n\n    function copyToAllPrices(sourceArticleVariant) {\n        _.forEach(vm.newArticleVariantsForNewSuppliers, function (variant) {\n            if (sourceArticleVariant.preferredSupplierId === variant.preferredSupplierId) {\n                variant.purchaseCost = sourceArticleVariant.purchaseCost;\n            }\n        });\n    }\n\n    function saveNewItemGroup() {\n\n        var requestObject = {\n            articleId: vm.selectedArticleCopy.id,\n            newItemGroupId: vm.selectedArticleCopy.itemGroup.id,\n            newPreferredSupplierId: vm.selectedArticleCopy.preferredSupplier.id,\n            newArticleVariantSupplierPrices: [],\n            salesChannelsIds: []\n        };\n\n        _.forEach(vm.selectedArticle.salesChannels, function (salesChannel) {\n            requestObject.salesChannelsIds.push(salesChannel.id);\n        });\n        \n        _.forEach(vm.newArticleVariantsForNewSuppliers, function (artVarSupp) {\n            requestObject.newArticleVariantSupplierPrices.push({\n                articleVariantId: artVarSupp.articleVariantId,\n                newPurchaseCost: artVarSupp.purchaseCost,\n                newSupplierId: artVarSupp.preferredSupplierId\n            });\n        });\n\n        _.forEach(vm.sameSuppliers, function (sameSupp){\n            _.forEach(vm.selectedArticle.articleVariants, function(artVar){\n                requestObject.newArticleVariantSupplierPrices.push({\n                    articleVariantId: artVar.id,\n                    newPurchaseCost: artVar.purchaseCost,\n                    newSupplierId: sameSupp.id\n                });\n            });\n        });\n\n        loadSpinnerService.start(\"mainSpinner\");\n        ProductsApiService.changeItemGroup(requestObject).then(function (response) {\n            var message = `${$translate.instant('common.new')} ${$translate.instant('article.itemgroup')}: ${response.itemGroup.itemGroupCode} ${response.itemGroup.itemGroupLongName}`;\n            ToasterService.showSuccess(message, $translate.instant('support.itemGroupChanged'));\n            closeModal(true);\n        }, function (error) {\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n    function closeModal(refresh) {\n        $uibModalInstance.close(refresh);\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('product.articles.articleChangeItemGroupDialog', [])\n    .service('ArticleChangeItemGroupDialogService', ArticleChangeItemGroupDialogService)\n    .controller('ArticleChangeItemGroupDialogController', ArticleChangeItemGroupDialogController);","// @ngInject\nfunction ArticleChangeVariantDetailDialogService($uibModal, ProductsApiService) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(article) {\n\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: false,\n            controller: 'ArticleChangeVariantDetailDialogController as vm',\n            templateUrl: 'main/product/articles/articleChangeVariantDetailDialog/articleChangeVariantDetailDialog.tpl.html',\n            size: 'md',\n            resolve: {\n                articleChangeVariantDetailObject: function () {\n                    return ProductsApiService.getArticleChangeVariantDetailObject(article.id);\n                }\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n\n// @ngInject\nfunction ArticleChangeVariantDetailDialogController($scope, $uibModalInstance, $timeout, articleChangeVariantDetailObject, ProductsApiService, loadSpinnerService, ResourcesService, ToasterService, $translate) {\n    var vm = this;\n\n    vm.changeVariantDetailObject = articleChangeVariantDetailObject;\n\n    _.forEach(vm.changeVariantDetailObject.articleVariantDetailObjects, function(dobj){\n        dobj.newVariantDetailName = \"\"\n    })\n\n    vm.anyError = false;\n    vm.isValidating = false;\n\n    vm.closeModal = closeModal;\n    vm.saveNewVariantDetails = saveNewVariantDetails;\n    vm.anyChanges = anyChanges;\n    vm.getColourText = getColourText;\n\n    vm.validate = validate;\n\n    activate();\n    \n    function activate() {}\n\n    function validate(){\n        _.forEach(vm.changeVariantDetailObject.articleVariantDetailObjects, function(obj){obj.hasError = false;});\n        vm.anyError = false;\n        vm.isValidating = true;\n\n        _.forEach(vm.changeVariantDetailObject.articleVariantDetailObjects.filter(x => x.newVariantDetailObject), function(withNewObj){\n            _.forEach(vm.changeVariantDetailObject.articleVariantDetailObjects, function(obj){\n                if(obj.variantDetailObject.id !== withNewObj.variantDetailObject.id){\n                    if(obj.newVariantDetailObject){\n                        if(obj.newVariantDetailObject.id === withNewObj.newVariantDetailObject.id){\n                            if(hasIntersectingColours(obj.coloursOnArticleVariant, withNewObj.coloursOnArticleVariant)){\n                                vm.anyError = true;\n                                obj.hasError = true;\n                                withNewObj.hasError = true;\n                            }\n                        }\n                    }\n                    else if(obj.variantDetailObject.id === withNewObj.newVariantDetailObject.id){\n                        if(hasIntersectingColours(obj.coloursOnArticleVariant, withNewObj.coloursOnArticleVariant)){\n                            vm.anyError = true;\n                            obj.hasError = true;\n                            withNewObj.hasError = true;\n                        }\n                    }\n                }\n            });\n        });\n        \n        vm.isValidating = false;\n    }\n\n    function hasIntersectingColours(aColours, bColours){\n        var intersecting = false;\n\n        _.forEach(aColours, function(a){\n            var length = bColours.filter(x => x.id === a.id).length;\n            if(length > 0){\n                intersecting = true;\n            }\n        });\n\n        return intersecting;\n    }\n    function saveNewVariantDetails(){\n        var requestObject = {\n            articleId: vm.changeVariantDetailObject.productId,\n            articleVariantDetailObjectsChanged: []\n        }\n\n        _.forEach(vm.changeVariantDetailObject.articleVariantDetailObjects, function(obj){\n            if(obj.newVariantDetailObject) {\n                requestObject.articleVariantDetailObjectsChanged.push({\n                    articleVariantIds: obj.articleVariantIds,\n                    variantDetailObject: obj.newVariantDetailObject\n                });\n            }\n        });\n\n        loadSpinnerService.start(\"mainSpinner\");\n        ProductsApiService.changeArticleVariantDetail(requestObject).then(function (response){\n            var message = `${$translate.instant('common.success')}`\n            ToasterService.showSuccess(message, $translate.instant('common.success'));\n            closeModal(true);\n        }, function (error){\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n    function anyChanges(){\n        var obj = vm.changeVariantDetailObject.articleVariantDetailObjects.filter(x => x.newVariantDetailObject)\n\n        return obj.length > 0\n    }\n\n    function getColourText(colours, cutoff){\n        var returnString = '';\n        _.forEach(colours, function(colour){\n            if(returnString !== '')\n                returnString += ', '\n\n            returnString += colour.name\n        });\n\n        if(returnString.length > 35 && cutoff)\n            return returnString.substring(0, 35) + '...';\n        return returnString;\n    }\n\n    function closeModal(refresh) {\n        $uibModalInstance.close(refresh);\n    }\n}\n\nangular\n    .module('product.articles.articleChangeVariantDetailDialog', [])\n    .service('ArticleChangeVariantDetailDialogService', ArticleChangeVariantDetailDialogService)\n    .controller('ArticleChangeVariantDetailDialogController', ArticleChangeVariantDetailDialogController);","// @ngInject\nfunction ArticleLabelsPrintDialogService($uibModal, ProductsApiService) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(articleId) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'ArticleLabelsPrintDialogController as vm',\n            templateUrl: 'main/product/articles/articleLabelsPrintDialog/articleLabelsPrintDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            article: function () {\n                return ProductsApiService.getProduct(articleId);\n            }, \n            stocks: function () {\n                return ProductsApiService.getProductStocks(articleId);\n            }, \n            locations: function () {\n                return ProductsApiService.getLocations();\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction ArticleLabelsPrintDialogController($scope, $uibModalInstance, $timeout, article, stocks, locations, ProductsApiService, FileOperationsApiService, loadSpinnerService, ResourcesService, ToasterService, $translate) {\n    var vm = this;\n\n    vm.article = angular.copy(article);;\n    vm.closeModal = closeModal;\n    vm.print = printData;\n    vm.flexGridIsEditing = false;\n    vm.ongoingRequest = false;\n    vm.submittingEnabled = true;\n    vm.columns = [];\n    vm.rows = [];\n\n    // ADDED STUFF FOR LOCATIONS\n    vm.stockData = stocks;\n    vm.stockLocations = locations;\n\n    vm.selectedLocation = {};\n\n    vm.getStockDataFromLocation = getStockDataFromLocation;\n    vm.selectedLocationChanged = selectedLocationChanged;\n\n    activate();\n\n    function activate() {\n        getStockDataFromLocation();\n    }\n\n    function closeModal() {\n        $uibModalInstance.close();\n    }\n\n    function selectedLocationChanged(newLocation) {\n\n        vm.selectedLocation = _.find(vm.stockLocations, function(location) {\n            return location.id === newLocation.id;\n        });\n    }\n\n    function getDataColumns() {\n        var columns = [];\n\n        // Group by nested variantDetail2 in the current articleVariants\n        columns = _.groupBy(vm.article.articleVariants, function (variant) {\n            return variant.variantDetail2.variantDetailName;\n        });\n        // Get the variantDetail2 from each group in an array\n        columns = _.reduce(columns, function (newArray, val, key) {\n            newArray.push(val[0].variantDetail2);\n            return newArray;\n        }, []);\n\n        return _.sortBy(columns, 'sortOrder');\n    }\n\n    function getStockDataFromLocation() {\n        var columns = [];\n        var rows = [];\n        \n        _.forEach(getDataColumns(), function (variantDetail) {\n            columns.push(variantDetail.variantDetailName);\n        });\n\n        var articleVariants = _.groupBy(vm.article.articleVariants, function(articleVariant) {\n            return articleVariant.variantDetail1.variantDetailName;\n        });\n        _.forEach(articleVariants, function (variantRowValues) {\n            var r = {};\n            _.forEach(variantRowValues, function (variantRowValue) {\n                r.variantDetails1Name = variantRowValue.variantDetail1.variantDetailName;\n\n                //ADDED\n                var relatedStock = getStockFor(r.variantDetails1Name, variantRowValue.variantDetail2.variantDetailName);\n\n                if (relatedStock === undefined || relatedStock.location.id !== vm.selectedLocation.id || relatedStock['quantity'] <= 0) {\n                    relatedStock = {};\n                    relatedStock['quantity'] = 0;\n                }\n                r[variantRowValue.variantDetail2.variantDetailName] = {variant: variantRowValue, value: relatedStock.quantity };\n            });\n            rows.push(r);\n        });\n\n        vm.columns = columns;\n        vm.rows = rows;\n    }\n\n    function getStockFor(variantDetail1Name, variantDetail2Name) {\n        return _.find(vm.stockData, function(stock){ \n            return stock.articleVariant.variantDetail1.variantDetailName === variantDetail1Name &&\n                   stock.articleVariant.variantDetail2.variantDetailName === variantDetail2Name  &&\n                   stock.location.id === vm.selectedLocation.id;\n        });\n    }\n\n    function printData() {\n        if (vm.ongoingRequest) {\n            return false;\n        }\n\n        vm.ongoingRequest = true;\n        $uibModalInstance.startLoadingSpinner();\n        var labelsRequests = [];\n        var totalQty = 0;\n\n        _.forEach(vm.rows, function (row) {\n            _.forEach(vm.columns, function (column) {\n                var cell = row[column];\n                if (!cell || !cell.value || !cell.variant || cell.value < 0) {\n                    return;\n                }\n                totalQty += cell.value;\n                labelsRequests.push({ quantity: cell.value, articleVariantId: cell.variant.id });\n            });\n        });\n\n        if (totalQty > 0) {\n            ProductsApiService.downloadArticleVariantLabels(labelsRequests).then(function (response) {\n                var fileName = response;\n                FileOperationsApiService.downloadLabels(fileName);\n\n            }, function (error) {\n                error = handleError(error);\n                if (error.message === 'Cannot save a PDF document with no pages.') {\n                    ToasterService.showError($translate.instant('article.noquantity'), $translate.instant('common.error'));\n                } else {\n                    ToasterService.showError(error.message, $translate.instant('common.error'));\n                }\n            }).finally(function () {\n                vm.ongoingRequest = false;\n                $uibModalInstance.stopLoadingSpinner();\n            });\n        } else {\n            vm.ongoingRequest = false;\n            $uibModalInstance.stopLoadingSpinner();\n        }\n\n        function getVariant(variantDetail1Name, key) {\n            return _.find(article.articleVariants, function (articleVariant) {\n                return articleVariant.variantDetail1.variantDetailName === variantDetail1Name &&\n                       articleVariant.variantDetail2.variantDetailName === key;\n            });\n        }\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n\n}\n\nangular\n    .module('product.articles.articleLabelsPrintDialog', [])\n    .service('ArticleLabelsPrintDialogService', ArticleLabelsPrintDialogService)\n    .controller('ArticleLabelsPrintDialogController', ArticleLabelsPrintDialogController);\n","// @ngInject\nfunction ArticleNewIntrastatDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(articleId, articleVariantId) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'ArticleNewIntrastatDialogController as vm',\n            templateUrl: 'main/product/articles/articleNewIntrastatDialog/articleNewIntrastatDialog.tpl.html',\n            size: ''\n        };\n\n        modalDefaults.resolve = {\n            articleId: articleId,\n            articleVariantId: articleVariantId\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction ArticleNewIntrastatDialogController($scope, $uibModalInstance, articleId, articleVariantId, ProductsApiService, ToasterService, $translate, $timeout, loadSpinnerService, ResourcesService) {\n    var vm = this;\n\n    //Properties\n    vm.intrastat = {};\n\n    //Methods\n    vm.saveIntrastat = saveIntrastat;\n    vm.closeModal = closeModal;\n\n    function saveIntrastat() {\n        loadSpinnerService.start('mainSpinner');\n        ProductsApiService.saveNewIntrastat(articleId, articleVariantId, vm.intrastat).then(function(response) {\n            $uibModalInstance.close(response);\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function closeModal() {\n        $uibModalInstance.close();\n    }\n}\n\nangular\n    .module('product.articles.articleNewIntrastatDialog', [])\n    .service('ArticleNewIntrastatDialogService', ArticleNewIntrastatDialogService)\n    .controller('ArticleNewIntrastatDialogController', ArticleNewIntrastatDialogController);\n","import { reactEvents } from \"../../../../../bridge/reactEvents\";\nimport { angularEvents } from \"../../../../../bridge/angularEvents\";\n\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.articles.new', {\n        url: '/new',\n        views: {\n            \"wideColumnView@product\": {\n                templateUrl: 'main/product/articles/article/article.tpl.html',\n                controller: 'ArticleController as vm'\n            }\n        },\n        resolve: {\n            itemGroups: itemGroupsResolver,\n            articleCollections: articleCollectionsResolver,\n            salesChannels: salesChannelsResolver,\n            vats: vatsResolver,\n            article: function () {\n                return {};\n            },\n            articleTypes: articleTypesResolver,\n            countries: countriesResolver,\n            productClasses: productClassesResolver,\n            currencies: currenciesResvolver,\n            accounts: accountsResolver,\n            defaultCurrency: defaultCurrencyResolver,\n            searchTerms: searchTermsResolver,\n            hasSimpleWms: hasSimpleWmsResolver,\n            metaFieldValues: metaFieldValuesResolver,\n            metaFields: metaFieldsResolver\n        }\n    });\n    $stateProvider.state('product.articles.article', {\n        url: '/{articleId}',\n        views: {\n            \"wideColumnView@product\": {\n                templateUrl: 'main/product/articles/article/article.tpl.html',\n                controller: 'ArticleController as vm'\n            }\n        },\n        resolve: {\n            article: articleResolver,\n            articleCollections: articleCollectionsResolver,\n            salesChannels: salesChannelsResolver,\n            vats: vatsResolver,\n            itemGroups: itemGroupsResolver,\n            articleTypes: articleTypesResolver,\n            countries: countriesResolver,\n            productClasses: productClassesResolver,\n            currencies: currenciesResvolver,\n            accounts: accountsResolver,\n            defaultCurrency: defaultCurrencyResolver,\n            searchTerms: searchTermsResolver,\n            hasSimpleWms: hasSimpleWmsResolver,\n            metaFieldValues: metaFieldValuesResolver,\n            metaFields: metaFieldsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction searchTermsResolver(ProductsApiService, $stateParams) {\n    return {\n        filter: $stateParams.filter,\n        currentPage: $stateParams.currentPage,\n        pageSize: $stateParams.pageSize,\n        inactive: $stateParams.inactive,\n        match: $stateParams.match\n    };\n}\n\n// @ngInject\nfunction articleResolver(ProductsApiService, $stateParams) {\n    return ProductsApiService.getProduct($stateParams.articleId);\n}\n\n// @ngInject\nfunction salesChannelsResolver(ProductsApiService) {\n    return ProductsApiService.getSalesChannels();\n}\n\n// @ngInject\nfunction itemGroupsResolver(ProductsApiService) {\n    return ProductsApiService.getItemGroupFlats();\n}\n\n// @ngInject\nfunction accountsResolver(ProductsApiService) {\n    return ProductsApiService.getAccounts();\n}\n\n// @ngInject\nfunction articleCollectionsResolver(ProductsApiService) {\n    return ProductsApiService.getArticleCollections();\n}\n\n// @ngInject\nfunction vatsResolver(VatsApiService) {\n    return VatsApiService.getVats();\n}\n\n// @ngInject\nfunction articleTypesResolver(ProductsApiService) {\n    return ProductsApiService.getArticleTypes();\n}\n\n// @ngInject\nfunction countriesResolver(ProductsApiService) {\n    return ProductsApiService.getCountries();\n}\n\n// @ngInject\nfunction productClassesResolver(ProductsApiService) {\n    return ProductsApiService.getProductClasses();\n}\n// @ngInject\nfunction currenciesResvolver(ProductsApiService) {\n    return ProductsApiService.getCurrencies();\n}\n// @ngInject\nfunction defaultCurrencyResolver(ProductsApiService) {\n    return ProductsApiService.getDefaultCurrency();\n}\n\n// @ngInject\nfunction hasSimpleWmsResolver(ProductsApiService) \n{\n    return ProductsApiService.hasSimpleWms();\n}\n\n// @ngInject\nfunction metaFieldValuesResolver(ProductsApiService, $stateParams) {\n    if (!$stateParams.articleId) {\n        return [];\n    }\n    return ProductsApiService.getMetaFieldValues($stateParams.articleId);\n}\n\n// @ngInject\nfunction metaFieldsResolver(ProductsApiService, $stateParams) {\n    if (!$stateParams.articleId) {\n        return [];\n    }\n    return ProductsApiService.getMetaFields($stateParams.articleId);\n}\n\n// @ngInject\nfunction ArticleController($q, $scope, $state, $rootScope, $translate, ProductsApiService, HelperService, loadSpinnerService, article, itemGroups, vats, articleCollections, ArticleLabelsPrintDialogService, ArticleChangeItemGroupDialogService, ProductService,\n    ArticleNewIntrastatDialogService, articleTypes, AuthService, salesChannels, ToasterService, countries, productClasses, currencies, accounts, defaultCurrency, searchTerms, hasSimpleWms, metaFieldValues, metaFields, DS,\n    colourChangeDialogService) {\n    var vm = this;\n\n    //Properties\n    vm.environment = DS.defaults.ENV.NAME;\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.rowSupplierPricesData = [];\n    vm.articleChangeCount = 0;\n    vm.salesChannels = salesChannels;\n    vm.intrastats = [];\n    vm.accounts = accounts;\n    vm.itemGroups = itemGroups;\n    vm.articleCollections = articleCollections;\n    vm.selectedArticle = article;\n    vm.vats = vats;\n    vm.selectedArticleCopy = angular.copy(vm.selectedArticle);\n    vm.articleTypes = articleTypes;\n    vm.selectedArticleVariantFilter = {};\n    vm.selectedSupplierFilter = {};\n    vm.supplierRowData = [];\n    vm.isNewArticle = !article.id;\n    vm.isEditing = vm.isNewArticle ? true : false;\n    vm.filter = '';\n    vm.currentPage = 1;\n    vm.pageSize = 20;\n    if (searchTerms) {\n        vm.filter = searchTerms.filter ? searchTerms.filter : '';\n        vm.currentPage = searchTerms.currentPage < 1 ? searchTerms.currentPage : 1;\n        vm.pageSize = searchTerms.pageSize >= 20 ? searchTerms.pageSize : 20;\n        vm.match = searchTerms.match ? searchTerms.match == 'true' ? true : false : false;\n        vm.inactive = searchTerms.inactive ? searchTerms.inactive == 'true' ? true : false : false;\n    }\n    vm.searchedVariant = null;\n    vm.canAccess = AuthService.canAccess;\n    vm.mayReadStockLogistics = AuthService.canAccess('stockLogistics', 'read');\n    vm.availableSubCategories = [];\n    vm.availableDepartments = [];\n    vm.countries = countries;\n    vm.productClasses = productClasses;\n    vm.currencies = currencies;\n    vm.defaultCurrency = defaultCurrency;\n    vm.tabSelection = {\n        article: true,\n        articleVariants: false,\n        supplierPrices: false,\n        barcodes: false,\n        stocklocations: false,\n        metaFields: false\n    };\n    vm.showStocklocationsTab = false;\n    vm.tenantsWithStocklocationTab = [\"vfo\", \"int2\"];\n    vm.tenantsWithoutPriceListTab = [];\n    vm.location = null;\n    vm.locations = [];\n    vm.stocklocations = [];\n    var firstTimeLoadOfPrices = true;\n    vm.priceLists = [];\n    vm.hasClaim = havePurchaseCostClaim();\n\n    vm.priceListPriceDisplaySelections = [\n        { type: 'salesPrice', order: 1, label: 'article.salesprice' },\n        { type: 'previousPrice', order: 2, label: 'article.previousprice'}\n    ];\n    vm.priceListPriceDisplaySelection = vm.priceListPriceDisplaySelections[0];\n\n    //Methods\n    vm.startEdit = startEdit;\n    vm.cancelEdit = cancelEdit;\n    vm.getMargin = getMargin;\n    vm.save = save;\n    vm.initSupplierPricesGrid = initSupplierPricesGrid;\n    vm.changeItemGroup = changeItemGroup;\n    vm.changeVariantGroup = changeVariantGroup;\n    vm.downloadArticleLabels = downloadArticleLabels;\n    vm.openLabelsModal = openLabelsModal;\n    vm.openItemGroupModal = openItemGroupModal;\n    vm.openNewIntrastatModal = openNewIntrastatModal;\n    vm.addAdditionalArticleVariants = addAdditionalArticleVariants;\n    vm.isNewWithItemGroup = isNewWithItemGroup;\n    vm.suppliers = [];\n    vm.loadSuppliers = loadSuppliers;\n    vm.changeToArticleTab = changeToArticleTab;\n    vm.changeToArticleVariantsTab = changeToArticleVariantsTab;\n    vm.changeToSupplierPricesTab = changeToSupplierPricesTab;\n    vm.changeToBarcodesTab = changeToBarcodesTab;\n    vm.changeToStocklocationsTab = changeToStocklocationsTab;\n    vm.changeToPriceListsTab = changeToPriceListsTab;\n    vm.changeToMetaFieldsTab = changeToMetaFieldsTab;\n    vm.loadSupplierPricesGridData = loadSupplierPricesGridData;\n    vm.filterSupplierRowData = filterSupplierRowData;\n    vm.filterArticleVariantData = filterArticleVariantData;\n    vm.calculatePurchasePrice = calculatePurchasePrice;\n    vm.calculateCostPrice = calculateCostPrice;\n    vm.copyToAllVisibleSupplierPrices = copyToAllVisibleSupplierPrices;\n    vm.getStockLocations = getStockLocations;\n    vm.updateAllArticleVariantHeights = updateAllArticleVariantHeights;\n    vm.updateAllArticleVariantLengths = updateAllArticleVariantLengths;\n    vm.updateAllArticleVariantWeights = updateAllArticleVariantWeights;\n    vm.updateAllArticleVariantWidths = updateAllArticleVariantWidths;\n    vm.updateAllArticleVariantMeursingCodes = updateAllArticleVariantMeursingCodes;\n    vm.updateAllIntrastats = updateAllIntrastats;\n    vm.updateAllArticleVariantCollections = updateAllArticleVariantCollections;\n    vm.isSearchedVariant = isSearchedVariant;\n    vm.showPriceListsTab = showPriceListsTab;\n    vm.hasCurrencyConversions = hasCurrencyConversions;\n    vm.productStateGo = productStateGo;\n    vm.metaFieldValues = metaFieldValues;\n    vm.metaFields = metaFields;\n    vm.openColourChangeModal = openColourChangeModal;\n\n    var isAlreadyPersisting = false;\n\n    var unsubEvent = reactEvents.fooBar.subscribe(() => {\n        $scope.fooBar = \"hello world\";\n        $scope.$digest();\n      });\n\n      var unsubSaveMetaFieldsEvent = reactEvents.saveMetaFields.subscribe((fields) => {\n        ProductsApiService.upsertMetaFields(fields).then(function(response) {\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n      });\n\n      var unsubSaveMetaFieldValuesEvent = reactEvents.saveMetaFieldValues.subscribe((fields) => {\n        ProductsApiService.upsertMetaFieldValues(article.id, fields).then(function(response) {\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n      });\n   \n      $scope.$on('$destroy', () => {\n        unsubEvent();\n        unsubSaveMetaFieldsEvent();\n        unsubSaveMetaFieldValuesEvent();\n      });\n\n    activate();\n\n    function activate() {\n        if (vm.isNewArticle) {\n            vm.selectedArticleCopy.articleVariants = [];\n            vm.selectedArticleCopy.isVariant = true;\n            vm.selectedArticleCopy.isActive = true;\n\n            var currentArticleCollection = _.find(vm.articleCollections, function(articleCollection) { return articleCollection.isCurrent; });\n            if (currentArticleCollection) {\n                vm.selectedArticleCopy.articleCollection = currentArticleCollection;\n            }\n\n            $scope.$watch(function() { return vm.selectedArticleCopy.itemGroup; }, function(newValue, oldValue) {\n                if (newValue !== oldValue) {\n                    if (vm.selectedArticleCopy.itemGroup && vm.selectedArticleCopy.itemGroup.brand && vm.selectedArticleCopy.itemGroup.brand.company) {\n                        vm.selectedArticleCopy.preferredSupplier = vm.selectedArticleCopy.itemGroup.brand.company;\n\n                        vm.loadSuppliers();\n\n                        if (!_.find(vm.selectedArticleCopy.suppliers, function(c) { return c.id === vm.selectedArticleCopy.preferredSupplier.id; })) {\n                            vm.selectedArticleCopy.suppliers = [];\n                            vm.selectedArticleCopy.suppliers.push(vm.selectedArticleCopy.preferredSupplier);\n                        }\n                    }\n                }\n            });\n        }\n        if (!vm.isNewArticle) {\n            var articleVariants = vm.selectedArticleCopy.articleVariants;\n            if (vm.filter) {\n                if (articleVariants) {\n                    if (!vm.searchedVariant) {\n                        vm.searchedVariant = _.find(articleVariants, {'externalId': vm.filter});\n                    }\n                    if (!vm.searchedVariant) {\n                        vm.searchedBarcode = angular.copy(vm.filter);\n                        vm.searchedVariant = _.find(articleVariants, function(bc) {\n                            return _.find(bc.articleVariantBarcodes, function(bc2) {\n                                return String(bc2.barcode) === vm.filter;\n                            });\n                        });\n                        vm.searchedBarcode = angular.copy(vm.filter);\n                    }\n                }\n            }\n\n            initArticleVariantBarcodes();\n        }\n        if (!_.has(vm.selectedArticle, 'descriptionShort')) {\n            vm.selectedArticle['descriptionShort'] = \"\";\n        }\n\n        if (!vm.selectedArticle.articleType) {\n            vm.selectedArticle.articleType = {};\n            vm.selectedArticleCopy.articleType = {};\n        }\n        if (!vm.selectedArticle.intrastat) {\n            vm.selectedArticle.intrastat = {};\n            vm.selectedArticleCopy.intrastat = {};\n        }\n\n        resolveIntrastats();\n\n        resolveAccounts();\n\n        loadMainGroupData(vm.selectedArticleCopy.itemGroup);\n        initSupplierPricesGrid();\n\n        $scope.$watch(function () { return vm.selectedArticleCopy.preferredSupplier; },\n        function () {\n            if (vm.selectedArticleCopy.preferredSupplier && !_.find(vm.selectedArticleCopy.suppliers, function(c) { return c.id === vm.selectedArticleCopy.preferredSupplier.id; })) {\n                vm.selectedArticleCopy.suppliers.push(vm.selectedArticleCopy.preferredSupplier);\n            }\n        });\n\n        $scope.$watch(function () { return vm.selectedArticleCopy.isActive; },\n            function () {\n                if (vm.selectedArticleCopy !== undefined && !vm.selectedArticleCopy.isActive && vm.isEditing) {\n                    ToasterService.showWarning($translate.instant('article.changetoinactivewarning'));\n                }\n            });\n        $scope.$watch('vm.selectedArticleCopy.subCategory', function() {\n                resolveIntrastats();\n        });\n        $scope.$watch('vm.selectedArticleCopy.intrastat', function(newValue, oldValue) {\n            if (newValue !== oldValue) { updateAllIntrastats(oldValue, newValue); }\n        });\n        $scope.$watch('vm.selectedArticleCopy.articleCollection', function(newValue, oldValue) {\n            if (newValue !== oldValue) { updateAllArticleVariantCollections(oldValue, newValue); }\n        });\n\n        $scope.$watch('vm.selectedArticleCopy.articleVariants.length', function(newValue, oldValue) {\n            if (newValue !== oldValue) {\n                initSupplierPricesGrid();\n            }\n        });\n\n        // var currentUser = null;\n        // AuthService.getUser().then(function(response) {\n        //     currentUser = response;\n        //     var tsi = currentUser.tenant.tenantStringIdentifier.toLowerCase();\n        //     if (vm.tenantsWithStocklocationTab.indexOf(tsi) !== -1) {\n        //         vm.showStocklocationsTab = true;\n        //     }\n        //     if (vm.tenantsWithoutPriceListTab.indexOf(tsi) > -1) {\n        //         vm.showPriceListsTab = false;\n        //     }\n        // });\n\n        vm.showStocklocationsTab = hasSimpleWms;\n        // ProductsApiService.hasSimpleWms().then(function(response) {\n        //     vm.showStocklocationsTab = response;\n        // });\n\n        ProductsApiService.getLocations().then(function(response) {\n            vm.locations = response;\n            vm.locations.unshift({ id: 0, locationName: \"Välj ett lager\", locationNumber: null });\n            vm.location = vm.locations[0];\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        //Always preload list of suppliers\n        loadSuppliers();\n    }\n\n    function openColourChangeModal(articleId) {\n        console.log(\"Selected articleId: \", articleId);\n        colourChangeDialogService.showDialog(articleId);\n    }\n\n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined) {\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read) {\n            return false\n        }\n\n        return true\n    }\n    \n    function showPriceListsTab() {\n        return ProductService.canReadPrices(vm.selectedArticleCopy.links);\n    }\n    function loadPrices() {\n        ProductsApiService.getProductPrices(vm.selectedArticleCopy.id).then(function(response) {\n            vm.productPrices = response.variants;\n            firstTimeLoadOfPrices = false;\n\n            vm.priceLists = [];\n            _.forEach(vm.productPrices, function(pp) {\n                _.forEach(pp.priceListItems, function(pl) {\n                    if (!_.find(vm.priceLists, function(o) { return o.priceListId === pl.priceListId; })) {\n                        vm.priceLists.push({\n                            currencyCode: pl.currencyCode,\n                            priceListId: pl.priceListId,\n                            priceListName: pl.priceListName,\n                            priceListCode: pl.priceListCode,\n                            salesChannel: pl.salesChannel\n                        });\n                    }\n                });\n            });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n    }\n\n    function getStockLocations() {\n        vm.stocklocations = [];\n        if (vm.location.locationNumber != null) {\n            // Get stocklocations from SimpleWMS\n            ProductsApiService.getProductStockLocations(vm.location.locationNumber, vm.selectedArticle.id).then(function(response) {\n                if (response.items.length > 0) {\n                    var stocklocations = [];\n                    for (var i = 0; i < response.items.length; i++) {\n                        var item = response.items[i];\n                        stocklocations[item.variantId] = [];\n                        stocklocations[item.variantId]['stocklocation'] = item.storageLocations.join(', ');\n                        stocklocations[item.variantId]['isphotographed'] = item.isPhotographed;\n                    }\n                    vm.stocklocations = stocklocations;\n                }\n            }, function(error) {\n                console.log('Error fetching stock locations', error.message);\n                ToasterService.showError(error.message);\n            });\n        }\n    }\n\n    function loadSuppliers() {\n        if (vm.selectedArticleCopy.itemGroup === undefined) { return; }\n\n        ProductsApiService.getSuppliers(vm.selectedArticleCopy.itemGroup.brand.id).then(function(response) {\n            var supplierList = response.items.map(function(item) { return { id: item.id, companyName: item.name }; });\n            vm.suppliers = supplierList;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n    }\n\n    function isSearchedVariant(articleVariant) {\n        if (!vm.searchedVariant || !articleVariant) {\n            return false;\n        }\n        if (vm.searchedVariant.id !== articleVariant.id) {\n            return false;\n        }\n        return true;\n    }\n\n    function updateAllArticleVariantHeights(origValue) {\n        _.forEach(vm.selectedArticleCopy.articleVariants, function(articleVariant) {\n            if (articleVariant.variantHeight === null) { articleVariant.variantHeight = 0; }\n            if (articleVariant.variantHeight === origValue) {\n                if (vm.selectedArticleCopy.productHeight === null) { vm.selectedArticleCopy.productHeight = 0; }\n                articleVariant.variantHeight = vm.selectedArticleCopy.productHeight;\n            }\n        });\n    }\n    function updateAllArticleVariantLengths(origValue) {\n        _.forEach(vm.selectedArticleCopy.articleVariants, function(articleVariant) {\n            if (articleVariant.variantLength === null) { articleVariant.variantLength = 0; }\n            if (articleVariant.variantLength === origValue) {\n                if (vm.selectedArticleCopy.productLength === null) { vm.selectedArticleCopy.productLength = 0; }\n                articleVariant.variantLength = vm.selectedArticleCopy.productLength;\n            }\n        });\n    }\n    function updateAllArticleVariantWeights(origValue) {\n        _.forEach(vm.selectedArticleCopy.articleVariants, function(articleVariant) {\n            if (articleVariant.variantWeight === null) { articleVariant.variantWeight = 0; }\n            if (articleVariant.variantWeight === origValue) {\n                if (vm.selectedArticleCopy.productWeight === null) { vm.selectedArticleCopy.productWeight = 0; }\n                articleVariant.variantWeight = vm.selectedArticleCopy.productWeight;\n            }\n        });\n    }\n    function updateAllArticleVariantWidths(origValue) {\n        _.forEach(vm.selectedArticleCopy.articleVariants, function(articleVariant) {\n            if (articleVariant.variantWidth === null) { articleVariant.variantWidth = 0; }\n            if (articleVariant.variantWidth === origValue) {\n                if (vm.selectedArticleCopy.productWidth === null) { vm.selectedArticleCopy.productWidth = 0; }\n                articleVariant.variantWidth = vm.selectedArticleCopy.productWidth;\n            }\n        });\n    }\n    function updateAllArticleVariantMeursingCodes() {\n        _.forEach(vm.selectedArticleCopy.articleVariants, function(articleVariant) {\n            if (articleVariant.meursingCode === null) { articleVariant.meursingCode = ''; }\n            articleVariant.meursingCode = vm.meursingCode;\n        });\n    }\n    function updateAllIntrastats(origValue, newValue) {\n        _.forEach(vm.selectedArticleCopy.articleVariants, function(articleVariant) {\n            if (!articleVariant.intrastat || articleVariant.intrastat.code === origValue.code) {\n                articleVariant.intrastat = angular.copy(newValue);\n            }\n        });\n    }\n\n    function updateAllArticleVariantCollections(origValue, newValue) {\n        _.forEach(vm.selectedArticleCopy.articleVariants, function (articleVariant) {\n            if (articleVariant.articleCollection && articleVariant.articleCollection.id === origValue.id) {\n                articleVariant.articleCollection = angular.copy(newValue);\n            }\n        });\n    }\n\n    function calculatePurchasePrice(purchasePrice, discountPercent) {\n        var discountAmount = (purchasePrice * discountPercent / 100);\n        return purchasePrice - discountAmount;\n    }\n\n    function calculateCostPrice(purchasePrice, discountPercent, standardCostAddPercent, currencyRate, shippingCost, customsPercent, otherCosts) {\n        var pp = calculatePurchasePrice(purchasePrice, discountPercent);\n        var ppCurrencyConverted = pp * currencyRate;\n        var customsAmount = (ppCurrencyConverted + shippingCost) * (customsPercent / 100);\n        var standardCostAddAmount = (ppCurrencyConverted + shippingCost + customsAmount + otherCosts) * (standardCostAddPercent / 100);\n\n        return ppCurrencyConverted + shippingCost + customsAmount + otherCosts + standardCostAddAmount;\n    }\n\n    function hasCurrencyConversions() {\n        var response = false;\n        _.forEach(vm.supplierRowData, function (supplierRow) {\n            if (vm.defaultCurrency.code !== supplierRow.purchasingCurrency.code) {\n                response = true;\n            }\n        });\n        return response;\n    }\n\n    function initFilters() {\n        vm.selectedSupplierFilter.suppliers = _.uniqBy(angular.copy(vm.selectedArticleCopy.suppliers), 'companyName');\n        vm.selectedSupplierFilter.suppliers.unshift({ id: -1, companyName: $translate.instant('common.all') });\n        vm.selectedSupplierFilter.selectedSupplier = vm.selectedSupplierFilter.suppliers[0];\n\n        vm.selectedArticleVariantFilter.variants1 = _.uniqBy(angular.copy(vm.selectedArticleCopy.articleVariants), 'variantDetail1.variantDetailName');\n        vm.selectedArticleVariantFilter.variants1.unshift({ id: -1, variantDetail1: { id: -1, variantDetailName: $translate.instant('common.all') } });\n        vm.selectedArticleVariantFilter.selectedVariant1 = vm.selectedArticleVariantFilter.variants1[0];\n        vm.selectedSupplierFilter.variants1 = _.uniqBy(angular.copy(vm.selectedArticleCopy.articleVariants), 'variantDetail1.variantDetailName');\n        vm.selectedSupplierFilter.variants1.unshift({ id: -1, variantDetail1: { id: -1, variantDetailName: $translate.instant('common.all') } });\n        vm.selectedSupplierFilter.selectedVariant1 = vm.selectedSupplierFilter.variants1[0];\n\n        vm.selectedArticleVariantFilter.variants2 = _.uniqBy(angular.copy(vm.selectedArticleCopy.articleVariants), 'variantDetail2.variantDetailName');\n        vm.selectedArticleVariantFilter.variants2.unshift({ id: -1, variantDetail2: { id: -1, variantDetailName: $translate.instant('common.all') } });\n        vm.selectedArticleVariantFilter.selectedVariant2 = vm.selectedArticleVariantFilter.variants2[0];\n        vm.selectedSupplierFilter.variants2 = _.uniqBy(angular.copy(vm.selectedArticleCopy.articleVariants), 'variantDetail2.variantDetailName');\n        vm.selectedSupplierFilter.variants2.unshift({ id: -1, variantDetail2: { id: -1, variantDetailName: $translate.instant('common.all') } });\n        vm.selectedSupplierFilter.selectedVariant2 = vm.selectedSupplierFilter.variants2[0];\n    }\n\n    function filterSupplierRowData(row) {\n        return (vm.selectedSupplierFilter.selectedSupplier.id === -1 ||\n                    vm.selectedSupplierFilter.selectedSupplier.id === row.companyId) &&\n               (vm.selectedSupplierFilter.selectedVariant1.id === -1 ||\n                    vm.selectedSupplierFilter.selectedVariant1.variantDetail1.id === row.variantDetail1Id) &&\n               (vm.selectedSupplierFilter.selectedVariant2.id === -1 ||\n                    vm.selectedSupplierFilter.selectedVariant2.variantDetail2.id === row.variantDetail2Id);\n    }\n    function filterArticleVariantData(row) {\n        return (vm.selectedArticleVariantFilter.selectedVariant1.id === -1 ||\n                    vm.selectedArticleVariantFilter.selectedVariant1.variantDetail1.id === row.variantDetail1.id) &&\n               (vm.selectedArticleVariantFilter.selectedVariant2.id === -1 ||\n                    vm.selectedArticleVariantFilter.selectedVariant2.variantDetail2.id === row.variantDetail2.id);\n    }\n\n    function changeToArticleTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.article = true;\n    }\n\n    function changeToArticleVariantsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.articleVariants = true;\n    }\n\n    function changeToSupplierPricesTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.supplierPrices = true;\n    }\n\n    function changeToBarcodesTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.barcodes = true;\n    }\n\n    function changeToStocklocationsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.stocklocations = true;\n    }\n\n    function changeToPriceListsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.priceLists = true;\n        if (firstTimeLoadOfPrices === true) {\n            loadPrices();\n        }\n    }\n\n    function changeToMetaFieldsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.metaFields = true;\n    }\n\n    function setAllTabSelectionsToFalse() {\n        var keys = Object.keys(vm.tabSelection);\n        _.forEach(keys, function(key) {\n            vm.tabSelection[key] = false;\n        });\n    }\n\n    function cancelEdit() {\n        vm.selectedArticleCopy = angular.copy(vm.selectedArticle);\n        initArticleVariantBarcodes();\n        resetSupplierPricesGridWithData();\n        vm.isEditing = false;\n        vm.articleChangeCount++;\n        angularEvents.isEditing.dispatch(false);\n    }\n\n    function initArticleVariantBarcodes() {\n        var articleVariants = vm.selectedArticleCopy.articleVariants;\n        if (articleVariants) {\n            //Add empty article barcodes\n            var sumCountBarcodes = 0;\n            _.forEach(articleVariants, function(artVar) {\n                if (artVar.articleVariantBarcodes && artVar.articleVariantBarcodes.length > sumCountBarcodes) {\n                    sumCountBarcodes = artVar.articleVariantBarcodes.length;\n                }\n            });\n            _.forEach(articleVariants, function(artVar) {\n                artVar.barcodesZerofill = angular.copy(artVar.articleVariantBarcodes);\n                for (var i = 0; i < sumCountBarcodes - artVar.articleVariantBarcodes.length; i++) {\n                    artVar.barcodesZerofill.push({ barcode: '', id: '' });\n                }\n            });\n        }\n    }\n\n    function resolveIntrastats() {\n\n        var intrastats = [];\n\n        if (vm.selectedArticleCopy.itemGroup) {\n\n            var mainGroup = vm.selectedArticleCopy.itemGroup.mainGroup;\n            var subCategory = vm.selectedArticleCopy.subCategory;\n\n            if (mainGroup && mainGroup.intrastats) {\n                intrastats = _.unionBy(intrastats, mainGroup.intrastats, 'id');\n            }\n            if (subCategory && subCategory.intrastats) {\n                intrastats = _.unionBy(intrastats, subCategory.intrastats, 'id');\n            }\n\n            if (!vm.selectedArticleCopy.intrastat ||  _.filter(intrastats, {id: vm.selectedArticleCopy.intrastat.id}).length === 0) {\n                selectDefaultIntrastat();\n            }\n        }\n\n        intrastats.forEach(function(intrastat) {\n            if (intrastat.internalDescription && intrastat.internalDescription.length > 15) {\n                intrastat.internalDescription = intrastat.internalDescription.substr(0, 15) + '...';\n            }\n        }, this);\n\n        vm.intrastats = intrastats;\n    }\n\n    function resolveAccounts() {\n        if (vm.isNewArticle && vm.selectedArticleCopy.itemGroup) {\n            var mainGroup = vm.selectedArticleCopy.itemGroup.mainGroup;\n\n            vm.selectedArticleCopy.discountAccount = mainGroup.discountAccount;\n            vm.selectedArticleCopy.salesAccount = mainGroup.salesAccount;\n        }\n    }\n\n    function startEdit() {\n        vm.isEditing = true;\n\n        angularEvents.isEditing.dispatch(true);\n\n        //Make sure the preferredSupplier always is a selected supplier\n        if (vm.selectedArticleCopy.preferredSupplier !== undefined) {\n            var prefSupp = _.filter(vm.selectedArticleCopy.suppliers, { id: vm.selectedArticleCopy.preferredSupplier.id });\n\n            if (vm.selectedArticleCopy.suppliers.length === 0 || prefSupp.length === 0) {\n                vm.selectedArticleCopy.suppliers.push(vm.selectedArticleCopy.preferredSupplier);\n            }\n        }\n\n        if (!vm.isNewArticle) {\n            resetSupplierPricesGridWithData();\n\n            var itemGroup = vm.selectedArticleCopy.itemGroup;\n            ProductsApiService.getVariant(itemGroup.mainGroup.variant2.id).then(function (variant) {\n                vm.variant2 = variant;\n            });\n\n        }\n\n        if (vm.isNewArticle) {\n            resolveAccounts();\n        }\n    }\n\n    function getMargin() {\n        var vatMultiplier = vm.selectedArticleCopy.vat ? 1 / (vm.selectedArticleCopy.vat.vatRate + 1) : 1;\n        var salesPrice = vm.selectedArticleCopy.salesPrice || 0;\n        var purchaseCost = vm.selectedArticleCopy.purchaseCost || 0;\n\n        var brv = ((salesPrice * vatMultiplier) - purchaseCost) / (salesPrice * vatMultiplier);\n\n        if ((!salesPrice && !purchaseCost) || !salesPrice) {\n            return 0;\n        }\n\n        return brv.toFixed(2);\n    }\n\n    function save() {\n        angularEvents.saveArticle.dispatch();\n        angularEvents.isEditing.dispatch(false);\n        if (vm.isNewArticle) {\n            return saveNewArticle();\n        } else {\n            return updateArticle();\n        }\n    }\n\n    function updateArticle() {\n        if (isAlreadyPersisting) { return; }\n        isAlreadyPersisting = true;\n\n        var deferred = $q.defer();\n        vm.validationErrors = [];\n\n        _.forEach(vm.selectedArticleCopy.articleVariants, function (articleVariant) {\n            if (articleVariant.salesPrice === \"\") {\n                articleVariant.salesPrice = 0;\n            }\n            if (articleVariant.purchaseCost === \"\") {\n                articleVariant.purchaseCost = 0;\n            }\n        });\n\n        var fields = [\n            'salesPrice',\n            'purchaseCost',\n            'subCategory',\n            'alternativeArticleNumber',\n            'articleCollection',\n            'articleVariants',\n            'articleName',\n            'vat',\n            'descriptionShort',\n            'descriptionLong',\n            'isCurrent',\n            'previousPrice',\n            'articleType',\n            'salesChannels',\n            'isActive',\n            'intrastat',\n            'department',\n            'countryOfOrigin',\n            'productLength',\n            'productWidth',\n            'productHeight',\n            'productWeight',\n            'minPurchaseQty',\n            'preferredSupplier',\n            'suppliers',\n            'articleClass',\n            'discountAccount',\n            'salesAccount',\n            'storage',\n            'itemGroup',\n            'variantGroup2'\n        ];\n\n        _.forEach(fields, function (field) {\n            if (article[field] === undefined) {\n                article[field] = null;\n            }\n        });\n\n        var changedData = HelperService.getChangedData(article, vm.selectedArticleCopy, fields);\n\n        if (!_.isEmpty(changedData)) {\n            loadSpinnerService.start('mainSpinner');\n            ProductsApiService.updateProduct(article.id, changedData).then(function (response) {\n                vm.selectedArticleCopy = angular.copy(response);\n                vm.selectedArticle = angular.copy(response);\n                article = angular.copy(response);\n\n                vm.supplierRowData = loadSupplierPricesGridData();\n                initFilters();\n                initArticleVariantBarcodes();\n\n                vm.articleChangeCount++;\n\n                vm.isEditing = false;\n                deferred.resolve();\n            }, function (error) {\n                deferred.resolve(\"\");\n                if (error.errors) {\n                    vm.validationErrors = error.errors;\n                }\n                ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n            }).finally(function () {\n                loadSpinnerService.stop('mainSpinner');\n                isAlreadyPersisting = false;\n            });\n        } else {\n            deferred.resolve();\n            isAlreadyPersisting = false;\n        }\n\n        return deferred.promise;\n    }\n\n    function saveNewArticle() {\n        if (isAlreadyPersisting) { return; }\n        isAlreadyPersisting = true;\n\n        var deferred = $q.defer();\n        vm.validationErrors = [];\n        loadSpinnerService.start('mainSpinner');\n        if (!vm.selectedArticleCopy.isVariant) {\n            vm.selectedArticleCopy.articleVariants = [\n                {\n                    articleCollection: vm.selectedArticleCopy.articleCollection,\n                    salesPrice: vm.selectedArticleCopy.salesPrice,\n                    previousPrice: vm.selectedArticleCopy.previousPrice,\n                    purchaseCost: vm.selectedArticleCopy.purchaseCost,\n                    variantDetail1: { variantDetailName: \"--\" },\n                    variantDetail2: { variantDetailName: \"--\" },\n                    supplierPrices: vm.selectedArticleCopy.supplierPrices\n                }\n            ];\n        }\n        _.forEach(vm.selectedArticleCopy.articleVariants, function (articleVariant) {\n            if (articleVariant.salesPrice === \"\") {\n                articleVariant.salesPrice = 0;\n            }\n            if (articleVariant.purchaseCost === \"\") {\n                articleVariant.purchaseCost = 0;\n            }\n        });\n\n        ProductsApiService.createProduct(vm.selectedArticleCopy).then(function (response) {\n            vm.selectedArticleCopy = angular.copy(response);\n            vm.selectedArticle = angular.copy(response);\n            article = angular.copy(response);\n\n            vm.supplierRowData = loadSupplierPricesGridData();\n            initFilters();\n            initArticleVariantBarcodes();\n\n            vm.articleChangeCount++;\n\n            $state.go('product.articles.article', { articleId: response.id });\n        }, function (error) {\n            deferred.resolve(\"\");\n            if (error.errors) {\n                vm.validationErrors = error.errors;\n            }\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n            isAlreadyPersisting = false;\n        });\n        return deferred.promise;\n    }\n\n    function changeItemGroup(itemGroup) {\n        if (itemGroup) {\n            vm.selectedArticleCopy.subCategory = {};\n            loadItemGroupData(itemGroup);\n        }\n    }\n\n    function loadItemGroupData(itemGroup) {\n        ProductsApiService.getItemGroup(itemGroup.id).then(function (result) {\n            vm.selectedArticleCopy.itemGroup = result;\n\n            loadMainGroupData(result, true);\n        });\n    }\n    function loadMainGroupData(itemGroup, setDefaults) {\n        if (itemGroup) {\n            ProductsApiService.getMainGroup(itemGroup.mainGroup.id).then(function (result) {\n                vm.selectedArticleCopy.itemGroup.mainGroup = result;\n\n                vm.availableSubCategories = _.sortBy(result.subCategories, function (subCategory) {\n                    return subCategory.subCategoryCode;\n                });\n\n                vm.availableDepartments = _.sortBy(result.departments, function (department) {\n                    return department.departmentCode;\n                });\n                resolveIntrastats();\n\n                if (setDefaults) {\n                    selectDefaultDepartment(result.departments);\n                    selectDefaultSubCatgory(result.subCategories);\n                    selectDefaultAccounts(result);\n                }\n\n                ProductsApiService.getVariant(result.variant2.id).then(function (variant) {\n                    vm.variant2 = variant;\n                    selectDefaultVat();\n                    selectDefaultIntrastat();\n                    selectDefaultVariantGroup();\n                    selecteDefaultIsVariant();\n                    selectDefaultSalechannels(itemGroup);\n                });\n            });\n        }\n    }\n\n    function changeVariantGroup() {\n    }\n    // Init SupplierPrice\n    function initSupplierPricesGrid() {\n        vm.supplierRowData = loadSupplierPricesGridData();\n        initFilters();\n        if(vm.supplierRowData === undefined || vm.supplierRowData.length === 0){\n            vm.supplierRowData = initSupplierPricesGridData();\n        }\n    \n    }\n\n    function initSupplierPricesGridData(){\n\n        var supplierPricesRowdata = [];\n        _.forEach(vm.selectedArticleCopy.articleVariants,function(artVar){\n            _.forEach(artVar.supplierPrices,function(supplierPriceRow){\n                supplierPricesRowdata.push(supplierPriceRow);          \n             })          \n        })\n        if(supplierPricesRowdata === undefined){\n            supplierPricesRowdata = [];\n        }\n\n        return supplierPricesRowdata;\n    }\n    function loadSupplierPricesGridData() {\n        var rows = [];\n\n        var companyRows = _.sortBy(vm.selectedArticleCopy.suppliers);\n        \n        _.forEach(companyRows, function(comp) {\n            _.forEach(vm.selectedArticleCopy.articleVariants, function (variantRowValues) {\n                if (variantRowValues.supplierPrices === undefined) {\n                    variantRowValues.supplierPrices = [];\n                }\n                var filteredRows = _.filter(variantRowValues.supplierPrices, { companyId: comp.id });\n                if (filteredRows.length === 0) {\n                    var newRow = {};\n                    newRow.articleVariantId = variantRowValues.id;\n                    newRow.alternativeProductNumber = \"\";\n                    newRow.purchaseCost = 0;\n                    newRow.discountPercent = 0;\n                    newRow.standardCostAddPercent = 0;\n                    newRow.companyId = comp.id;\n                    newRow.externalId = variantRowValues.externalId;\n                    newRow.variantDetail1Id = variantRowValues.variantDetail1.id;\n                    newRow.variantDetail1Name = variantRowValues.variantDetail1.variantDetailName;\n                    newRow.variantDetail2Id = variantRowValues.variantDetail2.id;\n                    newRow.variantDetail2Name = variantRowValues.variantDetail2.variantDetailName;\n                    newRow.companyName = comp.companyName;\n                    if (comp.purchasingCurrency) {\n                        newRow.purchasingCurrency = comp.purchasingCurrency;\n                    } else {\n                        newRow.purchasingCurrency = defaultCurrency;\n                    }\n                    variantRowValues.supplierPrices.push(newRow);\n                    rows.push(newRow);\n                } else {\n                    var existingRow = filteredRows[0];\n                    existingRow.articleVariantId = variantRowValues.id;\n                    existingRow.companyId = comp.id;\n                    existingRow.externalId = variantRowValues.externalId;\n                    existingRow.variantDetail1Name = variantRowValues.variantDetail1.variantDetailName;\n                    existingRow.variantDetail2Name = variantRowValues.variantDetail2.variantDetailName;\n                    existingRow.companyName = comp.companyName;\n                    if (!existingRow.purchasingCurrency) {\n                        if (comp.purchasingCurrency) {\n                            existingRow.purchasingCurrency = comp.purchasingCurrency;\n                        } else {\n                            existingRow.purchasingCurrency = defaultCurrency;\n                        }\n                    }\n                    rows.push(existingRow);\n                }\n            });\n        });\n\n        return rows;\n    }\n\n    function resetSupplierPricesGridWithData() {\n        vm.supplierRowData = loadSupplierPricesGridData();\n        initFilters();\n    }\n\n    function selectDefaultVat() {\n        if (vm.selectedArticleCopy.itemGroup && vm.selectedArticleCopy.itemGroup.vat) {\n            var vatId = vm.selectedArticleCopy.itemGroup.vat.id;\n            var vat = _.find(vm.vats, function (vat) {\n                return vat.id === vatId;\n            });\n            vm.selectedArticleCopy.vat = vat;\n        }\n    }\n\n    function selectDefaultSalechannels(itemGroup) {\n        if (vm.isNewArticle) {\n            loadSpinnerService.start('mainSpinner', { message: $translate.instant('article.checkingSalesChannels') });\n            ProductsApiService.getItemGroup(itemGroup.id).then(function(response) {\n                itemGroup = response;\n\n                var salesChannels = _.clone(vm.salesChannels);\n\n                if (itemGroup.mainGroup && itemGroup.mainGroup.salesChannels && itemGroup.mainGroup.salesChannels.length > 0) {\n                    salesChannels = _.intersectionBy(salesChannels, itemGroup.mainGroup.salesChannels, 'id');\n                }\n\n                if (itemGroup.brand && itemGroup.brand.salesChannels && itemGroup.brand.salesChannels.length > 0) {\n                    salesChannels = _.intersectionBy(salesChannels, itemGroup.brand.salesChannels, 'id');\n                }\n\n                vm.selectedArticleCopy.salesChannels = salesChannels;\n            }, function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function () {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function selectDefaultDepartment(departments) {\n        if (departments.length === 1) {\n            vm.selectedArticleCopy.department = departments[0];\n        }\n    }\n\n    function selectDefaultSubCatgory(subCategories) {\n        if (subCategories.length === 1) {\n            vm.selectedArticleCopy.subCategory = subCategories[0];\n        }\n    }\n\n    function selectDefaultAccounts(mainGroup) {\n        if (mainGroup.discountAccount) {\n            vm.selectedArticleCopy.discountAccount = mainGroup.discountAccount;\n        }\n        if (mainGroup.salesAccount) {\n            vm.selectedArticleCopy.salesAccount = mainGroup.salesAccount;\n        }\n    }\n\n    function selecteDefaultIsVariant() {\n        if (vm.selectedArticleCopy.itemGroup && vm.selectedArticleCopy.itemGroup.mainGroup) {\n            vm.selectedArticleCopy.isVariant = vm.selectedArticleCopy.itemGroup.mainGroup.isVariant;\n        }\n    }\n\n    function selectDefaultIntrastat() {\n        if (!vm.isEditing) {\n            return;\n        }\n\n        //If exists in both\n        if (vm.selectedArticleCopy.itemGroup.mainGroup && vm.selectedArticleCopy.subCategory) {\n            var intrastats = _.intersectionBy(vm.selectedArticleCopy.itemGroup.mainGroup.intrastats, vm.selectedArticleCopy.subCategory.intrastats, 'id');\n            if (intrastats.length === 1) {\n                vm.selectedArticleCopy.intrastat = intrastats[0];\n                return;\n            }\n        }\n\n        //If only one in maingroup\n        if (vm.selectedArticleCopy.itemGroup.mainGroup && vm.selectedArticleCopy.itemGroup.mainGroup.intrastats && vm.selectedArticleCopy.itemGroup.mainGroup.intrastats.length === 1) {\n            vm.selectedArticleCopy.intrastat = vm.selectedArticleCopy.itemGroup.mainGroup.intrastats[0];\n            return;\n        }\n\n        //If only one in subCategory\n        if (vm.selectedArticleCopy.subCategory && vm.selectedArticleCopy.subCategory.intrastats && vm.selectedArticleCopy.subCategory.intrastats.length === 1) {\n            vm.selectedArticleCopy.intrastat = vm.selectedArticleCopy.subCategory.intrastats[0];\n            return;\n        }\n    }\n\n    function selectDefaultVariantGroup() {\n        if (vm.selectedArticleCopy.itemGroup.variantGroup2 !== undefined && vm.selectedArticleCopy.itemGroup.variantGroup2 !== null) {\n            var groupId = vm.selectedArticleCopy.itemGroup.variantGroup2.id;\n            var group = _.find(vm.variant2.variantGroups, function (variantGroup) {\n                return variantGroup.id === groupId;\n            });\n            vm.selectedArticleCopy.variantGroup2 = group;\n            changeVariantGroup();\n        }\n    }\n\n    function downloadArticleLabels() {\n        ProductsApiService.downloadArticleLabels(vm.selectedArticle.id);\n    }\n\n    function openLabelsModal() {\n        ArticleLabelsPrintDialogService.showDialog(vm.selectedArticle.id);\n    }\n\n    function openItemGroupModal() {\n        ArticleChangeItemGroupDialogService.showDialog(vm.selectedArticle.id, itemGroups).then(function(response){\n            if(response)\n                $state.go($state.current.name,{},{reload: $state.current.name});\n        });\n    }\n\n    function openNewIntrastatModal(articleVariant) {\n        var articleVariantId = null;\n        if (articleVariant) { articleVariantId = articleVariant.id; }\n        ArticleNewIntrastatDialogService.showDialog(vm.selectedArticleCopy.id, articleVariantId).then(function(response) {\n            if (response) {\n                vm.selectedArticleCopy.itemGroup.mainGroup.intrastats = response.itemGroup.mainGroup.intrastats;\n                if (response.articleVariants.length === 1) {\n                     articleVariant.intrastat = response.articleVariants[0].intrastat;\n                } else {\n                    vm.selectedArticleCopy.intrastat = response.intrastat;\n                }\n            }\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n        });\n    }\n\n    function addAdditionalArticleVariants() {\n        var newArticleVariants = createMissingArticleVariants(vm.selectedArticleCopy.variantGroup2, vm.selectedArticleCopy.articleVariants);\n\n        _.forEach(newArticleVariants, function (articleVariant) {\n            vm.selectedArticleCopy.articleVariants.push(articleVariant);\n        });\n\n        vm.articleChangeCount++;\n    }\n\n    function createMissingArticleVariants(variantGroup, articleVariants) {\n        var newArticleVariants = [];\n\n        var allVariant1Details = [];\n        var allVariant2Details = variantGroup.variantDetails;\n        var missingVariantCombinations = [];\n\n        _.forEach(articleVariants, function(av) {\n            if (!_.find(allVariant1Details, function(vd1) { return vd1.id === av.variantDetail1.id; })) {\n                allVariant1Details.push(av.variantDetail1);\n            }\n        });\n\n        _.forEach(allVariant1Details, function(vd1) {\n            _.forEach(allVariant2Details, function(vd2) {\n                if (!_.find(articleVariants, function(av) { return av.variantDetail1.id === vd1.id && av.variantDetail2.id === vd2.id; })) {\n                    missingVariantCombinations.push({variantDetail1: vd1, variantDetail2: vd2});\n                }\n            });\n        });\n\n        _.forEach(missingVariantCombinations, function(vc) {\n            var newArticleVariant = {};\n            newArticleVariant['articleCollection'] = {};\n            newArticleVariant['articleVariantBarcodes'] = [];\n            newArticleVariant['purchaseCost'] = 0;\n            newArticleVariant['salesPrice'] = 0;\n            newArticleVariant['variantDetail1'] = vc.variantDetail1;\n            newArticleVariant['variantDetail2'] = vc.variantDetail2;\n            newArticleVariant['articleVariantPrices'] = [];\n            newArticleVariants.push(newArticleVariant);\n        });\n\n        return newArticleVariants;\n    }\n\n    function copyToAllVisibleSupplierPrices(sourceRow) {\n        _.forEach(vm.supplierRowData, function(targetRow) {\n            if (!filterSupplierRowData(targetRow) || sourceRow === targetRow) {\n                return;\n            }\n            targetRow.purchasingCurrency = sourceRow.purchasingCurrency;\n            targetRow.purchasePrice = sourceRow.purchasePrice;\n            targetRow.discountPercent = sourceRow.discountPercent;\n            targetRow.standardCostAddPercent = sourceRow.standardCostAddPercent;\n\n            targetRow.shippingCost = sourceRow.shippingCost;\n            targetRow.customsPercent = sourceRow.customsPercent;\n            targetRow.otherCosts = sourceRow.otherCosts;\n\n        });\n    }\n\n    function isNewWithItemGroup() {\n        return !vm.selectedArticleCopy || !vm.selectedArticleCopy.itemGroup || !vm.selectedArticleCopy.itemGroup.id || vm.selectedArticleCopy.itemGroup.id <= 0;\n    }\n\n    function productStateGo(stringState) {\n        $state.go(stringState, \n            {\n                articleId: vm.selectedArticle.id,\n                filter: searchTerms.filter,\n                currentPage: searchTerms.currentPage,\n                pageSize: searchTerms.pageSize,\n                inactive: searchTerms.inactive,\n                match: searchTerms.match\n            },\n            {reload:true}\n        );\n    }\n}\n\nangular\n    .module('product.articles.article', [])\n    .config(stateConfig)\n    .controller('ArticleController', ArticleController);\n","angular.module('components.caArticleVariantsGrid', [])\n    .component('caArticleVariantsGrid', {\n        templateUrl: 'main/product/articles/article/components/articlevariantsgrid.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            article: '=',\n            articleCollections: '<',\n            variant2: '<',\n            disabled: '<',\n            isEditing: '<',\n            articleChangeCount: '=',\n            searchedVariant: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $rootScope, ArticleAddNewArticleVariantDialogService, colourChangeDialogService, $state, FeatureSwitchService) {\n    var vm = this;\n\n    vm.variantDetail1s = [];\n    vm.variantDetail2s = [];\n    vm.gridData = [];\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n\n    vm.newColorName = '';\n    var errorColor = 'salmon';\n    vm.canAddNewColor = true;\n\n    vm.gridEditTypes = loadGridEditTypes();\n   \n    vm.selectedGridEditType = vm.gridEditTypes[0];\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.changeGridEditType = changeGridEditType;\n    vm.getNewColorInputStyle = getNewColorInputStyle;\n    vm.isSearchedVariant = isSearchedVariant;\n    vm.updateVariant1 = updateVariant1;\n    vm.getVariant1EditStyle = getVariant1EditStyle;\n    vm.hasClaim = havePurchaseCostClaim;\n    vm.openAddArticleVariantDialog = openAddArticleVariantDialog;\n\n    vm.isAllowedToChangeColoursOnProducts = false;\n    vm.openColourChangeModal = openColourChangeModal;\n\n    function onInit() {\n        $scope.$watch(function() { return vm.article; }, function(newValue, oldValue) {\n            constructGridData();\n        });\n        $scope.$watch(function() { return vm.article.articleVariants.length; }, function(newValue, oldValue) {\n            constructGridData();\n        });\n        $scope.$watch(function () { return vm.isEditing; }, function (newValue, oldValue) {\n            //Make sure all VariantDetail1 for this color is updated to the new variant name\n            if (!newValue) {\n                _.forEach(vm.gridData, function(articleVariantArray) {\n                    if (articleVariantArray.length > 0) {\n                        articleVariantArray[0].variantDetail1.isEditing = false;\n                    }\n                });\n            }\n        });\n\n        FeatureSwitchService.isAllowedToChangeColoursOnProducts().then(function(response) {\n            vm.isAllowedToChangeColoursOnProducts = response;\n        }, function(error) {});\n    }\n    function onChanges(changes) {\n\n    }\n    function onDestroy() {\n\n    }\n\n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read){\n            return false\n        }\n\n        return true\n    }\n\n    function loadGridEditTypes(){\n        var gridEditTypes = [\n             { translationKey: 'article.salesprice', value: 'salesPrice', dataType: 'number' },\n             { translationKey: 'article.purchasecost', value: 'purchaseCost', dataType: 'number' },\n             { translationKey: 'article.externalid', value: 'externalId', dataType: 'disabled'},\n             //{ translationKey: 'article.barcode', value: 'barcode', dataType: 'disabled'},\n             { translationKey: 'article.iscurrent', value: 'isCurrent', dataType: 'boolean' },\n             { translationKey: 'article.previousprice', value: 'previousPrice', dataType:'number' },\n             { translationKey: 'article.articlecollection', value: 'articleCollection', dataType:'articleCollection' },\n             { translationKey: 'article.salesColour', value: 'salesColour', dataType:'text' }\n         ];\n\n \n         if(!havePurchaseCostClaim()){\n             gridEditTypes = gridEditTypes.filter(g => g.value !== \"purchaseCost\");\n         }\n \n         return gridEditTypes;\n     }\n\n    function isSearchedVariant(articleVariant) {\n        if (!vm.searchedVariant || !articleVariant) {\n            return false;\n        }\n        if (vm.searchedVariant.id !== articleVariant.id) {\n            return false;\n        }\n        return true;\n    }\n\n    function constructGridData() {\n        populateVariantDetailsArrays();\n\n        var grouped = _.groupBy(vm.article.articleVariants, function(articleVariant) {\n            return articleVariant.variantDetail1.variantDetailName;\n        });\n\n        vm.gridData = [];\n\n        var keys = Object.keys(grouped);\n\n        _.forEach(keys, function(key) {\n            var artVars = grouped[key];\n            _.orderBy(artVars, function(artVar) { return artVar.variantDetail2.sortOrder; });\n\n            var currentColorArray = [];\n\n            _.forEach(vm.variantDetail2s, function(varDet2) {\n                var articleVariant = _.find(artVars, function(artVar) { return artVar.variantDetail2.id === varDet2.id; });\n                if (articleVariant === undefined) {\n                    // If the articleVariant for the cell does not exist, construct a dummy element representing it instead.\n                    articleVariant = { id:0, isGeneratedArticleVariant: true, variantDetail2: varDet2, variantDetail1: { variantDetailName: key }};\n                }\n                currentColorArray.push(articleVariant);\n            });\n\n            _.orderBy(currentColorArray, function(artVar) { return artVar.variantDetail2.sortOrder; });\n            vm.gridData.push(currentColorArray);\n        });\n    }\n\n    function setCanAddNewColor() {\n        populateVariantDetailsArrays();\n        var retVal = false;\n        var newValue = vm.newColorName;\n\n        if (newValue === undefined || newValue.trim().length === 0) { vm.canAddNewColor = false; return; }\n\n        if (vm.variantDetail2s.length === 0) {\n            _.forEach(vm.article.variantGroup2.variantDetails, function(varDet2) {\n                if (retVal) { return false; }\n                var alreadyExistingVariant = _.find(vm.article.articleVariants, function(articleVariant) {\n                    return normalizeString(articleVariant.variantDetail1.variantDetailName).toLowerCase() === normalizeString(newValue).toLowerCase() &&\n                        articleVariant.variantDetail2.variantDetailName === varDet2.variantDetailName;\n                });\n                if (alreadyExistingVariant === undefined) {\n                    retVal = true;\n                } else {\n                    retVal = false;\n                }\n            });\n        } else {\n            _.forEach(vm.variantDetail2s, function(varDet2) {\n                if (retVal) { return false; }\n                var alreadyExistingVariant = _.find(vm.article.articleVariants, function(articleVariant) {\n                    return normalizeString(articleVariant.variantDetail1.variantDetailName).toLowerCase() === normalizeString(newValue).toLowerCase() &&\n                        articleVariant.variantDetail2.variantDetailName === varDet2.variantDetailName;\n                });\n                if (alreadyExistingVariant === undefined) {\n                    retVal = true;\n                } else {\n                    retVal = false;\n                }\n            });\n        }\n        vm.canAddNewColor = retVal;\n    }\n\n    function normalizeString(str) {\n        //Make sure string contains only letters, numbers and some special characters\n        var retVal = str;\n        var r = /[^ \\(\\)\\/\\\\0-9\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]+/g;\n        retVal = str.replace(r, '');\n        //Make sure there are no extra whitespace\n        var r2 = /[\\s]{2,}/g;\n        retVal = retVal.replace(r2, ' ');\n        //Remove leading and trailing whitespace\n        retVal = retVal.trim();\n        return retVal;\n    }\n\n    function getNewColorInputStyle() {\n        var style = {};\n        setCanAddNewColor();\n        if (!vm.canAddNewColor) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n            style['border-width'] = '1px';\n            style['border-style'] = 'inset';\n            style['border-color'] = 'initial';\n            style['border-image'] = 'initial';\n        } else {\n            style['color'] = 'inherit';\n            style['background-color'] = 'white';\n            style['border-width'] = '1px';\n            style['border-style'] = 'inset';\n            style['border-color'] = 'initial';\n            style['border-image'] = 'initial';\n        }\n        return style;\n    }\n\n    function changeGridEditType(gridEditType) {\n        vm.selectedGridEditType = gridEditType;\n    }\n\n    function populateVariantDetailsArrays() {\n        vm.variantDetail1s = [];\n        vm.variantDetail2s = [];\n        _.forEach(vm.article.articleVariants, function(articleVariant) {\n            if (!_.find(vm.variantDetail1s, function(varDet1) { return varDet1.id === articleVariant.variantDetail1.id; })) {\n                vm.variantDetail1s.push(articleVariant.variantDetail1);\n            }\n            if (!_.find(vm.variantDetail2s, function(varDet2) { return varDet2.id === articleVariant.variantDetail2.id; })) {\n                vm.variantDetail2s.push(articleVariant.variantDetail2);\n            }\n        });\n\n        vm.variantDetail1s = _.orderBy(vm.variantDetail1s, function(variantDetail1) { return variantDetail1.sortOrder; });\n        vm.variantDetail2s = _.orderBy(vm.variantDetail2s, function(variantDetail2) { return variantDetail2.sortOrder; });\n    }\n\n    function updateVariant1(articleVariantArray) {\n        var newVariantDetail1Name = articleVariantArray[0].variantDetail1.variantDetailName;\n        var firstArticleVariantId = articleVariantArray[0].id;\n        var gridData = vm.gridData;\n        var isDuplicate= isDetailNameDuplicate(newVariantDetail1Name, firstArticleVariantId);\n        _.forEach(articleVariantArray, function(artVar) {\n            if (articleVariantArray[0].variantDetail1.variantDetailName !== artVar.variantDetail1.variantDetailName) {\n                artVar.variantDetail1.variantDetailName = articleVariantArray[0].variantDetail1.variantDetailName;\n            }\n        });\n    }\n\n    function isDetailNameDuplicate(variantDetail1Name, articleVariantId) {\n        var isDuplicate = false;\n        _.forEach(vm.gridData, function(gridRow) {\n            var gridRowArticleVariant = gridRow[0];\n            if (gridRowArticleVariant.id !== articleVariantId) {\n                if (gridRowArticleVariant.variantDetail1.variantDetailName === variantDetail1Name) {\n                    isDuplicate = true;\n                }\n            }\n\n        });\n\n        return isDuplicate;\n    }\n\n    function getVariant1EditStyle(item) {\n        var newVariantDetail1Name = item[0].variantDetail1.variantDetailName;\n        var firstArticleVariantId = item[0].id;\n        var style = {\n            'border': '1px solid black',\n            'padding': '3px',\n            'height': 'auto',\n            'background-color': 'white'\n        };\n\n        if (isDetailNameDuplicate(newVariantDetail1Name, firstArticleVariantId)) {\n            style['background-color'] = errorColor;\n        }\n\n        return style;\n    }\n\n    function openAddArticleVariantDialog(){\n        ArticleAddNewArticleVariantDialogService.showDialog(vm.article, vm.articleCollections, vm.variant2).then(function(response){\n            if(response)\n                $state.go($state.current.name,{},{reload: $state.current.name});\n        });\n    }\n\n    function openColourChangeModal(colourName) {\n        colourChangeDialogService.showDialog(vm.article.id, colourName).then(function(response) {\n            if (response) {\n                $state.go($state.current.name, {}, { reload: $state.current.name });\n            }\n        });\n    }\n\n}\n","angular.module('components.caArticleVariantsGridCell', [])\n    .component('caArticleVariantsGridCell', {\n        templateUrl: 'main/product/articles/article/components/articlevariantsgridcell.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            articleVariant: '=',\n            articleVariants: '=',\n            articleCollections: '<',\n            gridEditType: '<',\n            onArticleVariantUpdated: '&',\n            changeCount: '=',\n            disabled: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.dataType = '';\n    vm.handleMultipleArticleVariants = false;\n    vm.inputBoxDisplayValue = '';\n\n    vm.inputValueChanged = inputValueChanged;\n\n    function onInit() {\n        if (vm.dataType === undefined || vm.dataType === '') {\n            vm.dataType = 'number'; //Default for input fields is number, but datatype for each tab is set in articlevariantsgrid.component.js\n        }\n\n        if (vm.articleVariant === undefined && vm.articleVariants.length !== 0) {\n            vm.handleMultipleArticleVariants = true;\n        } else {\n            vm.handleMultipleArticleVariants = false;\n        }\n\n        reloadInputBoxValue();\n\n        $scope.$watch(function() { return vm.changeCount; }, function(newValue, oldValue) {\n            if (newValue !== oldValue) {\n                reloadInputBoxValue();\n            }\n        });\n    }\n\n    function onChanges(changes) {\n        if (changes.changeCount) {\n            reloadInputBoxValue();\n        }\n        if (changes.gridEditType) {\n            vm.dataType = vm.gridEditType.dataType;\n            reloadInputBoxValue();\n            if (vm.handleMultipleArticleVariants) {\n                vm.inputBoxDisplayValue = undefined;\n            }\n        }\n    }\n    function onDestroy() {\n\n    }\n\n    function reloadInputBoxValue() {\n        if (!vm.handleMultipleArticleVariants && vm.articleVariant && vm.articleVariant[vm.gridEditType.value]) {\n            vm.inputBoxDisplayValue = vm.articleVariant[vm.gridEditType.value];\n        } else if (!vm.handleMultipleArticleVariants && vm.dataType === 'number') {\n            vm.inputBoxDisplayValue = '0';\n        } else if (!vm.handleMultipleArticleVariants && vm.dataType === 'boolean') {\n            vm.inputBoxDisplayValue = false;\n        } else if (!vm.handleMultipleArticleVariants && vm.dataType === 'disabled') {\n            vm.inputBoxDisplayValue = '';\n        }\n    }\n\n    function inputValueChanged() {\n        if (vm.handleMultipleArticleVariants) {\n            _.forEach(vm.articleVariants, function(articleVariant) {\n                articleVariant[vm.gridEditType.value] = vm.inputBoxDisplayValue;\n            });\n        } else {\n            vm.articleVariant[vm.gridEditType.value] = vm.inputBoxDisplayValue;\n        }\n        vm.changeCount += 1;\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.articles',{\n        url: '/articles?currentPage&filter&pageSize&inactive&match',\n        views: {'productList@product': {\n            templateUrl: 'main/product/articles/articles.tpl.html',\n            controller: 'ArticlesController as vm'\n        }},\n        resolve: {\n            searchTerms: searchTermResolver\n        }\n    });\n}\n\n// @ngInject\nfunction searchTermResolver($stateParams) {\n    return {\n        filter: $stateParams.filter,\n        currentPage: $stateParams.currentPage,\n        pageSize: $stateParams.pageSize,\n        inactive: $stateParams.inactive,\n        match: $stateParams.match\n    };\n}\n\n// @ngInject\nfunction ArticlesController($state, searchTerms) {\n    var vm = this;\n\n    //Properties\n    vm.articles = [];\n    vm.filter = '';\n    vm.currentPage = 1;\n    vm.pageSize = 15;\n    vm.match = false;\n    vm.inactive = false;\n    vm.totalItems = [];\n\n    //Methods\n    vm.selectArticle = selectArticle;\n    vm.goToNew = goToNew;\n\n    activate();\n\n    function activate() {\n        vm.filter = searchTerms.filter ? searchTerms.filter : '';\n        vm.currentPage = searchTerms.currentPage > 1 ? searchTerms.currentPage : 1;\n        vm.pageSize = searchTerms.pageSize >= 20 ? searchTerms.pageSize : 20;\n        vm.match = searchTerms.match ? searchTerms.match == 'true' ? true : false : false;\n        vm.inactive = searchTerms.inactive ? searchTerms.inactive == 'true' ? true : false : false;\n    }\n\n    function selectArticle(article) {\n        $state.go('product.articles.article',\n            {\n                articleId: article.articleId,\n                filter: article.searchTerms.filter,\n                currentPage: article.searchTerms.currentPage,\n                pageSize: article.searchTerms.pageSize,\n                inactive: article.searchTerms.inactive,\n                match: article.searchTerms.match\n            }\n        );\n    }\n    function goToNew() {\n        $state.go('product.articles.new');\n    }\n}\n\nangular\n    .module('product.articles', ['product.articles.article', 'product.articles.articleLabelsPrintDialog', 'product.articles.articleNewIntrastatDialog', 'product.articles.articleChangeItemGroupDialog', 'product.articles.articleAddNewArticleVariantDialog'])\n    .config(stateConfig)\n    .controller('ArticlesController', ArticlesController);\n","\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.priceListSearch.pricelist', {\n        url: '/{articleId}',\n        views: {\n            \"productView@product\": {\n                templateUrl: 'main/product/articles/pricelistmanagement/pricelistmanagement.tpl.html',\n                controller: 'PriceListController as vm'\n            }\n        },\n        resolve: {\n            article: articleResolver,\n            locations: locationsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction articleResolver($stateParams, PricelistsApiService) {\n    return PricelistsApiService.getProduct($stateParams.articleId);\n}\n\n// @ngInject\nfunction locationsResolver($stateParams, PricelistsApiService) {\n    return PricelistsApiService.getLocations();\n}\n\n// @ngInject\nfunction PriceListController(article, $scope, locations, PricelistsApiService, ToasterService, loadSpinnerService) {\n    var vm = this;\n\n    vm.locations = locations;\n    vm.selectedArticle = article;\n    vm.selectedLocation = {};\n    vm.newPrice = \"\";\n    vm.save = save;\n    vm.removeOverridePrice = removeOverridePrice;\n    vm.foundExistingPrice = false;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() {return vm.selectedLocation;}, function() {\n            loadPriceForCurrentLocation();\n        });\n\n        // TODO: NO! Remove this ugly hack. Implement default locations for real instead.\n        var defaultLocation = _.find(vm.locations, function(location) {\n            return location.locationName === \"Pop-Up Stinsen\";\n        });\n        if (defaultLocation) {\n            vm.selectedLocation = defaultLocation;\n        }\n    }\n\n    function loadPriceForCurrentLocation() {\n        _.forEach(vm.selectedArticle.articleVariants, function(articleVariant) {\n            var relevantArticleVariantPrice = _.find(articleVariant.articleVariantPrices, function(articleVariantPrice) {\n                return articleVariantPrice.location.id === vm.selectedLocation.id;\n            });\n\n            if (relevantArticleVariantPrice) {\n                vm.newPrice = relevantArticleVariantPrice.salesPrice;\n                vm.foundExistingPrice = true;\n            } else {\n                vm.newPrice = \"\";\n                vm.foundExistingPrice = false;\n            }\n        });\n    }\n\n    function save() {\n        loadSpinnerService.start('mainSpinner');\n\n        PricelistsApiService.updateOverridePrice(vm.selectedArticle.id, vm.selectedLocation.id, vm.newPrice).then(function(response) {\n            vm.selectedArticle = response.data;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function removeOverridePrice() {\n        loadSpinnerService.start('mainSpinner');\n\n        PricelistsApiService.removeOverridePrice(vm.selectedArticle.id, vm.selectedLocation.id).then(function(response) {\n            vm.newPrice = \"\";\n            vm.selectedArticle = response.data;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n}\n\nangular\n    .module('product.articles.pricelist', [])\n    .config(stateConfig)\n    .controller('PriceListController', PriceListController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.priceListSearch',{\n        url: '/pricelist?currentPage&filter&pageSize',\n        views: {'productList@product': {\n            templateUrl: 'main/product/articles/pricelistmgmt.tpl.html',\n            controller: 'PriceListManagementController as vm'\n        }},\n        resolve: {\n            searchTerms: searchTermResolver\n        }\n    });\n}\n\n// @ngInject\nfunction searchTermResolver($stateParams) {\n    return {\n        filter: $stateParams.filter,\n        currentPage: $stateParams.currentPage,\n        pageSize: $stateParams.pageSize\n    };\n}\n\n// @ngInject\nfunction PriceListManagementController($state, searchTerms) {\n    var vm = this;\n\n    //Properties\n    vm.articles = [];\n    vm.filter = '';\n    vm.currentPage = 1;\n    vm.pageSize = 15;\n    vm.totalItems = [];\n\n    //Methods\n    vm.selectArticle = selectArticle;\n\n    activate();\n\n    function activate() {\n        vm.filter = searchTerms.filter ? searchTerms.filter : '';\n        vm.currentPage = searchTerms.currentPage > 1 ? searchTerms.currentPage : 1;\n        vm.pageSize = searchTerms.pageSize >= 20 ? searchTerms.pageSize : 20;\n    }\n\n    function selectArticle(article) {\n        $state.go('product.priceListSearch.pricelist',\n            {\n                articleId: article.articleId,\n                filter: article.searchTerms.filter,\n                currentPage: article.searchTerms.currentPage,\n                pageSize: article.searchTerms.pageSize\n            }\n        );\n    }\n}\n\nangular\n    .module('product.pricelistmgmt', ['product.articles.pricelist', 'product.articles.articleLabelsPrintDialog', 'product.articles.articleNewIntrastatDialog'])\n    .config(stateConfig)\n    .controller('PriceListManagementController', PriceListManagementController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.brands.new', {\n        url:'/new',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/brands/brand/brand.tpl.html',\n            controller: 'BrandController as vm'\n        }},\n        resolve: {\n            brand: function() { return {}; },\n            mainGroups: mainGroupsResolver,\n            isNewBrand: function() { return true; },\n            companies: companiesResolver,\n            brandCategories: brandCategoriesResolver,\n            barcodeTypes: barcodeTypesResolver,\n            tenantConfig: tenantConfigResolver,\n            vats: vatsResolver,\n            variantGroups: variantGroupsResolver,\n            salesChannels: salesChannelResolver\n        }\n    });\n\n    $stateProvider.state('product.brands.brand', {\n        url:'/{brandId}',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/brands/brand/brand.tpl.html',\n            controller: 'BrandController as vm'\n        }},\n        resolve: {\n            brand: brandResolver,\n            mainGroups: mainGroupsResolver,\n            isNewBrand: function() { return false; },\n            companies: companiesResolver,\n            brandCategories: brandCategoriesResolver,\n            barcodeTypes: barcodeTypesResolver,\n            tenantConfig: tenantConfigResolver,\n            vats: vatsResolver,\n            variantGroups: variantGroupsResolver,\n            salesChannels: salesChannelResolver\n        }\n    });\n\n}\n\n// @ngInject\nfunction mainGroupsResolver(BrandsApiService) {\n    return BrandsApiService.getMainGroups();\n}\n\n// @ngInject\nfunction brandResolver($stateParams, BrandsApiService) {\n    return BrandsApiService.getBrand($stateParams.brandId);\n}\n\n// @ngInject\nfunction companiesResolver(BrandsApiService) {\n    return BrandsApiService.getCompanies();\n}\n\n// @ngInject\nfunction brandCategoriesResolver(BrandsApiService) {\n    return BrandsApiService.getBrandCategories();\n}\n\n// @ngInject\nfunction barcodeTypesResolver(BrandsApiService) {\n    return BrandsApiService.getBarcodeTypes();\n}\n\n// @ngInject\nfunction tenantConfigResolver(BrandsApiService) {\n    return BrandsApiService.getTenantConfig();\n}\n\n// @ngInject\nfunction vatsResolver(VatsApiService) {\n    return VatsApiService.getVats();\n}\n\n//@ngInject\nfunction variantGroupsResolver(BrandsApiService) {\n    return BrandsApiService.getVariantGroups();\n}\n\n//@ngInject\nfunction salesChannelResolver(BrandsApiService) {\n    return BrandsApiService.getSalesChannels();\n}\n\n\n// @ngInject\nfunction BrandController($state, vats, brand, mainGroups, loadSpinnerService, BrandsApiService, isNewBrand, companies, variantGroups, brandCategories, barcodeTypes, tenantConfig, salesChannels) {\n    var vm = this;\n\n    var brandCopy = {};\n\n    vm.brand = brand;\n    vm.mainGroups = [];\n    vm.selectedMainGroups = [];\n    vm.selectedCompanies = [];\n    vm.removedCompanies = [];\n    vm.companies = companies;\n    vm.brandCategories = brandCategories;\n    vm.barcodeTypes = barcodeTypes;\n    vm.vats = vats;\n    vm.salesChannels = salesChannels;\n\n    vm.addMainGroups = addMainGroups;\n    vm.removeCompany = removeCompany;\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveBrand = saveBrand;\n\n    vm.isNewBrand = isNewBrand;\n    vm.isEditing = vm.isNewBrand;\n\n    vm.tenantConfig = tenantConfig;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.isBrandCodeValid = isBrandCodeValid;\n    vm.isBrandCategoryValid = isBrandCategoryValid;\n    vm.isBarcodeTypeValid = isBarcodeTypeValid;\n    vm.isBrandDescriptionValid = isBrandDescriptionValid;\n\n    vm.variantGroups = variantGroups;\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    console.log(\"VariantGroups\");\n    console.log(vm.variantGroups);\n\n    activate();\n\n    function activate() {\n        prepareData();\n\n        if (vm.isNewBrand) {\n            vm.brand = {};\n            vm.brand['company'] = vm.companies[0];\n        }\n\n    }\n\n    function addMainGroups() {\n        var brands = [vm.brand];\n        var mainGroups = vm.selectedMainGroups;\n\n        loadSpinnerService.start('mainSpinner');\n        BrandsApiService.createItemGroups(mainGroups, brands).then(function() {\n            BrandsApiService.getBrand(vm.brand.id).then(function(response) {\n                vm.brand = response;\n                prepareData();\n                vm.selectedMainGroups = [];\n            }, function(error) {\n                console.log(error);\n            });\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function removeCompany(company) {\n        console.log('Removing ' + company.id + ' (' + company.companyName + ') from company list');\n        vm.removedCompanies.push(company);\n        vm.brand.companies = vm.brand.companies.filter(function (obj) {\n            return obj.id !== company.id;\n        });\n    }\n\n    function enableEditing() {\n        brandCopy = angular.copy(vm.brand);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.brand = brandCopy;\n        vm.isEditing = false;\n        vm.selectedMainGroups = [];\n        vm.selectedCompanies = [];\n        vm.removedCompanies = [];\n    }\n\n    function saveBrand() {\n        if (vm.isNewBrand) {\n            saveNewBrand();\n        } else {\n            updateBrand();\n        }\n    }\n\n    function saveNewBrand() {\n        loadSpinnerService.start('mainSpinner');\n\n        //Make sure preferred supplier is in list of suppliers\n        if (!vm.brand.companies) { vm.brand.companies = []; }\n        if (!_.find(vm.brand.companies, function(c) { return c.id === vm.brand.company.id; })) {\n            vm.brand.companies.push(vm.brand.company);\n        }\n\n        BrandsApiService.createBrand(vm.brand, vm.selectedMainGroups,\n            vm.selectedCompanies, vm.removedCompanies).then(function(response) {\n            vm.brand = response;\n            prepareData();\n            vm.selectedMainGroups = [];\n            vm.selectedCompanies = [];\n            vm.removedCompanies = [];\n            vm.isNewBrand = false;\n            vm.isEditing = false;\n            $state.go('product.brands.brand', {brandId: response.id});\n        }, function(error) {\n            console.log(error);\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateBrand() {\n        loadSpinnerService.start('mainSpinner');\n\n        //Make sure preferred supplier is in list of suppliers\n        if (!_.find(vm.brand.companies, function(c) { return c.id === vm.brand.company.id; })) {\n            vm.brand.companies.push(vm.brand.company);\n        }\n\n        BrandsApiService.updateBrand(vm.brand, vm.selectedMainGroups,\n            vm.selectedCompanies, vm.removedCompanies).then(function(response) {\n            vm.brand = response;\n            prepareData();\n            vm.selectedMainGroups = [];\n            vm.selectedCompanies = [];\n            vm.removedCompanies = [];\n            vm.isEditing = false;\n        }, function(error) {\n            console.log(error);\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function prepareData() {\n        if (vm.brand === undefined) {\n            return;\n        }\n\n        // Filter out mainGroups that are already added.\n        var tempMainGroups = [];\n        _.forEach(mainGroups, function(mainGroup) {\n            if (!_.find(vm.brand.itemGroups, function(igrp) { return igrp.mainGroup.id === mainGroup.id; })) {\n                tempMainGroups.push(mainGroup);\n            }\n        });\n\n        vm.mainGroups = _.sortBy(tempMainGroups, function(mainGroup) {\n            return mainGroup.mainGroupCode;\n        });\n        if (vm.brand.mainGroups === undefined || vm.brand.mainGroups.length === 0) {\n            vm.brand.mainGroups = vm.mainGroups;\n        }\n\n        if (vm.brand.companies === undefined || vm.brand.companies.length === 0) {\n            vm.brand.companies = companies;\n        }\n        vm.brand.companies = _.sortBy(vm.brand.companies, function(company) {\n            return company.companyName;\n        });\n    }\n\n    function isAllInformationValid() {\n        return (\n            !vm.isNewBrand && \n            isBrandDescriptionValid()\n        ) || (\n                isBrandCodeValid() &&\n                isBrandCategoryValid() &&\n                isBarcodeTypeValid()\n        );\n    }\n\n    function isBrandCodeValid() {\n        var isBrandCodeAlreadyAssigned = _.find(vm.tenantConfig.assignedBrandCodes, function(code) {\n            return vm.brand.brandCode === code;\n        });\n\n        if (!isBrandCodeAlreadyAssigned && isNumeric(vm.brand.brandCode) && vm.brand.brandCode.length === vm.tenantConfig.articleBrandCodeLength) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    function isBrandCategoryValid() {\n        if (!vm.brand.brandCategory) {\n            return false;\n        }\n        if (vm.brand.brandCategory.id <= 0) {\n            return false;\n        }\n        return true;\n    }\n\n    function isBarcodeTypeValid() {\n        if (!vm.brand.barcodeType) {\n            return false;\n        }\n        if (vm.brand.barcodeType.id <= 0) {\n            return false;\n        }\n        return true;\n    }\n\n    function isBrandDescriptionValid(){\n        return vm.brand.brandDescription && vm.brand.brandDescription.length > 0;\n    }\n\n    function toggleDisplayForm(itemGroup) {\n        console.log(\"Toggling\");\n        if (!itemGroup.showEditForm) { itemGroup.showEditForm = false; }\n        itemGroup.showEditForm = !itemGroup.showEditForm;\n    }\n\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('brands.brand', [])\n    .config(stateConfig)\n    .controller('BrandController', BrandController);\n","// @ngInject\nfunction BrandsApiService(ResourcesService) {\n\n    var endpoint = 'brands';\n\n    return {\n        getBrands: ResourcesService.apiFactory.get(endpoint),\n        getBrand: ResourcesService.apiFactory.get(endpoint),\n        createBrand: createBrand,\n        updateBrand: updateBrand,\n        getTenantConfig: ResourcesService.apiFactory.get(endpoint + '/tenantconfig'),\n        getMainGroups: ResourcesService.apiFactory.get(endpoint + '/maingroups'),\n        getCompanies: ResourcesService.apiFactory.get(endpoint + '/companies'),\n        getBrandCategories: ResourcesService.apiFactory.get(endpoint + '/brandcategories'),\n        getSalesChannels: ResourcesService.apiFactory.get(endpoint + '/saleschannels'),\n        getVariantGroups: ResourcesService.apiFactory.get(endpoint + '/variantgroups'),\n        getBarcodeTypes: ResourcesService.apiFactory.get(endpoint + '/barcodetypes'),\n        createItemGroups: createItemGroups\n    };\n\n    function createBrand(brand, mainGroups, addedCompanies, removedCompanies) {\n\n        var args = {\n            brand: brand,\n            mainGroups: mainGroups,\n            addedCompanies: addedCompanies,\n            removedCompanies: removedCompanies\n        };\n\n        return ResourcesService.apiFactory.create(endpoint,'Brand')(args);\n\n    }\n\n    function updateBrand(brand, mainGroups, addedCompanies, removedCompanies) {\n\n        var args = {\n            brand: brand,\n            mainGroups: mainGroups,\n            addedCompanies: addedCompanies,\n            removedCompanies: removedCompanies\n        };\n\n        return ResourcesService.apiFactory.update(endpoint,'Brand')(args);\n    }\n\n    function createItemGroups(mainGroups, brands) {\n\n        var args = {\n            mainGroups: mainGroups,\n            brands: brands\n        };\n\n        return ResourcesService.apiFactory.update(endpoint + '/createitemgroups','MainGroup')(args);\n    }\n\n}\n\n\nangular.module('brands.api', [])\n  .factory('BrandsApiService', BrandsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.brands', {\n        url: '/brands?searchTerm',\n        views: {'productList@product': {\n            templateUrl: 'main/product/brands/brands.tpl.html',\n            controller: 'BrandsController as vm'\n        }},\n        resolve: {\n            brands: brandsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction brandsResolver(BrandsApiService,$stateParams) {\n    return BrandsApiService.getBrands({page: 0, searchTerm: $stateParams.searchTerm, pageSize: null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction BrandsController($rootScope, $state, $scope, brands, BrandsApiService,loadSpinnerService,searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.brands = brands;\n    vm.selectedBrandId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n    vm.itemsPerPage = null;\n    vm.sortingKey = '';\n    vm.sortingDesc = false;\n\n    vm.searchTermChange = searchTermChange;\n    vm.sortBrands = sortBrands;\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.brandId; }, function(newValue, oldValue) {\n            vm.selectedBrandId = parseInt($state.params.brandId, 10);\n        });\n        $rootScope.$on('Brand.Inserted', function(event, response) {\n        });\n        $rootScope.$on('Brand.Updated', function(event, response) {\n        });\n        $rootScope.$on('Brand.Deleted', function(event, response) {\n        });\n        $rootScope.$on('Brand.Changed', function(event, response) {\n            loadBrands();\n        });\n    }\n\n    function loadBrands() {\n        loadSpinnerService.start('mainSpinner');\n        BrandsApiService.getBrands({page: vm.currentPage - 1, searchTerm: vm.searchTerm, sortingKey: vm.sortingKey, sortingDesc: vm.sortingDesc, pageSize: vm.itemsPerPage}).then(function(response) {\n            vm.brands = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadBrands();\n    }\n\n    function sortBrands(sortingKey){\n        vm.sortingKey = sortingKey;\n        vm.sortingDesc = !vm.sortingDesc;\n        loadBrands();\n    }\n\n}\n\nangular\n    .module('product.brands', ['brands.api','brands.brand'])\n    .config(stateConfig)\n    .controller('BrandsController', BrandsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('product.businessareas.new', {\n        url:'/new',\n        views: {\n            'productView@product': {\n            templateUrl: 'main/product/businessareas/businessarea/businessarea.tpl.html',\n            controller: 'BusinessAreaController as vm'\n        }},\n        resolve: {\n            businessarea: function() { return {}; },\n            isNewBusinessArea: function() {return true;}\n        }\n    });\n\n    $stateProvider.state('product.businessareas.businessarea', {\n        url:'/{businessareaId}',\n        views: {\n            'productView@product': {\n            templateUrl: 'main/product/businessareas/businessarea/businessarea.tpl.html',\n            controller: 'BusinessAreaController as vm'\n        }},\n        resolve: {\n            businessarea: businessareaResolver,\n            isNewBusinessArea: function() {return false;}\n        }\n    });\n\n}\n\n// @ngInject\nfunction businessareaResolver($stateParams, BusinessAreasApiService) {\n    return BusinessAreasApiService.getBusinessArea($stateParams.businessareaId);\n}\n\n// @ngInject\nfunction BusinessAreaController($state, businessarea, loadSpinnerService, BusinessAreasApiService, ToasterService, confirmationDialogService, $translate, isNewBusinessArea) {\n    var vm = this;\n\n    var businessareaCopy = {};\n\n    vm.businessarea = businessarea;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveBusinessArea = saveBusinessArea;\n    vm.deleteBusinessArea = deleteBusinessArea;\n\n    vm.isNewBusinessArea = isNewBusinessArea;\n    vm.isEditing = vm.isNewBusinessArea;\n\n    vm.isBusinessAreaCodeValid = isBusinessAreaCodeValid;\n    vm.isAllInformationValid = isAllInformationValid;\n\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewBusinessArea) {\n            vm.businessarea = {};\n        }\n\n    }\n\n    function enableEditing() {\n        businessareaCopy = angular.copy(vm.businessarea);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.businessarea = businessareaCopy;\n        vm.isEditing = false;\n    }\n\n    function saveBusinessArea() {\n        if (vm.isNewBusinessArea) {\n            saveNewBusinessArea();\n        } else {\n            updateBusinessArea();\n        }\n    }\n\n    function saveNewBusinessArea() {\n        loadSpinnerService.start('mainSpinner');\n        BusinessAreasApiService.createBusinessArea(vm.businessarea).then(function(response) {\n            vm.businessarea = response;\n            prepareData();\n            vm.isNewBusinessArea = false;\n            vm.isEditing = false;\n            $state.go('product.businessareas.businessarea', {businessareaId: vm.businessarea.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateBusinessArea() {\n        loadSpinnerService.start('mainSpinner');\n\n        BusinessAreasApiService.updateBusinessArea(vm.businessarea).then(function(response) {\n            vm.businessarea = response;\n            prepareData();\n            vm.isNewBusinessArea = false;\n            vm.isEditing = false;\n            $state.go('product.businessareas.businessarea', {businessareaId: vm.businessarea.id});\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteBusinessArea() {\n        confirmationDialogService\n            .showDialog($translate.instant('businessarea.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    BusinessAreasApiService.deleteBusinessArea(vm.businessarea.id).then(function(response) {\n                        vm.businessarea = response;\n                        prepareData();\n                        vm.isNewBusinessArea = false;\n                        vm.isEditing = false;\n                        $state.go('product.businessareas');\n                    }, function(error) {\n                        console.log(error);\n                        ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(businessarea) {\n        businessarea.showEditForm = !businessarea.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.businessarea === undefined) {\n            return;\n        }\n\n        vm.businessareaCopy = angular.copy(vm.businessarea);\n    }\n\n    function isAllInformationValid() {\n        return isBusinessAreaCodeValid();\n    }\n\n    function isBusinessAreaCodeValid() {\n        if (!vm.businessarea.code) { return false; }\n        if (vm.businessarea.code.length > 20) { return false; }\n\n        return true;\n    }\n\n    function isNumeric(n) {\n      return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('businessareas.businessarea', [])\n    .config(stateConfig)\n    .controller('BusinessAreaController', BusinessAreaController);\n","// @ngInject\nfunction BusinessAreasApiService(ResourcesService) {\n\n  var endpoint = 'businessareas';\n\n  return {\n    getBusinessAreas: ResourcesService.apiFactory.get(endpoint),\n    getBusinessArea: ResourcesService.apiFactory.get(endpoint),\n    getLanguages: ResourcesService.apiFactory.get(endpoint + '/languages'),\n    createBusinessArea: ResourcesService.apiFactory.create(endpoint, 'BusinessArea'),\n    updateBusinessArea: ResourcesService.apiFactory.update(endpoint, 'BusinessArea'),\n    deleteBusinessArea: ResourcesService.apiFactory.delete(endpoint, 'BusinessArea')\n  };\n\n}\n\nangular\n  .module('businessareas.api', [])\n  .factory('BusinessAreasApiService', BusinessAreasApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.businessareas', {\n        url: '/businessareas?searchTerm',\n        views: {\n            'productList': {\n            templateUrl: 'main/product/businessareas/businessareas.tpl.html',\n            controller: 'BusinessAreasController as vm'\n        }},\n        resolve: {\n            businessareas: businessareasResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction businessareasResolver(BusinessAreasApiService, $stateParams) {\n    return BusinessAreasApiService.getBusinessAreas({ page: 0, searchTerm:$stateParams.searchTerm, pageSize: null});\n}\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n// @ngInject\nfunction BusinessAreasController($rootScope, $state, $scope, businessareas, BusinessAreasApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.businessareas = businessareas;\n    vm.selectedBusinessAreaId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.businessAreaId; }, function(newValue, oldValue) {\n            vm.selectedBusinessAreaId = parseInt($state.params.businessAreaId,10);\n        });\n        $rootScope.$on('BusinessArea.Inserted', function(event, response) {\n        });\n        $rootScope.$on('BusinessArea.Updated', function(event, response) {\n        });\n        $rootScope.$on('BusinessArea.Deleted', function(event, response) {\n        });\n        $rootScope.$on('BusinessArea.Changed', function(event, response) {\n            loadBusinessAreas();\n        });\n    }\n\n    function loadBusinessAreas() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        BusinessAreasApiService.getBusinessAreas(request).then(function(response) {\n            vm.businessareas = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadBusinessAreas();\n    }\n\n}\n\nangular\n    .module('product.businessareas', ['businessareas.api','businessareas.businessarea'])\n    .config(stateConfig)\n    .controller('BusinessAreasController', BusinessAreasController);\n","angular.module('components.caArticleSearchMultiSelect', [])\n    .component('caArticleSearchMultiSelect', {\n        templateUrl: 'main/product/components/articlesearchmultiselect.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            company: '<',\n            selectSameTwiceAllowed: '<',\n            articlesToExclude: '<',\n            pageSize: '<',\n            disabled: '<',\n            onArticlesRetrieved: '&'\n        },\n        controller: ['$q', '$scope', 'ProductsApiService', 'loadSpinnerService', 'ToasterService', controller]\n    });\n\n// @ngInject\nfunction controller($q, $scope, ProductsApiService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.searchResultArticles = [];\n    vm.articlesToAdd = [];\n    vm.result = [];\n    vm.currentPage = 1;\n\n    vm.refreshArticles = refreshArticles;\n    vm.addArticles = addArticles;\n\n    function onInit() {\n        if (!vm.selectSameTwiceAllowed) {\n            vm.selectSameTwiceAllowed = false;\n        }\n\n        if (!vm.pageSize) {\n            vm.pageSize = 20;\n        }\n\n        $scope.$watch(function() { return (vm.company !== undefined) ?  vm.company.id : undefined; },\n                      function() {\n                          vm.articlesToAdd = [];\n                          refreshArticles();\n                        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n\n    // Refreshes the contents of the drop-down-list of selectable articles.\n    function refreshArticles(filter) {\n        var companyId = (vm.company !== undefined) ? vm.company.id : undefined;\n        var request = {\n            currentPage: vm.currentPage,\n            filter: filter,\n            pageSize: vm.pageSize,\n            companyId: companyId\n        };\n        ProductsApiService.getProducts(request).then(function(response) {\n            vm.searchResultArticles = [];\n            var excludeList = [];\n            if (vm.articlesToExclude !== undefined) {\n                excludeList = vm.articlesToExclude.map(function(oa) {\n                    return { id: oa.articleId };\n                });\n            }\n\n            for (var i = 0; i < response.data.results.length; i++) {\n                var article = response.data.results[i];\n                if (!_.find(excludeList, {'id': article.id})) {\n                    vm.searchResultArticles.push(article);\n                }\n            }\n        }, function(error) {\n            ToasterService.showError(error.errors);\n        });\n    }\n\n    function addArticles() {\n        vm.result = [];\n        var promises = [];\n        loadSpinnerService.start(\"mainSpinner\");\n        _.forEach(vm.articlesToAdd, function(article) {\n            var articleFetchPromise = ProductsApiService.getProduct(article.id);\n            promises.push(articleFetchPromise);\n        });\n\n        $q.all(promises).then(function(responses) {\n            _.forEach(responses, function(response) {\n                vm.result.push(response);\n            });\n            vm.onArticlesRetrieved({articles: vm.result});\n            vm.articlesToAdd = [];\n            refreshArticles();\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n}\n","angular.module('components.caItemGroupInline', [])\n    .component('caItemGroupInline', {\n        templateUrl: 'main/product/components/itemGroupInline.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            itemGroup: '=',\n            vats: '<',\n            variantGroups: '<'\n        },\n        controller: itemGroupInlineController\n    });  \n\n// @ngInject\nfunction itemGroupInlineController() {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    function onInit() {\n        vm.variantGroup1s = _.filter(vm.variantGroups, function(group) {\n            if (!vm.itemGroup.mainGroup.variant1 || !group.variant) {\n                return false;\n            }\n            return group.variant.id === vm.itemGroup.mainGroup.variant1.id;\n        });\n\n        vm.variantGroup2s = _.filter(vm.variantGroups, function(group) {\n            if (!vm.itemGroup.mainGroup.variant2 || !group.variant) {\n                return false;\n            }\n\n            return group.variant.id === vm.itemGroup.mainGroup.variant2.id;\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.departments.new', {\n        url: '/new',\n        views: {\n            \"productView@product\": {\n                templateUrl: 'main/product/departments/department/department.tpl.html',\n                controller: 'DepartmentController as vm'\n            }\n        },\n        resolve: {\n            department: function () { return {}; },\n            mainGroups: mainGroupsResolver,\n            createNew: function () { return true; }\n        }\n    });\n\n    $stateProvider.state('product.departments.department', {\n        url: '/{departmentId}',\n        views: {\n            \"productView@product\": {\n                templateUrl: 'main/product/departments/department/department.tpl.html',\n                controller: 'DepartmentController as vm'\n            }\n        },\n        resolve: {\n            department: departmentsResolver,\n            mainGroups: mainGroupsResolver,\n            createNew: function () { return false; }\n        }\n    });\n}\n\n\n// @ngInject\nfunction departmentsResolver($stateParams, DepartmentsApiService) {\n    return DepartmentsApiService.getDepartment($stateParams.departmentId);\n}\n\n// @ngInject\nfunction mainGroupsResolver(DepartmentsApiService) {\n    return DepartmentsApiService.getMainGroups();\n}\n\n// @ngInject\nfunction DepartmentController($state, department, mainGroups, loadSpinnerService, createNew, DepartmentsApiService, $scope, $translate, ToasterService) {\n    var vm = this;\n\n    //properties\n    vm.department = department;\n    vm.isNew = false;\n    vm.isEditing = false;\n    vm.mainGroups = mainGroups;\n    vm.departmentCopy = {};\n\n    //functions\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.save = save;\n\n    //initialize\n    if (createNew) {\n        vm.department = { mainGroup: {} };\n        vm.department.mainGroup = angular.copy(vm.mainGroups[0]);\n        vm.isNew = true;\n        vm.isEditing = true;\n\n    }\n\n    function enableEditing() {\n        vm.isEditing = true;\n        vm.departmentCopy = angular.copy(vm.department);\n    }\n\n    function cancelEditing() {\n        vm.isEditing = false;\n        vm.department = vm.departmentCopy;\n    }\n\n    function save() {\n\n        DepartmentsApiService.save(vm.department).then(function (result) {\n            vm.department.id = result.id;\n            vm.isEditing = false;\n            vm.isNew = false;\n            ToasterService.showSuccess('\"' + vm.department.departmentCode + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"article.department\"));\n\n        }, function (error) {\n            ToasterService.showError(error.message, $translate.instant(\"article.department\"));\n        }).finally(function () {\n            $state.go('product.departments.department', { subCategoryId: vm.department.id });\n        });\n    }\n}\n\nangular\n    .module('departments.department', [])\n    .config(stateConfig)\n    .controller('DepartmentController', DepartmentController);\n","// @ngInject\nfunction DepartmentsApiService(ResourcesService) {\n\n    var endpoint = 'departments';\n\n    return {\n        getPage: ResourcesService.apiFactory.get(endpoint + '/page'),\n        getDepartment: ResourcesService.apiFactory.get(endpoint),\n        save:  ResourcesService.apiFactory.save(endpoint + '/save', 'Department'),\n        getMainGroups: ResourcesService.apiFactory.get(endpoint + '/maingroups')\n    };\n\n}\n\nangular.module('departments.api', [])\n  .factory('DepartmentsApiService', DepartmentsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.departments', {\n        url: '/departments?searchTerm',\n        views: {\n            'productList@product': {\n                templateUrl: 'main/product/departments/departments.tpl.html',\n                controller: 'DepartmentsController as vm'\n            }\n        },\n        resolve: {\n            departments: departmentsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n\n// @ngInject\nfunction departmentsResolver(DepartmentsApiService, $stateParams) {\n    return DepartmentsApiService.getPage({ page: 1, pageSize: 19, searchTerm: $stateParams.searchTerm});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction DepartmentsController($rootScope, $state, departments, $scope, DepartmentsApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.itemsPerPage = 19;\n    vm.selectedDepartmentId = 0;\n    vm.departments = departments.results;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n    vm.totalRows = departments.total;\n\n    vm.searchTermChanged = searchTermChanged;\n    vm.pageChanged = pageChanged;\n\n    activate();\n\n    function activate() {\n        $rootScope.$on('Department.Changed', function() {\n            loadDepartments();\n        });\n    }\n\n    function loadDepartments() {\n        loadSpinnerService.start('mainSpinner');\n        DepartmentsApiService.getPage({ page:  vm.currentPage, pageSize: vm.itemsPerPage, searchTerm: vm.searchTerm}).then(function (response) {\n            vm.departments = response.results;\n            vm.totalRows = response.total;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner', { force: true });\n        });\n    }\n\n    function searchTermChanged() {\n        vm.currentPage = 1;\n        loadDepartments();\n    }\n\n    function pageChanged() {\n        loadDepartments();\n    }\n}\n\n\nangular\n    .module('product.departments', ['departments.api','departments.department'])\n    .config(stateConfig)\n    .controller('DepartmentsController', DepartmentsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.importfileslist.importeditor', {\n        url: '/editor/{importFileId}',\n        views: {'wideColumnView@product': {\n            templateUrl: 'main/product/importeditor/importeditor.tpl.html',\n            controller: 'ArticleImportEditorController as vm'\n        }},\n        resolve: {\n            importFile: importFileResolver,\n            collections: collectionsResolver,\n            itemGroups: itemGroupsResolver,\n            articleTypes: articleTypesResolver\n        }\n    });\n}\n\n// @ngInject\nfunction importFileResolver($stateParams, FileDataImportApiService) {\n    return FileDataImportApiService.getImportFile($stateParams.importFileId);\n}\n\n// @ngInject\nfunction collectionsResolver(FileDataImportApiService) {\n    return FileDataImportApiService.getArticleCollections();\n}\n\n// @ngInject\nfunction articleTypesResolver(ArticleTypesApiService, $stateParams) {\n    return ArticleTypesApiService.getAll($stateParams.searchTerm);\n}\n\n// @ngInject\nfunction itemGroupsResolver(FileDataImportApiService) {\n    return FileDataImportApiService.getItemGroups();\n}\n\n// @ngInject\nfunction ArticleImportEditorController($scope, $state, importFile, collections, articleTypes, itemGroups, FileDataImportApiService, loadSpinnerService,\n                                       ToasterService, $translate, AuthService) {\n    var vm = this;\n    var overviewGrid = {};\n    var articleGroupingsGrid = {};\n    var intrastatCodeLength = 12;\n\n    var oldArticleGroupingRowValues = {\n        alternativeArticleNumber: \"\",\n        articleName: \"\",\n        itemGroupString: \"\",\n        purchaseCost: \"\",\n        salesPrice: \"\",\n        collection: \"\"\n    };\n\n    var errorColor = 'red';\n    var warningColor = '#ffff33';\n    var noErrorColor = 'green';\n\n    vm.importFile = importFile;\n    //default sort\n    vm.importFile.articlesOrdersImportRows = _.sortBy(vm.importFile.articlesOrdersImportRows,['alternativeArticleNumber','variant1Name', 'variant2Name']);\n\n    var importFileCollection = new wijmo.collections.CollectionView(vm.importFile.articlesOrdersImportRows);\n\n    vm.validationErrors = [];\n\n    vm.orderInfo = {\n        orderNumberExternal: 0,\n        plannedDeliveryDate: new Date()\n    };\n\n    // --- Read only data sets ---\n    vm.collections = collections;\n    vm.collectionCodes = [];\n    vm.itemGroups = [];\n    vm.itemGroupNamesAndCodes = [];\n    vm.articleTypes = articleTypes;\n    vm.articleTypeNames = [];\n\n    // --- Overview section and general functions. ---\n    vm.captureOverviewGrid = captureOverviewGrid;\n    vm.saveImportFile = saveImportFile;\n    vm.saveAndFinalize = saveAndFinalize;\n    vm.wjAutoCompleteSetDefaultValue = wjAutoCompleteSetDefaultValue;\n    vm.setWjDefaultItemGroup = setWjDefaultItemGroup;\n    vm.setWjDefaultArticleType = setWjDefaultArticleType;\n\n    // --- Overview grid style ---\n    vm.getAlternativeArticleNumberStyle = getAlternativeArticleNumberStyle;\n    vm.getItemGroupStyle = getItemGroupStyle;\n    vm.getArticleTypeStyle = getArticleTypeStyle;\n    vm.getColorVariantStyle = getColorVariantStyle;\n    vm.getSizeVariantStyle = getSizeVariantStyle;\n    vm.getBarcodeStyle = getBarcodeStyle;\n    vm.getCollectionStyle = getCollectionStyle;\n    vm.getPricesStyle = getPricesStyle;\n    vm.getIntrastatStyle = getIntrastatStyle;\n    vm.getDepartmentStyle = getDepartmentStyle;\n\n    // --- Articles section variables and vm exposed functions. ---\n    vm.distinctAltArticleNumbers = [];\n    vm.distinctArticleNames = [];\n    vm.altArticleNumberChange = {\n        from: \"\",\n        to: \"\"\n    };\n    vm.articleNameChange = {\n        from: \"\",\n        to: \"\"\n    };\n    vm.changeAllAltArticleNumbers = changeAllAltArticleNumbers;\n    vm.changeAllArticleNames = changeAllArticleNames;\n    vm.rowsGroupedByArticle = [];\n    vm.captureArticleGroupingsGrid = captureArticleGroupingsGrid;\n    vm.registerOldArticleGroupingInfo = registerOldArticleGroupingInfo;\n    vm.copyArticleGroupInformationToAllRelatedRows = copyArticleGroupInformationToAllRelatedRows;\n\n    // --- Colors section variables and vm exposed functions ---\n    vm.distinctColors = [];\n    vm.colorChange = {\n        from: \"\",\n        to: \"\"\n    };\n    vm.changeAllColors = changeAllColors;\n    vm.rowsGroupedByColor = {};\n    vm.collectionChanged = collectionChanged;\n    vm.itemGroupChanged = itemGroupChanged;\n    vm.articleTypeChanged = articleTypeChanged;\n\n    // --- View switching ---\n    vm.switchToOverview = switchToOverview;\n    vm.switchToArticles = switchToArticles;\n    vm.switchToArticleVariants = switchToArticleVariants;\n    vm.switchToColors = switchToColors;\n    vm.switchToSizes = switchToSizes;\n    vm.switchToSubCategories = switchToSubCategories;\n    vm.viewVisibility = {\n        overview: true,\n        articles: false,\n        articleVariants: false,\n        colors: false,\n        sizes: false,\n        subCategories: false\n    };\n    vm.setIsEditingTrue = setIsEditingTrue;\n    vm.setIsEditingFalse = setIsEditingFalse;\n    vm.isEditing = false;\n\n    vm.isFileDataOkay = isBarcodeOnWrongArticle;\n\n    vm.showWarningToaster = showWarningToaster;\n    vm.canAccess = AuthService.canAccess;\n    vm.isAnyBarcodeOnWrongArticle = isAnyBarcodeOnWrongArticle;\n\n    vm.printDebug = printDebug;\n    vm.tempvar = \"\";\n\n    activate();\n\n    function activate() {\n\n        _.forEach(vm.collections, function(collection) {\n            vm.collectionCodes.push(collection.collectionCode);\n        });\n\n        if (vm.importFile.company) {\n            vm.itemGroups = _.filter(itemGroups, function(itemGroup) {\n                var containsCompany = false;\n                _.forEach(itemGroup.brand.companies, function(company) {\n                    if (company.id === vm.importFile.company.id) {\n                        containsCompany = true;\n                    }\n                });\n                return containsCompany;\n            });\n            _.forEach(vm.itemGroups, function(itemGroup) {\n                vm.itemGroupNamesAndCodes.push(itemGroup.itemGroupCode + ' ' + itemGroup.itemGroupShortName);\n            });\n        }\n\n        vm.importFile.shouldGenerateOrder = false;\n\n        $scope.$watch(function() { return vm.importFile.shouldGenerateOrder; }, function() {\n            var hasError = false;\n            if (vm.importFile.shouldGenerateOrder) {\n                hasError = validateOrderInformation();\n            }\n            if (hasError) {\n                vm.importFile.shouldGenerateOrder = false;\n                applyScope();\n            }\n        });\n\n        vm.articleTypeNames = _.map(vm.articleTypes, function (o) { return o.articleTypeName; }); // + ' (' + o.articleSystemType + ')'; });\n    }\n\n    function captureOverviewGrid(sender) {\n        overviewGrid = sender;\n        overviewGrid.itemsSource = importFileCollection;\n    }\n\n    // =================================================\n    //  Editor view switching\n    // =================================================\n    function switchToOverview() {\n        setVisibilityToNone();\n        vm.viewVisibility.overview = true;\n        refreshOverviewGrid();\n        applyScope();\n    }\n\n    function switchToArticles() {\n        constructDistinctArticleData();\n        groupRowsByArticle();\n\n        setVisibilityToNone();\n        vm.viewVisibility.articles = true;\n        applyScope();\n    }\n\n    function switchToArticleVariants() {\n        // Prep work here.\n        setVisibilityToNone();\n        vm.viewVisibility.articleVariants = true;\n        applyScope();\n    }\n\n    function switchToColors() {\n        constructDistinctColorData();\n        groupRowsByColor();\n\n        setVisibilityToNone();\n        vm.viewVisibility.colors = true;\n        applyScope();\n    }\n\n    function switchToSizes() {\n        // Prep work here.\n        setVisibilityToNone();\n        vm.viewVisibility.sizes = true;\n        applyScope();\n    }\n\n    function switchToSubCategories() {\n        // Prep work here.\n        setVisibilityToNone();\n        vm.viewVisibility.subCategories = true;\n        applyScope();\n    }\n\n    // Set all visibility determining variables to false.\n    function setVisibilityToNone() {\n        vm.viewVisibility.overview = false;\n        vm.viewVisibility.articles = false;\n        vm.viewVisibility.articleVariants = false;\n        vm.viewVisibility.colors = false;\n        vm.viewVisibility.sizes = false;\n        vm.viewVisibility.subCategories = false;\n    }\n\n    // =================================================\n    //  General\n    // =================================================\n    // Sends that updated data to the backend and retreives the result (meaning an updated data structure potentially\n    // containing references to linked data structures)\n    function saveImportFile() {\n\n        _.forEach(vm.importFile.articlesOrdersImportRows, function(importRow) {\n            //importRow.plannedDeliveryDate = vm.orderInfo.plannedDeliveryDate;\n            importRow.orderNumberExternal = vm.orderInfo.orderNumberExternal;\n        });\n\n        vm.validationErrors = [];\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiService.updateArticlesOrdersImportFile(vm.importFile).then(function(response) {\n            console.log(response);\n\n            vm.importFile = response;\n            overviewGrid.itemsSource = new wijmo.collections.CollectionView(vm.importFile.articlesOrdersImportRows);\n\n            refreshOverviewGrid();\n            constructDistinctArticleData();\n            groupRowsByArticle();\n            applyScope();\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    // Finalizes the import file, generating new data structures in the backend. This decision is final.\n    function saveAndFinalize() {\n\n        _.forEach(vm.importFile.articlesOrdersImportRows, function(importRow) {\n            //importRow.plannedDeliveryDate = vm.orderInfo.plannedDeliveryDate;\n            importRow.orderNumberExternal = vm.orderInfo.orderNumberExternal;\n        });\n\n        vm.validationErrors = [];\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiService.updateAndFinalizeArticlesOrdersImportFile(vm.importFile).then(function(response) {\n            console.log(response);\n\n            $state.go('product.importfileslist');\n        }, function(error) {\n            console.log(error);\n\n            vm.validationErrors.push(error.message);\n\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    // Needed to determine the value that value that the autoComplete should show on load.\n    function wjAutoCompleteSetDefaultValue(sender, rowItem, propertyName) {\n        sender.selectedValue = rowItem[propertyName];\n    }\n\n    // Needed to determine the value that the autoComplete should show when switching to the view\n    function setWjDefaultItemGroup(sender, rowItem) {\n        var startingItem = _.find(vm.itemGroupNamesAndCodes, function(item) {\n            return item.indexOf(rowItem.itemGroupString) > -1;\n        });\n        sender.selectedValue = startingItem;\n    }\n\n    function setWjDefaultArticleType(sender, rowItem) {\n        var startingItem = _.find(vm.articleTypeNames, function(item) {\n            return item.indexOf(rowItem.articleTypeString) > -1;\n        });\n        sender.selectedValue = startingItem;\n    }\n\n    // ================================================================\n    //  Overview grid style (Color code cells depending on situation)\n    // ================================================================\n    // Alternative Article Number\n    function getAlternativeArticleNumberStyle(cellItem) {\n        var style = {};\n        if (cellItem.alternativeArticleNumber === undefined || cellItem.alternativeArticleNumber === \"\" || isBarcodeOnWrongArticle(cellItem)) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else if (cellItem.article === undefined || (cellItem.article !== undefined && cellItem.alternativeArticleNumber.toLowerCase() !== cellItem.article.alternativeArticleNumber.toLowerCase())) {\n            style['background-color'] = warningColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    // Intrastat\n    function getIntrastatStyle(cellItem) {\n        var style = {};\n\n        style['color'] = noErrorColor;\n\n        if (cellItem.intrastatCode && cellItem.intrastatCode.length !== intrastatCodeLength) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        }\n\n        return style;\n    }\n\n    // Item Group\n    function getItemGroupStyle(cellItem) {\n        var style = {};\n\n        var containsCompany = false;\n        if (cellItem.itemGroup && cellItem.itemGroup.brand) {\n            _.forEach(cellItem.itemGroup.brand.companies, function(company) {\n                if (company.id === vm.importFile.company.id) {\n                    containsCompany = true;\n                }\n            });\n        }\n\n        if (cellItem.itemGroup === undefined || containsCompany) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    // Intrastat\n    function getArticleTypeStyle(cellItem) {\n        var style = {};\n\n        style['color'] = noErrorColor;\n\n        return style;\n    }\n\n    // Color variant\n    function getColorVariantStyle(cellItem) {\n        var style = {};\n        if (cellItem.variant1Name === undefined || cellItem.variant1Name === \"\") {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else if (cellItem.variantDetail1 === undefined && cellItem.variant1Name !== \"\") {\n            style['background-color'] = warningColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    // Size variant\n    function getSizeVariantStyle(cellItem) {\n        var style = {};\n        if (cellItem.variantDetail2 === undefined /*cellItem.variant2Name === undefined || cellItem.variant2Name === \"\"*/) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else if (cellItem.variantDetail2 === undefined && cellItem.variant2Name !== \"\") {\n            style['background-color'] = warningColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    // Barcode\n    function getBarcodeStyle(cellItem) {\n        var style = {};\n        var itemsWithSameBarcode = _.filter(vm.importFile.articlesOrdersImportRows, function(row) {\n            return row.barcode === cellItem.barcode;\n        });\n\n        var existsDifferentArticleWithSameBarcode = false;\n        for (var i = 0; i < itemsWithSameBarcode.length; i++) {\n            if (itemsWithSameBarcode[i].alternativeArticleNumber !== cellItem.alternativeArticleNumber ||\n                itemsWithSameBarcode[i].variant1Name !== cellItem.variant1Name ||\n                itemsWithSameBarcode[i].variant2Name !== cellItem.variant2Name) {\n                existsDifferentArticleWithSameBarcode = true;\n                break;\n            }\n        }\n\n        if (cellItem.barcode === undefined || cellItem.barcode === \"\" || existsDifferentArticleWithSameBarcode) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else if (cellItem.articleVariant === undefined) {\n            style['background-color'] = warningColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n\n        return style;\n    }\n\n    // Collection\n    function getCollectionStyle(cellItem) {\n        var style = {};\n        if (cellItem.articleCollection === undefined) {\n            style['color'] = 'white';\n            style['background-color'] = errorColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    // Prices\n    function getPricesStyle(cellItem) {\n        var style = {};\n        if (cellItem.purchaseCost * 2 > cellItem.salesPrice || cellItem.purchaseCost * 6 < cellItem.salesPrice) {\n            style['background-color'] = warningColor;\n        } else {\n            style['color'] = noErrorColor;\n        }\n        return style;\n    }\n\n    // Department\n    function getDepartmentStyle(cellItem) {\n        var style = {};\n        if (cellItem.departmentCode !== \"\" && (cellItem.department === undefined || cellItem.department.id === undefined)) {\n            style['background-color'] = errorColor;\n            style['color'] = 'white';\n        } else {\n            style['color'] = noErrorColor;\n        }\n\n        return style;\n    }\n\n\n    // =================================================\n    //  Articles section\n    // =================================================\n    function constructDistinctArticleData() {\n        vm.distinctAltArticleNumbers = [];\n        vm.distinctArticleNames = [];\n\n        var uniqueObjectsWithAltArticleNumbers = _.uniq(vm.importFile.articlesOrdersImportRows, false, function(item) {\n            return item.alternativeArticleNumber;\n        });\n\n        var uniqueObjectsWithArticleNames = _.uniq(vm.importFile.articlesOrdersImportRows, false, function(item) {\n            return item.articleName;\n        });\n\n        _.forEach(uniqueObjectsWithAltArticleNumbers, function(item) {\n            vm.distinctAltArticleNumbers.push(item.alternativeArticleNumber);\n        });\n\n        _.forEach(uniqueObjectsWithArticleNames, function(item) {\n            vm.distinctArticleNames.push(item.articleName);\n        });\n    }\n\n    function groupRowsByArticle() {\n        vm.rowsGroupedByArticle = [];\n\n        var fullArticleGrouping = _.groupBy(vm.importFile.articlesOrdersImportRows, function(importRow) {\n            return getArticleGroupingKey(importRow);\n        });\n\n        var groupingKeys = Object.keys(fullArticleGrouping);\n\n        _.forEach(groupingKeys, function(key) {\n            vm.rowsGroupedByArticle.push(fullArticleGrouping[key][0]);\n        });\n\n        articleGroupingsGrid.itemsSource = new wijmo.collections.CollectionView(vm.rowsGroupedByArticle);\n    }\n\n    function changeAllAltArticleNumbers() {\n        var rowsToChange = _.filter(vm.importFile.articlesOrdersImportRows, {alternativeArticleNumber: vm.altArticleNumberChange.from});\n\n        for (var i = 0; i < rowsToChange.length; i++) {\n            rowsToChange[i].alternativeArticleNumber = vm.altArticleNumberChange.to;\n        }\n        vm.altArticleNumberChange.from = vm.altArticleNumberChange.to;\n\n        constructDistinctArticleData();\n        groupRowsByArticle();\n    }\n\n    function changeAllArticleNames() {\n        var rowsToChange = _.filter(vm.importFile.articlesOrdersImportRows, { articleName: vm.articleNameChange.from });\n\n        for (var i = 0; i < rowsToChange.length; i++) {\n            rowsToChange[i].articleName = vm.articleNameChange.to;\n        }\n        vm.articleNameChange.from = vm.articleNameChange.to;\n\n        constructDistinctArticleData();\n        groupRowsByArticle();\n    }\n\n    function captureArticleGroupingsGrid(sender) {\n        articleGroupingsGrid = sender;\n        articleGroupingsGrid.itemsSource = new wijmo.collections.CollectionView(vm.rowsGroupedByArticle);\n    }\n\n    function registerOldArticleGroupingInfo() {\n        var row = articleGroupingsGrid.itemsSource.currentEditItem;\n\n        oldArticleGroupingRowValues.alternativeArticleNumber = row.alternativeArticleNumber;\n        oldArticleGroupingRowValues.articleName = row.articleName;\n        oldArticleGroupingRowValues.articleTypeString = row.articleTypeString;\n        oldArticleGroupingRowValues.itemGroupString = row.itemGroupString;\n        oldArticleGroupingRowValues.purchaseCost = row.purchaseCost;\n        oldArticleGroupingRowValues.salesPrice = row.salesPrice;\n        oldArticleGroupingRowValues.collection = row.collection;\n    }\n\n    function copyArticleGroupInformationToAllRelatedRows(rowItem) {\n\n        var row;\n        if (typeof rowItem === 'undefined') {\n            row = articleGroupingsGrid.itemsSource.currentEditItem;\n        } else {\n            row = rowItem;\n        }\n\n        var key = getArticleGroupingKey(oldArticleGroupingRowValues);\n\n        var fullArticleGrouping = _.groupBy(vm.importFile.articlesOrdersImportRows, function(importRow) {\n            return getArticleGroupingKey(importRow);\n        });\n\n        var rowsToUpdate = fullArticleGrouping[key];\n\n        _.forEach(rowsToUpdate, function(rowToUpdate) {\n            rowToUpdate.alternativeArticleNumber = row.alternativeArticleNumber;\n            rowToUpdate.articleName = row.articleName;\n            rowToUpdate.articleTypeString = row.articleTypeString;\n            rowToUpdate.itemGroupString = row.itemGroupString;\n            rowToUpdate.purchaseCost = row.purchaseCost;\n            rowToUpdate.salesPrice = row.salesPrice;\n            rowToUpdate.collection = row.collection;\n        });\n    }\n\n    function getArticleGroupingKey(importRow) {\n        return importRow.alternativeArticleNumber + \" \" +\n            importRow.articleName + \" \" +\n            importRow.itemGroupString + \" \" +\n            importRow.purchaseCost + \" \" +\n            importRow.salesPrice + \" \" +\n            importRow.collection;\n    }\n\n    // =================================================\n    //  Colors section\n    // =================================================\n    function constructDistinctColorData() {\n        vm.distinctColors = [];\n\n        var uniqueObjectsByColor = _.uniq(vm.importFile.articlesOrdersImportRows, false, function(item) {\n            return item.variant1Name;\n        });\n\n        _.forEach(uniqueObjectsByColor, function(item) {\n            vm.distinctColors.push(item.variant1Name);\n        });\n    }\n\n    function groupRowsByColor() {\n        vm.rowsGroupedByColor = {};\n\n        vm.rowsGroupedByColor = _.groupBy(vm.importFile.articlesOrdersImportRows, function(importRow) {\n            return importRow.variant1Name;\n        });\n    }\n\n    function changeAllColors() {\n        var rowsToChange = _.filter(vm.importFile.articlesOrdersImportRows, { variant1Name: vm.colorChange.from });\n\n        for (var i = 0; i < rowsToChange.length; i++) {\n            rowsToChange[i].variant1Name = vm.colorChange.to;\n        }\n        vm.colorChange.from = vm.colorChange.to;\n\n        constructDistinctColorData();\n    }\n\n    function collectionChanged(s, rowItem) {\n        if (!s.selectedItem || s.isDroppedDown) {\n            return;\n        }\n\n        oldArticleGroupingRowValues.alternativeArticleNumber = rowItem.alternativeArticleNumber;\n        oldArticleGroupingRowValues.articleName = rowItem.articleName;\n        oldArticleGroupingRowValues.articleTypeString = rowItem.articleTypeString;\n        oldArticleGroupingRowValues.itemGroupString = rowItem.itemGroupString;\n        oldArticleGroupingRowValues.purchaseCost = rowItem.purchaseCost;\n        oldArticleGroupingRowValues.salesPrice = rowItem.salesPrice;\n        oldArticleGroupingRowValues.collection = rowItem.collection;\n\n        var selectedItem = s.selectedItem;\n\n        rowItem.collection = selectedItem;\n\n        copyArticleGroupInformationToAllRelatedRows(rowItem);\n    }\n\n    function itemGroupChanged(s, rowItem) {\n        if (!s.selectedItem || s.isDroppedDown) {\n            return;\n        }\n\n        oldArticleGroupingRowValues.alternativeArticleNumber = rowItem.alternativeArticleNumber;\n        oldArticleGroupingRowValues.articleName = rowItem.articleName;\n        oldArticleGroupingRowValues.articleTypeString = rowItem.articleTypeString;\n        oldArticleGroupingRowValues.itemGroupString = rowItem.itemGroupString;\n        oldArticleGroupingRowValues.purchaseCost = rowItem.purchaseCost;\n        oldArticleGroupingRowValues.salesPrice = rowItem.salesPrice;\n        oldArticleGroupingRowValues.collection = rowItem.collection;\n\n        var selectedItem = s.selectedItem;\n\n        rowItem.itemGroupString = selectedItem.split(' ')[0];\n\n        copyArticleGroupInformationToAllRelatedRows(rowItem);\n    }\n\n    function articleTypeChanged(s, rowItem) {\n        if (!s.selectedItem || s.isDroppedDown) {\n            return;\n        }\n\n        oldArticleGroupingRowValues.articleTypeString = rowItem.articleTypeString;\n\n        var selectedItem = s.selectedItem;\n\n        rowItem.articleTypeString = selectedItem.split(' ')[0];\n\n        copyArticleGroupInformationToAllRelatedRows(rowItem);\n    }\n\n    function isAnyBarcodeOnWrongArticle() {\n        var returnValue = false;\n        _.forEach(vm.importFile.articlesOrdersImportRows, function(row) {\n            if (row === undefined || row === null) {\n                return;\n            }\n            var result = isBarcodeOnWrongArticle(row);\n            if (result === true) {\n                returnValue = true;\n                return false; // Break _.forEach()\n            }\n        });\n        return returnValue;\n    }\n\n    function isBarcodeOnWrongArticle(row) {\n        // if ((row.article === undefined || (row.article !== undefined && row.alternativeArticleNumber !== row.article.alternativeArticleNumber)) &&\n        //     row.articleVariant !== undefined && (row.article !== undefined && row.articleVariant.article.id === row.article.id)) {\n        //     return true;\n        // }\n\n        if (row.articleVariant === undefined) {\n            return false;\n        }\n\n        var articleNumberIsntTheSame = (row.article !== undefined && row.alternativeArticleNumber !== row.article.alternativeArticleNumber);\n        var articleDidntExistButArticleVariantDid = (row.articleVariant.article !== undefined && row.article === undefined);\n        var articleIdIsntTheSame = (row.article !== undefined && row.articleVariant.article !== undefined && row.articleVariant.article.id !== row.article.id);\n\n        if (articleNumberIsntTheSame ||\n            articleDidntExistButArticleVariantDid ||\n            articleIdIsntTheSame) {\n            return true;\n        }\n\n        return false;\n    }\n\n    function setIsEditingTrue() {\n        vm.isEditing = true;\n        applyScope();\n    }\n\n    function setIsEditingFalse() {\n        vm.isEditing = false;\n        applyScope();\n    }\n\n    function refreshOverviewGrid() {\n        overviewGrid.invalidate();\n    }\n\n    function applyScope() {\n        if (!$scope.$$phase) {\n            $scope.$apply();\n        }\n    }\n\n    function validateOrderInformation() {\n        var hasError = false;\n\n        if (vm.importFile.company === undefined) {\n            showWarningToaster($translate.instant('import.companyIsMissing'));\n            hasError = true;\n        }\n        if (vm.importFile.location === undefined) {\n            showWarningToaster($translate.instant('import.locationIsMissing'));\n            hasError = true;\n        }\n\n        var someRowsAreWithoutQuantity = _.some(vm.importFile.articlesOrdersImportRows, function(importRow) {\n            return importRow.quantity === undefined || importRow.quantity === \"\";\n        });\n\n        if (someRowsAreWithoutQuantity) {\n            showWarningToaster($translate.instant('import.quantitiesAreMissing'));\n            hasError = true;\n        }\n\n        var someQuantitiesAreMalformed = _.some(vm.importFile.articlesOrdersImportRows, function(importRow) {\n            return importRow.quantity.indexOf('.') !== -1;\n        });\n\n        if (someQuantitiesAreMalformed) {\n            showWarningToaster($translate.instant('import.quantitiesAreMalformed'));\n            hasError = true;\n        }\n\n        return hasError;\n    }\n\n    function showWarningToaster(message) {\n        var title = $translate.instant('common.warning');\n        ToasterService.showWarning(message, title);\n    }\n\n    function printDebug() {\n        console.log(\"vm.importFile\");\n        console.log(vm.importFile);\n\n        console.log(\"vm.rowsGroupedByArticle\");\n        console.log(vm.rowsGroupedByArticle);\n\n        console.log(\"vm.rowsGroupedByColor\");\n        console.log(vm.rowsGroupedByColor);\n\n        console.log(\"Refreshing grid...\");\n        refreshOverviewGrid();\n\n        console.log(\"vm.collections\");\n        console.log(vm.collections);\n\n        console.log(\"vm.itemGroups\");\n        console.log(vm.itemGroups);\n\n        applyScope();\n    }\n}\n\nangular\n    .module('importfileslist.importeditor', [])\n    .config(stateConfig)\n    .controller('ArticleImportEditorController', ArticleImportEditorController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.importfileslist',{\n        url: '/importfileslist',\n        views: {'wideColumnView@product': {\n            templateUrl: 'main/product/importfileslist/importfileslist.tpl.html',\n            controller: 'ImportFilesListController as vm'\n        }}\n\n    });\n}\n\n// @ngInject\nfunction ImportFilesListController($state, loadSpinnerService, FileDataImportApiService, AuthService) {\n    console.log(\"ImportFilesListController start\");\n    var vm = this;\n\n    vm.currentPage = 1;\n    vm.totalItems = 0;\n    vm.itemsPerPage = 15;\n    vm.loadImportFiles = loadImportFiles;\n\n    vm.importFiles = [];\n\n    vm.editImportFile = editImportFile;\n    vm.deleteImportFile = deleteImportFile;\n    vm.canAccess = AuthService.canAccess;\n\n    activate();\n\n    function activate() {\n        loadImportFiles();\n    }\n\n    function loadImportFiles() {\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiService.getImportFiles(vm.currentPage, vm.searchTerm, vm.itemsPerPage).then(function(response) {\n            vm.totalItems = response.totalItems;\n            vm.importFiles = response.data;\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function editImportFile(importFileId) {\n        $state.go('product.importfileslist.importeditor', { importFileId: importFileId });\n    }\n\n    function deleteImportFile(importId) {\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiService.deleteArticlesOrdersImportFile(importId).then(function() {\n            var deletedItem = _.find(vm.importFiles, function(importFile) {\n                return importFile.id === importId;\n            });\n\n            vm.importFiles = _.without(vm.importFiles, deletedItem);\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n}\n\nangular\n    .module('product.importfileslist', ['importfileslist.articleimport', 'importfileslist.importeditor'])\n    .config(stateConfig)\n    .controller('ImportFilesListController', ImportFilesListController);\n","// @ngInject\nfunction IntrastatApiService(ResourcesService) {\n\n    var endpoint = 'intrastats';\n\n    return {\n        getIntrastats: ResourcesService.apiFactory.get(endpoint),\n        getIntrastat: ResourcesService.apiFactory.get(endpoint),\n        saveIntrastat: ResourcesService.apiFactory.save(endpoint,'Intrastat'),\n        deleteIntrastat: ResourcesService.apiFactory.delete(endpoint,'Intrastat')\n    };\n\n\n}\n\nangular.module('intrastat.api', [])\n  .factory('IntrastatApiService', IntrastatApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.intrastats.new', {\n        url:'/new',\n        views: {\n            'productView@product': {\n             templateUrl: 'main/product/intrastats/intrastat/intrastat.tpl.html',\n            controller: 'IntrastatController as vm'\n        }},\n        resolve: {\n            intrastat:  function() { return {}; },\n            isNewIntrastat: function() {\n                return true;\n            }\n        }\n    });\n\n    $stateProvider.state('product.intrastats.intrastat', {\n        url:'/{intrastatId}',\n        views: {\n            'productView@product': {\n            templateUrl: 'main/product/intrastats/intrastat/intrastat.tpl.html',\n            controller: 'IntrastatController as vm'\n        }},\n        resolve: {\n            intrastat: intrastatResolver,\n            isNewIntrastat: function() {\n                return false;\n            }\n        }\n    });\n\n}\n\n// @ngInject\nfunction intrastatResolver($stateParams, IntrastatApiService) {\n    return IntrastatApiService.getIntrastat($stateParams.intrastatId);\n}\n\n// @ngInject\nfunction IntrastatController($state, intrastat, loadSpinnerService, IntrastatApiService, ToasterService, confirmationDialogService, $translate, isNewIntrastat) {\n    var vm = this;\n\n    var intrastatCopy = {};\n\n    vm.intrastat = intrastat;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveIntrastat = saveIntrastat;\n    vm.deleteIntrastat = deleteIntrastat;\n\n    vm.isNewIntrastat = isNewIntrastat;\n    vm.isEditing = vm.isNewIntrastat;\n    vm.isAllInformationValid =isAllInformationValid;\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n\n    function activate() {\n        prepareData();\n        if (vm.isNewIntrastat) {\n            vm.intrastat = {};\n        }\n    }\n\n    function isAllInformationValid() {\n        return true;\n    }\n\n    function enableEditing() {\n        intrastatCopy = angular.copy(vm.intrastat);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.intrastat = intrastatCopy;\n        vm.isEditing = false;\n    }\n\n    function saveIntrastat() {\n        loadSpinnerService.start('mainSpinner');\n        IntrastatApiService.saveIntrastat(vm.intrastat).then(function(response) {\n            vm.intrastat = response;\n            prepareData();\n            vm.isNewIntrastat = false;\n            vm.isEditing = false;\n            $state.go('product.intrastats.intrastat', {intrastatId: vm.intrastat.id});\n        }, function(error) {\n            console.log(error);\n            if (error.status !== 403) {\n                ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n            }\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function deleteIntrastat() {\n        confirmationDialogService\n            .showDialog($translate.instant('intrastat.confirmDelete'))\n            .then(function(confirmation) {\n                if (confirmation) {\n                    loadSpinnerService.start('mainSpinner');\n                    IntrastatApiService.deleteIntrastat(vm.intrastat.id).then(function(response) {\n                        vm.intrastat = response;\n                        prepareData();\n                        vm.isNewIntrastat = false;\n                        vm.isEditing = false;\n                        $state.go('product.intrastats');\n                    }, function(error) {\n                        console.log(error);\n                        if (error.status !== 403) {\n                            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                        }\n                    }).then(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n            });\n    }\n\n    function toggleDisplayForm(intrastat) {\n        intrastat.showEditForm = !intrastat.showEditForm;\n    }\n\n    function prepareData() {\n        if (vm.intrastat === undefined) {\n            return;\n        }\n\n        vm.intrastatCopy = angular.copy(vm.intrastat);\n    }\n\n\n}\n\nangular\n    .module('intrastats.intrastat', [])\n    .config(stateConfig)\n    .controller('IntrastatController', IntrastatController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.intrastats', {\n        url: '/intrastats?searchTerm',\n        views: {\n            'productList@product': {\n            templateUrl: 'main/product/intrastats/intrastats.tpl.html',\n            controller: 'IntrastatsController as vm'\n        }},\n        resolve: {\n            intrastats: intrastatsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction intrastatsResolver(IntrastatApiService, $stateParams) {\n    return IntrastatApiService.getIntrastats({ page: 0, searchTerm: $stateParams.searchTerm, itemsPerPage: 20});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n// @ngInject\nfunction IntrastatsController($rootScope, $state, $scope, intrastats, IntrastatApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n\n    vm.intrastats = intrastats;\n    vm.selectedIntrastatId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.intrastatId; }, function(newValue, oldValue) {\n            vm.selectedIntrastatId = parseInt($state.params.intrastatId,10);\n        });\n        $rootScope.$on('Intrastat.Inserted', function(event, response) {\n        });\n        $rootScope.$on('Intrastat.Updated', function(event, response) {\n        });\n        $rootScope.$on('Intrastat.Deleted', function(event, response) {\n        });\n        $rootScope.$on('Intrastat.Changed', function(event, response) {\n            loadIntrastats();\n        });\n    }\n\n    function loadIntrastats() {\n        loadSpinnerService.start('mainSpinner');\n        var request = { page: (vm.currentPage - 1), searchTerm:vm.searchTerm, pageSize:vm.itemsPerPage};\n        IntrastatApiService.getIntrastats(request).then(function(response) {\n            vm.intrastats = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadIntrastats();\n    }\n\n}\n\nangular\n    .module('product.intrastats', ['intrastat.api', 'intrastats.intrastat'])\n    .config(stateConfig)\n    .controller('IntrastatsController', IntrastatsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('product.maingroups.new', {\n        url: '/new',\n        views: {\n            \"wideColumnView@product\": {\n                templateUrl: 'main/product/maingroups/maingroup/maingroup.tpl.html',\n                controller: 'MainGroupController as vm'\n            }\n        },\n        resolve: {\n            mainGroup: function () {\n                return {\n                    attributeVisibility: {\n                        intrastat: 'visible',\n                        meursing: 'visible',\n                        productHeight: 'visible',\n                        productLength: 'visible',\n                        productWeight: 'visible',\n                        productWidth: 'visible',\n                        storageLocation: 'visible'\n                    },\n                    brands: []\n                };\n            },\n            brands: brandsResolver,\n            isNewMainGroup: function () { return true; },\n            departments: departmentsResolver,\n            tenantConfig: tenantConfigResolver,\n            variants: variantsResolver,\n            variantGroups: variantGroupsResolver,\n            vats: vatsResolver,\n            intrastats: intrastatResolver,\n            subCategories: subCategoriesResolver,\n            salesChannels: salesChannelResolver,\n            accounts: accountsResolver,\n            businessAreas: businessAreasReasolver\n        }\n    });\n\n    $stateProvider.state('product.maingroups.maingroup', {\n        url: '/{mainGroupId}',\n        views: {\n            \"wideColumnView@product\": {\n                templateUrl: 'main/product/maingroups/maingroup/maingroup.tpl.html',\n                controller: 'MainGroupController as vm'\n            }\n        },\n        resolve: {\n            mainGroup: mainGroupResolver,\n            brands: brandsResolver,\n            isNewMainGroup: function () { return false; },\n            departments: departmentsResolver,\n            tenantConfig: tenantConfigResolver,\n            variants: variantsResolver,\n            variantGroups: variantGroupsResolver,\n            vats: vatsResolver,\n            intrastats: intrastatResolver,\n            subCategories: subCategoriesResolver,\n            salesChannels: salesChannelResolver,\n            accounts: accountsResolver,\n            businessAreas: businessAreasReasolver\n        }\n    });\n}\n\n// @ngInject\nfunction businessAreasReasolver(MaingroupsApiService) {\n    return MaingroupsApiService.getBusinessAreas();\n}\n\n// @ngInject\nfunction intrastatResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getIntrastats();\n}\n// @ngInject\nfunction variantGroupsResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getVariantGroups();\n}\n\n// @ngInject\nfunction vatsResolver(VatsApiService) {\n    return VatsApiService.getVats();\n}\n\n// @ngInject\nfunction variantsResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getVariants();\n}\n\n// @ngInject\nfunction mainGroupResolver($stateParams, MaingroupsApiService) {\n    return MaingroupsApiService.getMainGroup($stateParams.mainGroupId);\n}\n\n// @ngInject\nfunction brandsResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getBrands();\n}\n\n// @ngInject\nfunction departmentsResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getDepartments();\n}\n\n// @ngInject\nfunction tenantConfigResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getTenantConfig();\n}\n\n//@ngInject\nfunction subCategoriesResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getSubCategories();\n}\n\n//@ngInject\nfunction salesChannelResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getSalesChannels();\n}\n\n// @ngInject\nfunction accountsResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getAccounts();\n}\n\n// @ngInject\nfunction MainGroupController($state, mainGroup, brands, loadSpinnerService, MaingroupsApiService, isNewMainGroup, departments, tenantConfig, variants, vats, variantGroups, intrastats, subCategories, salesChannels, accounts, businessAreas, $translate) {\n    var vm = this;\n\n    var mainGroupCopy = {};\n\n    vm.mainGroup = mainGroup;\n    vm.articleCollectionTypes = [\n        { id: 0, description: $translate.instant('common.visible'), value:'visible' },\n        { id: 1, description: $translate.instant('common.hidden'), value:'hidden' }\n    ];\n    vm.attributeVisibility = {\n        intrastat: _.find(vm.articleCollectionTypes, function(t) { return t.value === vm.mainGroup.attributeVisibility.intrastat; }),\n        meursing: _.find(vm.articleCollectionTypes, function(t) { return t.value === vm.mainGroup.attributeVisibility.meursing; }),\n        productHeight: _.find(vm.articleCollectionTypes, function(t) { return t.value === vm.mainGroup.attributeVisibility.productHeight; }),\n        productLength: _.find(vm.articleCollectionTypes, function(t) { return t.value === vm.mainGroup.attributeVisibility.productLength; }),\n        productWeight: _.find(vm.articleCollectionTypes, function(t) { return t.value === vm.mainGroup.attributeVisibility.productWeight; }),\n        productWidth: _.find(vm.articleCollectionTypes, function(t) { return t.value === vm.mainGroup.attributeVisibility.productWidth; }),\n        storageLocation: _.find(vm.articleCollectionTypes, function(t) { return t.value === vm.mainGroup.attributeVisibility.storageLocation; })\n    };\n    vm.brands = [];\n    vm.selectedBrands = [];\n    vm.departments = departments;\n    vm.variants = variants;\n    vm.variantGroups = variantGroups;\n    vm.vats = vats;\n  \n    vm.intrastats = intrastats;\n    vm.subCategories = subCategories;\n    vm.salesChannels = salesChannels;\n    vm.accounts = accounts;\n    vm.businessAreas = businessAreas;\n\n    vm.addBrands = addBrands;\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveMainGroup = saveMainGroup;\n\n    vm.isNewMainGroup = isNewMainGroup;\n    vm.isEditing = vm.isNewMainGroup;\n\n    vm.tenantConfig = tenantConfig;\n    vm.isVatValid = false;\n    vm.isMainGroupVatValid = isMainGroupVatValid;\n    vm.isMainGroupCodeValid = isMainGroupCodeValid;\n    vm.isMainGroupDescriptionValid = isMainGroupDescriptionValid;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.filterVariant1 = filterVariant1;\n    vm.preferredVariantGroups2 = [];\n    vm.toggleDisplayForm = toggleDisplayForm;\n\n    activate();\n \n\n    function activate() {\n        prepareData();\n        if (vm.isNewMainGroup) {\n            vm.mainGroup = {};\n            vm.mainGroup['isVariant'] = true;\n            vm.mainGroup['department'] = vm.departments[0];\n\n            if (!vm.mainGroup.variant1) {\n                vm.mainGroup.variant1 = _.find(vm.variants, { 'id': vm.tenantConfig.variant1 });\n            }\n            if (!vm.mainGroup.variant2) {\n                vm.mainGroup.variant2 = _.find(vm.variants, { 'id': vm.tenantConfig.variant2 });\n            }\n\n        }\n        vm.preferredVariantGroups2 = _.filter(vm.variantGroups, { variant: { id: vm.mainGroup.variant2.id}});\n    }\n\n    function addBrands() {\n        var mainGroups = [vm.mainGroup];\n        var brands = vm.selectedBrands;\n\n        loadSpinnerService.start('mainSpinner');\n        MaingroupsApiService.createItemGroups({ mainGroups: mainGroups, brands: brands }).then(function () {\n            MaingroupsApiService.getMainGroup(vm.mainGroup.id).then(function (response) {\n                vm.mainGroup = response;\n                prepareData();\n                vm.selectedBrands = [];\n            }, function (error) {\n                console.log(error);\n            });\n        }, function (error) {\n            console.log(error);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function filterVariant1() {\n        return function (item) {\n            return item.id !== vm.mainGroup.variant2.id;\n        };\n    }\n\n    function toggleDisplayForm(itemGroup) {\n        if (!itemGroup.showEditForm) { itemGroup.showEditForm = false; }\n        itemGroup.showEditForm = !itemGroup.showEditForm;\n    }\n\n    function enableEditing() {\n        mainGroupCopy = angular.copy(vm.mainGroup);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.mainGroup = mainGroupCopy;\n        vm.isEditing = false;\n        vm.selectedBrands = [];\n    }\n\n    function saveMainGroup() {\n        if (vm.isNewMainGroup) {\n            saveNewMainGroup();\n        } else {\n            updateMainGroup();\n        }\n    }\n\n    function saveNewMainGroup() {\n        loadSpinnerService.start('mainSpinner');\n\n        if (!vm.mainGroup.attributeVisibility) { vm.mainGroup.attributeVisibility = {}; }\n        vm.mainGroup.attributeVisibility.intrastat = vm.attributeVisibility.intrastat.value;\n        vm.mainGroup.attributeVisibility.meursing = vm.attributeVisibility.meursing.value;\n        vm.mainGroup.attributeVisibility.productHeight = vm.attributeVisibility.productHeight.value;\n        vm.mainGroup.attributeVisibility.productLength = vm.attributeVisibility.productLength.value;\n        vm.mainGroup.attributeVisibility.productWeight = vm.attributeVisibility.productWeight.value;\n        vm.mainGroup.attributeVisibility.productWidth = vm.attributeVisibility.productWidth.value;\n        vm.mainGroup.attributeVisibility.storageLocation = vm.attributeVisibility.storageLocation.value;\n\n        MaingroupsApiService.createMainGroup({mainGroup: vm.mainGroup, brands: vm.selectedBrands}).then(function (response) {\n            vm.mainGroup = response;\n            prepareData();\n            vm.selectedBrands = [];\n            vm.isNewMainGroup = false;\n            vm.isEditing = false;\n            $state.go('product.maingroups.maingroup', { mainGroupId: response.id });\n        }, function (error) {\n            console.log(error);\n        }).then(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateMainGroup() {\n        loadSpinnerService.start('mainSpinner');\n\n        vm.mainGroup.attributeVisibility.intrastat = vm.attributeVisibility.intrastat.value;\n        vm.mainGroup.attributeVisibility.meursing = vm.attributeVisibility.meursing.value;\n        vm.mainGroup.attributeVisibility.productHeight = vm.attributeVisibility.productHeight.value;\n        vm.mainGroup.attributeVisibility.productLength = vm.attributeVisibility.productLength.value;\n        vm.mainGroup.attributeVisibility.productWeight = vm.attributeVisibility.productWeight.value;\n        vm.mainGroup.attributeVisibility.productWidth = vm.attributeVisibility.productWidth.value;\n        vm.mainGroup.attributeVisibility.storageLocation = vm.attributeVisibility.storageLocation.value;\n\n        MaingroupsApiService.updateMainGroup({mainGroup: vm.mainGroup, brands: vm.selectedBrands}).then(function (response) {\n            vm.mainGroup = response;\n            prepareData();\n            vm.selectedBrands = [];\n            vm.isEditing = false;\n        }, function (error) {\n            console.log(error);\n        }).then(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function prepareData() {\n        if (vm.mainGroup === undefined) {\n            return;\n        }\n\n        // Filter out brands that are already added.\n        var tempBrands = [];\n        _.forEach(brands, function (brand) {\n            if (!_.find(vm.mainGroup.itemGroups, function (itemGroup) {\n                return itemGroup.brand.id === brand.id;\n            })) {\n                tempBrands.push(brand);\n            }\n        });\n\n        vm.brands = _.sortBy(tempBrands, function (brand) {\n            return brand.brandCode;\n        });\n\n        vm.mainGroup.brands = _.sortBy(vm.mainGroup.brands, function (brand) {\n            return brand.brandCode;\n        });\n    }\n\n    function isAllInformationValid() {\n        return (\n            !vm.isNewMainGroup && \n            isMainGroupDescriptionValid()&& \n            isMainGroupVatValid()\n        ) || (\n            isMainGroupCodeValid() \n        );\n   }\n\n    function isMainGroupVatValid() {\n        if (vm.mainGroup.vat && vm.mainGroup.vat.id !== -1 && vm.mainGroup.vat.id !== undefined) {     \n            return true;\n        }\n        return  false;\n    }\n\n    function isMainGroupCodeValid() {\n        var isMainGroupCodeAlreadyAssigned = _.find(vm.tenantConfig.assignedMainGroupCodes, function (code) {\n            return vm.mainGroup.mainGroupCode === code;\n        });\n\n        if (!isMainGroupCodeAlreadyAssigned && isNumeric(vm.mainGroup.mainGroupCode) && vm.mainGroup.mainGroupCode.length === vm.tenantConfig.articleMainGroupCodeLength) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    function isMainGroupDescriptionValid() {\n        return vm.mainGroup.mainGroupDescription && vm.mainGroup.mainGroupDescription.length > 0;\n    }\n\n    function isNumeric(n) {\n        return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n}\n\nangular\n    .module('maingroups.maingroup', [])\n    .config(stateConfig)\n    .controller('MainGroupController', MainGroupController);\n","// @ngInject\nfunction MaingroupsApiService(ResourcesService) {\n\n    var endpoint = 'maingroups';\n\n    return {\n        getMainGroups: ResourcesService.apiFactory.get(endpoint),\n        getMainGroup: ResourcesService.apiFactory.get(endpoint),\n        getSubCategories: ResourcesService.apiFactory.get(endpoint + '/subcategories'),\n        getIntrastats: ResourcesService.apiFactory.get(endpoint + '/intrastats'),\n        getSalesChannels: ResourcesService.apiFactory.get(endpoint + '/saleschannels'),\n        getDepartments: ResourcesService.apiFactory.get(endpoint + '/departments'),\n        getAccounts: ResourcesService.apiFactory.get(endpoint + '/accounts'),\n        getBrands: ResourcesService.apiFactory.get(endpoint + '/brands'),\n        getVariantGroups: ResourcesService.apiFactory.get(endpoint + '/variantgroups'),\n        getVariants: ResourcesService.apiFactory.get(endpoint + '/variants'),\n        getBusinessAreas: ResourcesService.apiFactory.get(endpoint + '/businessareas'),\n        getTenantConfig: ResourcesService.apiFactory.get(endpoint + '/tenantconfig'),\n        createItemGroups: ResourcesService.apiFactory.update(endpoint + '/createitemgroups','MainGroup'),\n        createMainGroup: ResourcesService.apiFactory.create(endpoint,'MainGroup'),\n        updateMainGroup: ResourcesService.apiFactory.update(endpoint,'MainGroup')\n    };\n\n}\n\n\nangular.module('maingroups.api', [])\n  .factory('MaingroupsApiService', MaingroupsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.maingroups', {\n        url: '/maingroups?searchTerm',\n        views: {'productList@product': {\n            templateUrl: 'main/product/maingroups/maingroups.tpl.html',\n            controller: 'MainGroupsController as vm'\n        }},\n        resolve: {\n            mainGroups: mainGroupsResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction mainGroupsResolver(MaingroupsApiService, $stateParams) {\n    return MaingroupsApiService.getMainGroups({page: 0, searchTerm: $stateParams.searchTerm, itemsPerPage: null});\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction MainGroupsController($rootScope, $state, $scope, mainGroups, MaingroupsApiService,loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.mainGroups = mainGroups;\n    vm.selectedMainGroupId = 0;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n    vm.sortingKey = '';\n    vm.sortingDesc = false;\n\n    vm.searchTermChange = searchTermChange;\n    vm.sortMainGroups = sortMainGroups\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.mainGroupId; }, function(newValue, oldValue) {\n            vm.selectedMainGroupId = parseInt($state.params.mainGroupId,10);\n        });\n\n        $rootScope.$on('MainGroup.Changed', function(event, response) {\n            loadMainGroups();\n        });\n    }\n\n    function loadMainGroups() {\n        loadSpinnerService.start('mainSpinner');\n        console.log(\"vm.sortingDesc\", vm.sortingDesc)\n        MaingroupsApiService.getMainGroups({page: vm.currentPage - 1, searchTerm: vm.searchTerm, sortingKey: vm.sortingKey, sortingDesc: vm.sortingDesc, itemsPerPage: vm.itemsPerPage}).then(function(response) {\n            vm.mainGroups = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function sortMainGroups(sortingKey){\n        vm.sortingKey = sortingKey;\n        vm.sortingDesc = !vm.sortingDesc;\n        loadMainGroups();\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadMainGroups();\n    }\n\n}\n\nangular\n    .module('product.maingroups', ['maingroups.api','maingroups.maingroup'])\n    .config(stateConfig)\n    .controller('MainGroupsController', MainGroupsController);\n","angular.module('components.caArticleSelection', [])\n    .component('caArticleSelection', {\n        templateUrl: 'main/product/pricelisteditor/components/articleselection.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            onSearchContextChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller(loadSpinnerService, ToasterService, ProductsApiService, $translate) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    var defaultSalesChannel = { id: null, salesChannelDescription: $translate.instant('common.all') };\n    vm.salesChannels = [defaultSalesChannel];\n    var defaultArticleCollection = { id: null, collectionDescription: $translate.instant('common.all') };\n    vm.articleCollections = [defaultArticleCollection];\n    vm.searchTerm = '';\n    vm.shouldGetOnlyNewArticles = false;\n    vm.shouldGetOnlyCurrentArticles = false;\n    vm.shouldGetOnlyArticlesWithSetPrices = false;\n    vm.shouldGetOnlyArticlesWithVolumeDiscounts = false;\n    vm.minPrice = 0;\n    vm.maxPrice = 0;\n    vm.usePriceRange = false;\n\n    //Methods\n    vm.selectedSalesChannel = defaultSalesChannel;\n    vm.search = search;\n\n    function onInit() {\n        loadSpinnerService.start('mainSpinner');\n        ProductsApiService.getSalesChannels().then(function(response) {\n            vm.salesChannels = response;\n            vm.salesChannels.unshift(defaultSalesChannel);\n            vm.selectedSalesChannel = vm.salesChannels[0];\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n        ProductsApiService.getArticleCollections().then(function(response) {\n            vm.articleCollections = response;\n            vm.articleCollections.unshift(defaultArticleCollection);\n            vm.selectedArticleCollection = vm.articleCollections[0];\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n    function search() {\n        loadSpinnerService.start('mainSpinner');\n\n        var minPrice = 0;\n        var maxPrice = 0;\n        if (vm.usePriceRange) {\n            minPrice = vm.minPrice;\n            maxPrice = vm.maxPrice;\n        }\n\n        var salesChannelId = null;\n        if (vm.selectedSalesChannel) { salesChannelId = vm.selectedSalesChannel.id; }\n\n        var articleCollectionId = null;\n        if (vm.selectedArticleCollection) { articleCollectionId = vm.selectedArticleCollection.id; }\n\n        var request = {\n            articleCollectionId: articleCollectionId,\n            maxPrice: maxPrice,\n            minPrice: minPrice,\n            salesChannelId: salesChannelId,\n            searchTerm: vm.searchTerm,\n            shouldOnlyGetArticlesWithManualPrices: vm.shouldGetOnlyArticlesWithSetPrices,\n            shouldOnlyGetArticlesWithVolumeDiscounts: vm.shouldGetOnlyArticlesWithVolumeDiscounts,\n            shouldGetOnlyCurrentArticles: vm.shouldGetOnlyCurrentArticles,\n            shouldGetOnlyNewArticles: vm.shouldGetOnlyNewArticles\n        };\n\n        ProductsApiService.getProductIds(request).then(function(response) {\n            var searchContext = {\n                articleCollectionId: articleCollectionId,\n                articleIds: response.data,\n                saleschannelId: salesChannelId\n            };\n            vm.onSearchContextChanged({ searchContext: searchContext });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n}\n","angular.module('components.caPricelistGrid', [])\n    .component('caPricelistGrid', {\n        templateUrl: 'main/product/pricelisteditor/components/pricelistsgrid.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            articleCollectionId: '<',\n            articleIds: '<',\n            saleschannelId: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $q, PricelistsApiService, ToasterService, loadSpinnerService, PricelistsHelperService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    vm.editorArticles = [];\n    vm.priceListHeads = [];\n    vm.useVariantDetail1Level = true;\n    vm.useVariantDetail2Level = false;\n    vm.volumeDiscounts = [];\n    vm.showVolumeDiscountRules = false;\n    vm.currentPage = 1;\n    vm.itemsPerPage = 20;\n    vm.itemsPerPageAlternatives = [\n        20, 50, 100, 150\n    ];\n\n    vm.priceListPriceDisplaySelections = [\n        { type: 'salesPrice', order: 1, label: 'article.salesprice' },\n        { type: 'previousPrice', order: 2, label: 'article.previousprice'}\n    ];\n    vm.priceListPriceDisplaySelection = vm.priceListPriceDisplaySelections[0];\n\n    //Methods\n    vm.priceListSort = priceListSort;\n    vm.save = save;\n    vm.handlePriceChange = handlePriceChange;\n\n    function onInit() {\n        $scope.$watch(function() { return vm.articleIds; }, function() {\n            if (vm.articleIds && vm.articleIds.length > 0) {\n                loadArticles();\n            } else {\n                clearArticles();\n            }\n        });\n\n        $scope.$watch(function() { return vm.useVariantDetail1Level; }, function(newValue, oldValue) {\n            if (newValue !== undefined && newValue === false) {\n                vm.showSku = false;\n                vm.showBarcode = false;\n            }\n        });\n        $scope.$watch(function() { return vm.useVariantDetail2Level; }, function(newValue, oldValue) {\n            if (newValue !== undefined && newValue === false) {\n                vm.showSku = false;\n                vm.showBarcode = false;\n            }\n        });\n\n        $scope.$watch(function() { return vm.useVariantDetail1Level; }, function() {\n            loadArticles();\n        });\n\n        $scope.$watch(function() { return vm.useVariantDetail2Level; }, function() {\n            loadArticles();\n        });\n\n        $scope.$watch(function() { return vm.saleschannelId; }, function() {\n            loadArticles();\n        });\n\n        $scope.$watch(function() { return vm.articleCollectionId; }, function() {\n            loadArticles();\n        });\n\n        $scope.$watch(function() { return vm.currentPage; }, function() {\n            loadArticles();\n        });\n        $scope.$watch(function() { return vm.itemsPerPage; }, function() {\n            loadArticles();\n        });\n\n        return PricelistsApiService.getVolumeDiscounts().then(function(response) {\n            vm.volumeDiscounts = [];\n            vm.volumeDiscounts.push({\n                id: 0,\n                name: '-'\n            });\n            _.forEach(response, function(volumeDiscount) {\n                vm.volumeDiscounts.push(volumeDiscount);\n            });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n    function priceListSort(element) {\n        if (element.id !== undefined) { // Element is a priceList\n            return element.id;\n        } else if (element.priceListId !== undefined) { //Element is a priceListItem\n            return element.priceListId;\n        } else {\n            throw 'Unknown element to sort by';\n        }\n    }\n\n    function save() {\n        loadSpinnerService.start('mainSpinner');\n        PricelistsApiService.savePriceListEditorArticles(vm.editorArticles).then(function(response) {\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function handlePriceChange(priceListItem, editorArticle) {\n        var priceRangeToUpdate = _.find(editorArticle.priceListPrices, function(priceListPrice) {\n            return priceListItem.priceListId === priceListPrice.priceListId;\n        });\n\n        var keys = Object.keys(priceListItem);\n        _.remove(keys, function(fieldName) {\n            return fieldName === \"$$hashKey\" || fieldName === \"trackById\";\n        });\n\n        _.forEach(keys, function(key) {\n            priceRangeToUpdate[key] = priceListItem[key];\n        });\n\n        if(priceListItem.isCalculatedPrice){\n            var priceList = _.find(vm.priceListHeads, function(priceListHead){\n                return priceListHead.id === priceListItem.priceListId;\n            });\n            var exchangeRate = (priceList.exchangeRate !== 0) ? priceList.exchangeRate : 1;\n            priceListItem.minPrice = (priceListItem.originalPriceMin * priceList.priceFactor) * exchangeRate;\n            priceListItem.maxPrice = (priceListItem.originalPriceMax * priceList.priceFactor) * exchangeRate;\n        }\n\n        if (priceListItem.isSystemPrice) {\n            PricelistsHelperService.recalculateRowPrices(priceListItem, editorArticle, vm.priceListHeads);\n        }\n    }\n\n    function loadArticles() {\n        if (vm.articleIds.length === 0 && vm.editorArticles.length === 0) {\n            return;\n        }\n\n        vm.editorArticles = [];\n        vm.priceListHeads = [];\n\n        var request = {\n            articleCollectionId: vm.articleCollectionId,\n            articleIds: vm.articleIds,\n            useVariantDetail1Level: vm.useVariantDetail1Level,\n            useVariantDetail2Level: vm.useVariantDetail2Level,\n            saleschannelId: vm.saleschannelId,\n            page: vm.currentPage,\n            pageSize: vm.itemsPerPage\n        };\n\n        loadSpinnerService.start('mainSpinner');\n        PricelistsApiService.getPriceListEditorArticles(request).then(function(response) {\n            vm.editorArticles = response.data.articles.results;\n            vm.itemsPerPage = response.data.articles.limit;\n            vm.currentPage = response.data.articles.page;\n            vm.editorArticlesTotal = response.data.articles.total;\n\n            vm.priceListHeads = response.data.priceLists;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function clearArticles() {\n        vm.editorArticles = [];\n        vm.priceListHeads = [];\n    }\n}\n","angular.module('components.caPriceRangeInput', [])\n    .component('caPriceRangeInput', {\n        templateUrl: 'main/product/pricelisteditor/components/pricerangeinput.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            priceRangeItem: '<',\n            maxPriceFieldName: '<',\n            minPriceFieldName: '<',\n            onPriceRangeItemChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject  \nfunction controller($scope, $q) {\n    var vm = this;\n    var inputBox = {};\n\n    console.log(\"maxPriceFieldName is: \", vm.maxPriceFieldName);\n    console.log(\"minPriceFieldName is: \", vm.minPriceFieldName);\n\n    var oldPriceRangeItem = {};\n    var valueBeforeEditing = \"\";\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.inputBoxDisplayValue = \"\";\n\n    vm.inputBoxFocused = inputBoxFocused;\n    vm.inputBoxBlurred = inputBoxBlurred;\n    vm.handleInputChange = handleInputChange;\n\n    vm.captureInputBox = captureInputBox;\n    vm.getInputBoxStyle = getInputBoxStyle;\n    vm.handleKeypress = handleKeypress;\n\n    vm.markForRemoval = markForRemoval;\n\n    function onInit() {\n        $scope.$watch(function() { return vm.priceRangeItem.maxPrice; }, function() {\n            constructDisplayValue();\n        });\n\n        $scope.$watch(function() { return vm.priceRangeItem.minPrice; }, function() {\n            constructDisplayValue();\n        });\n\n        $scope.$watch(function() { return vm.priceRangeItem.previousMaxPrice; }, function() {\n            constructDisplayValue();\n        });\n\n        $scope.$watch(function() { return vm.priceRangeItem.previousMinPrice; }, function() {\n            constructDisplayValue();\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n    function inputBoxFocused() {\n        storePriceRangeItem();\n        if (vm.priceRangeItem.isCalculatedPrice) {\n            vm.inputBoxDisplayValue = \"\";\n            storeInputValue();\n        } else {\n            vm.inputBoxDisplayValue = vm.priceRangeItem[vm.maxPriceFieldName].toString();\n            storeInputValue();\n        }\n    }\n\n    function inputBoxBlurred() {\n        if (vm.inputBoxDisplayValue === \"\" && vm.priceRangeItem[vm.maxPriceFieldName] === vm.priceRangeItem[vm.minPriceFieldName]) {\n            vm.inputBoxDisplayValue = vm.priceRangeItem[vm.maxPriceFieldName];\n        } else if (vm.priceRangeItem[vm.maxPriceFieldName] !== vm.priceRangeItem[vm.minPriceFieldName]) {\n            vm.inputBoxDisplayValue = vm.priceRangeItem[vm.minPriceFieldName].toString() + \" - \" + vm.priceRangeItem[vm.maxPriceFieldName].toString();\n        }\n    }\n\n    function handleInputChange() {\n        var inputValueToNumber = _.toNumber(vm.inputBoxDisplayValue);\n        if (!isNaN(inputValueToNumber)) {\n            vm.priceRangeItem[vm.minPriceFieldName] = inputValueToNumber;\n            vm.priceRangeItem[vm.maxPriceFieldName] = inputValueToNumber;\n            vm.priceRangeItem.isCalculatedPrice = false;\n\n            // Callback\n            vm.onPriceRangeItemChanged({priceRangeItem: vm.priceRangeItem});\n        } else {\n            revertInputValue();\n        }\n    }\n\n    function captureInputBox(ib) {\n        inputBox = ib;\n    }\n\n    function handleKeypress(ev) {\n        if (ev.key === 'Escape' && ev.charCode === 0) {\n            revertPriceRangeItem();\n        }\n    }\n\n    function markForRemoval() {\n        vm.priceRangeItem.shouldBeDeleted = true;\n        vm.priceRangeItem.isCalculatedPrice = true;\n\n        vm.onPriceRangeItemChanged({priceRangeItem: vm.priceRangeItem});\n    }\n\n    function getInputBoxStyle() {\n        var style = {};\n\n        if (!vm.priceRangeItem.isPriceOnAnyPriceList && vm.priceRangeItem.priceListId !== 0) {\n            style['background-color'] = 'transparent';\n            style['color'] = 'transparent';\n        } else if (vm.priceRangeItem.isCalculatedPrice) {\n            style['background-color'] = '#dddddd';\n            style['color'] = '#777777';\n        } else {\n            style['background-color'] = 'transparent';\n            style['color'] = '#000000';\n        }\n\n        return style;\n    }\n\n    function storeInputValue() {\n        valueBeforeEditing = vm.inputBoxDisplayValue;\n    }\n\n    function revertInputValue() {\n        vm.inputBoxDisplayValue = valueBeforeEditing;\n    }\n\n    function storePriceRangeItem() {\n        oldPriceRangeItem = angular.copy(vm.priceRangeItem);\n    }\n\n    function revertPriceRangeItem() {\n        vm.priceRangeItem[vm.minPriceFieldName] = oldPriceRangeItem[vm.minPriceFieldName];\n        vm.priceRangeItem[vm.maxPriceFieldName] = oldPriceRangeItem[vm.maxPriceFieldName];\n        vm.priceRangeItem.isCalculatedPrice = oldPriceRangeItem.isCalculatedPrice;\n        constructDisplayValue();\n\n        // Callback\n        vm.onPriceRangeItemChanged({priceRangeItem: vm.priceRangeItem});\n    }\n\n    function constructDisplayValue() {\n        if (vm.priceRangeItem[vm.maxPriceFieldName] === vm.priceRangeItem[vm.minPriceFieldName]) {\n            vm.inputBoxDisplayValue = vm.priceRangeItem[vm.maxPriceFieldName].toString();\n            storeInputValue();\n        } else {\n            vm.inputBoxDisplayValue = vm.priceRangeItem[vm.minPriceFieldName].toString() +  ' - ' + vm.priceRangeItem[vm.maxPriceFieldName].toString();\n            storeInputValue();\n        }\n    }\n}\n","angular.module('components.caVolumeDiscountSelector', [])\n    .component('caVolumeDiscountSelector', {\n        templateUrl: 'main/product/pricelisteditor/components/volumediscountrule.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            priceRangeItem: '=',\n            volumeDiscounts: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller() {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.changeVolumeDiscount = changeVolumeDiscount;\n    vm.volumeDiscountAllowed = false;\n\n    vm.selectedVolumeDiscount = {};\n\n    function onInit() {\n        vm.volumeDiscountAllowed = (vm.priceRangeItem !== undefined) ? vm.priceRangeItem.priceListId !== 0 && vm.priceRangeItem.isPriceOnAnyPriceList : false;\n\n        if (vm.priceRangeItem !== undefined) {\n            if (vm.priceRangeItem.volumeDiscounts !== undefined && vm.priceRangeItem.volumeDiscounts.length !== 0) {\n                var firstVolumeDiscount = vm.priceRangeItem.volumeDiscounts[0];\n                // If all volume discounts are the same\n                if (_.every(vm.priceRangeItem.volumeDiscounts, function(vd) { return firstVolumeDiscount.id === vd.id; })) {\n                    vm.selectedVolumeDiscount = firstVolumeDiscount;\n                } else {\n                    vm.selectedVolumeDiscount = generatePlaceholderVolumeDiscount(vm.priceRangeItem.volumeDiscounts);\n                }\n            } else {\n                vm.selectedVolumeDiscount = _.find(vm.volumeDiscounts, function(vd) { return vd.id === 0; });\n            }\n        }\n    }\n    function onChanges() {\n\n    }\n    function onDestroy() {\n\n    }\n\n    function changeVolumeDiscount() {\n        vm.priceRangeItem.volumeDiscounts.length = 0;\n        vm.priceRangeItem.volumeDiscounts.push(vm.selectedVolumeDiscount);\n    }\n\n    function generatePlaceholderVolumeDiscount(volumeDiscounts) {\n        var placeholderVolumeDiscount =  {\n            id: -1,\n            name: \"\"\n        };\n\n        var uniqueVolumeDiscounts = _.uniqBy(volumeDiscounts, function(vd) { return vd.name; });\n        var firstLoop = true;\n        _.forEach(uniqueVolumeDiscounts, function(vd) {\n            if (firstLoop) {\n                placeholderVolumeDiscount.name += vd.name;\n                firstLoop = false;\n            } else {\n                placeholderVolumeDiscount.name += \", \" + vd.name;\n            }\n\n        });\n\n        return placeholderVolumeDiscount;\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.pricelisteditor', {\n        url:'/editor',\n        views: {\"wideColumnView@product\": {\n            templateUrl: 'main/product/pricelisteditor/pricelisteditor.tpl.html',\n            controller: 'PriceListEditorController as vm'\n        }}\n    });\n}\n\n// @ngInject\nfunction PriceListEditorController($scope) {\n    var vm = this;\n\n    //Properties\n    vm.selectedArticleIds = [];\n    vm.selectedArticleCollectionId = null;\n    vm.selectedSalesChannelId = null;\n\n    //Methods\n    vm.searchContextChanged = searchContextChanged;\n\n    activate();\n\n    function activate() {\n    }\n\n    function searchContextChanged(searchContext) {\n        vm.selectedArticleCollectionId = searchContext.articleCollectionId;\n        vm.selectedArticleIds = searchContext.articleIds;\n        vm.selectedSalesChannelId = searchContext.saleschannelId;\n    }\n\n}\n\nangular\n    .module('product.priceListEditor', [])\n    .config(stateConfig)\n    .controller('PriceListEditorController', PriceListEditorController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n\n    $stateProvider.state('product.pricelists.new', {\n        url:'/new',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/pricelists/pricelist/pricelist.tpl.html',\n            controller: 'PricelistController as vm'\n        }},\n        resolve: {\n            pricelist: function() { return {}; },\n            isNewPricelist: function() { return true; },\n            currencies: currenciesResolver,\n            psychologicalPrices: psychologicalPriceResolver,\n            customerGroups: customerGroupsResolver,\n            salesChannels: salesChannelsResolver\n        }\n    });\n\n    $stateProvider.state('product.pricelists.pricelist', {\n        url:'/{pricelistId}',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/pricelists/pricelist/pricelist.tpl.html',\n            controller: 'PricelistController as vm'\n        }},\n        resolve: {\n            pricelist: pricelistResolver,\n            isNewPricelist: function() { return false; },\n            currencies: currenciesResolver,\n            psychologicalPrices: psychologicalPriceResolver,\n            customerGroups: customerGroupsResolver,\n            salesChannels: salesChannelsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction pricelistResolver($stateParams, PricelistsApiService) {\n    return PricelistsApiService.getPricelistBrief($stateParams.pricelistId);\n}\n\n// @ngInject\nfunction salesChannelsResolver($stateParams, PricelistsApiService) {\n    return PricelistsApiService.getSalesChannels();\n}\n\n// @ngInject\nfunction currenciesResolver($stateParams, PricelistsApiService) {\n    return PricelistsApiService.getCurrencies();\n}\n\n// @ngInject\nfunction psychologicalPriceResolver($stateParams, PricelistsApiService) {\n    return PricelistsApiService.getPsychologicalPrices();\n}\n\n// @ngInject\nfunction customerGroupsResolver($stateParams, PricelistsApiService) {\n    return PricelistsApiService.getCustomerGroups();\n}\n\n// @ngInject\nfunction PricelistController($state, $scope, $rootScope, pricelist, loadSpinnerService, PricelistsApiService, isNewPricelist, currencies, psychologicalPrices, customerGroups, $translate, salesChannels, ToasterService) {\n    var vm = this;\n\n    //Properties\n    var pricelistCopy = {};\n    vm.pricelist = pricelist;\n    vm.isNewPricelist = isNewPricelist;\n    vm.isEditing = vm.isNewPricelist;\n    vm.currencies = currencies;\n    vm.psychologicalPrices = [{id:0, name: '-'}].concat(psychologicalPrices);\n    vm.customerGroups = customerGroups;\n    vm.salesChannels = salesChannels;\n\n    //Methods\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.isPricelistCodeValid = isPricelistCodeValid;\n    vm.isPricelistNameValid = isPricelistNameValid;\n    vm.isSalesChannelCodeValid = isSalesChannelCodeValid;\n    vm.hasChosenCurrency = hasChosenCurrency;\n    vm.savePricelist = savePricelist;\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n\n    activate();\n\n    function activate() {\n        prepareData();\n\n        if (vm.isNewPricelist) {\n            vm.pricelist = {\n                exchangeRate: 1,\n                priceFactor: 1,\n                leastNetProfitPercentage: 0\n            };\n            vm.pricelist.psychologicalPrice = vm.psychologicalPrices[0];\n            vm.pricelist.currency = _.find(vm.currencies, function(o) {\n                return o.code = 'SEK';\n            });\n            vm.pricelist.salesChannel = vm.salesChannels[0];\n        }\n\n        $scope.$watch(function() { return vm.pricelist.currency.id; }, function(newValue, oldValue) {\n            vm.pricelist.exchangeRate = vm.pricelist.currency.currencyRate;\n        });\n    }\n\n    function enableEditing() {\n        pricelistCopy = angular.copy(vm.pricelist);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.pricelist = pricelistCopy;\n        vm.isEditing = false;\n    }\n\n    function savePricelist() {\n        if (vm.isNewPricelist) {\n            saveNewPricelist();\n        } else {\n            updatePricelist();\n        }\n    }\n\n    function saveNewPricelist() {\n        loadSpinnerService.start('mainSpinner');\n        PricelistsApiService.createPricelist(vm.pricelist).then(function(response) {\n            vm.pricelist = response;\n            prepareData();\n            vm.isNewPricelist = false;\n            vm.isEditing = false;\n            ToasterService.showSuccess('\"' + vm.pricelist.pricelistName + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"product.pricelists\"));\n            $rootScope.$emit('Pricelist.Inserted', response);\n            $state.go('product.pricelists.pricelist', {pricelistId: response.id});\n        }, function(error) {\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updatePricelist() {\n        loadSpinnerService.start('mainSpinner');\n        PricelistsApiService.updatePricelist(vm.pricelist).then(function(response) {\n            vm.pricelist = response;\n            prepareData();\n            vm.isEditing = false;\n            ToasterService.showSuccess('\"' + vm.pricelist.pricelistName + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"product.pricelists\"));\n            $rootScope.$emit('Pricelist.Changed', response);\n        }, function(error) {\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function prepareData() {\n        if (vm.pricelist && vm.pricelist.salesChannel && vm.pricelist.salesChannel.id > 0) {\n            var salesChannel = _.find(salesChannels, function(o) { return o.id === vm.pricelist.salesChannel.id; });\n            if (salesChannel) {\n                vm.pricelist.salesChannel = salesChannel;\n            }\n        }\n    }\n\n    function isAllInformationValid() {\n        return isPricelistCodeValid() &&\n               isPricelistNameValid() &&\n               hasChosenCurrency();\n    }\n\n    function isPricelistCodeValid() {\n        return vm.pricelist.pricelistCode && vm.pricelist.pricelistCode.length > 0;\n    }\n\n    function isSalesChannelCodeValid() {\n        return vm.pricelist.salesChannel && vm.pricelist.salesChannel.salesChannelCode.length > 0;\n    }\n\n    function isPricelistNameValid() {\n        return vm.pricelist.pricelistName && vm.pricelist.pricelistName.length > 0;\n    }\n\n    function hasChosenCurrency() {\n        return vm.pricelist.currency && vm.pricelist.currency.id > 0;\n    }\n}\n\nangular\n    .module('pricelists.pricelist', [])\n    .config(stateConfig)\n    .controller('PricelistController', PricelistController);\n","// @ngInject\nfunction PricelistsApiService(ResourcesService, $q, DSHttpAdapter, DS) {\n\n    var endpoint = 'pricelists';\n\n    return {\n        getPricelists: getPricelists,\n        getPricelist: ResourcesService.apiFactory.get(endpoint),\n        getPricelistBrief: ResourcesService.apiFactory.get(endpoint + '/brief'),\n        getPricelistBriefs: ResourcesService.apiFactory.get(endpoint + '/briefs'),\n        createPricelist: ResourcesService.apiFactory.create(endpoint, 'Pricelist'),\n        updatePricelist: ResourcesService.apiFactory.update(endpoint, 'Pricelist'),\n        getCurrencies: ResourcesService.apiFactory.get(endpoint + '/currencies'),\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getSalesChannels: ResourcesService.apiFactory.get(endpoint + '/saleschannels'),\n        getProduct: ResourcesService.apiFactory.get(endpoint + '/product'),\n        getPsychologicalPrices: ResourcesService.apiFactory.get(endpoint + '/psychologicalprices'),\n        getCustomerGroups: ResourcesService.apiFactory.get(endpoint + '/customergroups'),\n        getPriceListEditorArticles: getPriceListEditorArticles,\n        savePriceListEditorArticles: savePriceListEditorArticles,\n        updateOverridePrice: updateOverridePrice, //deprecated #8046\n        removeOverridePrice: removeOverridePrice, //deprecated #8046\n        getVolumeDiscounts: ResourcesService.apiFactory.get(endpoint + '/volumediscounts')\n    };\n\n    function getPricelists(page, filter, pageSize, companyId) {\n\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        var args = { params: params};\n\n        return ResourcesService.apiFactory.get(endpoint)(args);\n    }\n\n    function getPriceListEditorArticles(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/editoritems', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n\n    }\n\n\n    function savePriceListEditorArticles(editorArticles) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + endpoint + '/editoritems', editorArticles).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    /**\n    * @deprecated In devops #8046\n    * @param {*} articleId Article id\n    * @param {*} locationId Location id\n    * @param {*} newPrice New price\n    * @returns {*} ''\n    */\n    function updateOverridePrice(articleId, locationId, newPrice) {\n        var deferred = $q.defer();\n\n        var request = {\n            articleId: articleId,\n            locationId: locationId,\n            price: newPrice\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/updatearticlepricelist', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    /**\n     * @deprecated In devops #8046\n     * @param {*} articleId Article id\n     * @param {*} locationId Location id\n     * @returns {*} ''\n     */\n    function removeOverridePrice(articleId, locationId) {\n        var deferred = $q.defer();\n\n        var request = {\n            articleId: articleId,\n            locationId: locationId\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/deletearticlepricelist', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular.module('pricelists.api', [])\n  .factory('PricelistsApiService', PricelistsApiService);\n","\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.pricelists', {\n        url: '/pricelists',\n        views: {'productList@product': {\n            templateUrl: 'main/product/pricelists/pricelists.tpl.html',\n            controller: 'PricelistsController as vm'\n        }},\n        resolve: {\n            pricelists: pricelistsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction pricelistsResolver(PricelistsApiService) {\n    return PricelistsApiService.getPricelistBriefs();\n}\n\n// @ngInject\nfunction PricelistsController($rootScope, $state, $scope, pricelists, PricelistsApiService,loadSpinnerService) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.pricelists = pricelists.results;\n    vm.selectedPricelistId = 0;\n    vm.searchTerm = \"\";\n    vm.currentPage = 1;\n    vm.itemsPerPage = 20;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.pricelistId; }, function(newValue, oldValue) {\n            vm.selectedPricelistId = parseInt($state.params.pricelistId, 10);\n        });\n        $rootScope.$on('Pricelist.Inserted', function(event, response) {\n            loadPricelists();\n        });\n        $rootScope.$on('Pricelist.Changed', function(event, response) {\n            loadPricelists();\n        });\n    }\n\n    function loadPricelists() {\n        loadSpinnerService.start('mainSpinner');\n        PricelistsApiService.getPricelistBriefs().then(function(response) {\n            vm.pricelists = response.results;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadPricelists();\n    }\n\n}\n\nangular\n    .module('product.pricelists', ['pricelists.api','pricelists.pricelist'])\n    .config(stateConfig)\n    .controller('PricelistsController', PricelistsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product', {\n        url: '/product',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/product/product.tpl.html',\n        controller: 'MainProductsController as vm'\n    });\n}\n\n// @ngInject\nfunction MainProductsController() {\n    var vm = this;\n}\n\nangular.module('main.product', [\n    'products.api',\n    'rms2Products.api',\n    'product.service',\n    'variants.api',\n    'variantgroups.api',\n    'product.articles',\n    'product.pricelistmgmt',\n    'product.importfileslist',\n    'product.maingroups',\n    'product.brands',\n    'product.saleschannels',\n    'product.intrastats',\n    'product.productimport',\n    'product.subcategories',\n    'product.pricelists',\n    'product.psychologicalprices',\n    'product.departments',\n    'product.variants',\n    'product.variantgroups',\n    'product.priceListEditor',\n    'product.volumediscounts',\n    'product.businessareas',\n    'product.productimporteditor'\n    ])\n    .config(stateConfig)\n    .controller('MainProductsController', MainProductsController);\n","// @ngInject\nfunction ProductService() {\n    return {\n        canReadPrices: canReadPrices\n    };\n\n    function hasLink(links, rel) {\n        var link = _.find(links, function (o) {\n            return o.rel === rel;\n        });\n\n        if (link) {\n            return true;\n        }\n\n        return false;\n    }\n\n    function canReadPrices(links) {\n        return hasLink(links, 'read_prices');\n    }\n}\n\nangular\n    .module('product.service', [])\n    .factory('ProductService', ProductService);\n","angular.module('components.caImportFileList', [])\n    .component('caImportFileList', {\n        templateUrl: 'main/product/productimport/components/filelist.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            importType: '<',\n            onImportFileChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($state, $scope, FileDataImportApiServiceV2, $translate, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    //Properties\n    var fileInputDomElement = $(\"#xlf\")[0];\n    vm.currentPage = 1;\n    vm.totalItems = 0;\n    vm.itemsPerPage = 15;\n    vm.importFiles = [];\n    vm.showReload = false;\n\n    //Methods\n    vm.loadImportFiles = loadImportFiles;\n    vm.reloadFile = reloadFile;\n    vm.deleteImportFile = deleteImportFile;\n    vm.goToOrder = goToOrder;\n    vm.goToEditor = goToEditor;\n\n    activate();\n\n    function activate() {\n        fileInputDomElement.addEventListener('change', function handleImportFileChanged(e) {\n            var files = e.target.files;\n            vm.importFileName = files[0].name;\n            var i,f;\n            for (i = 0, f = files[i]; i !== files.length; ++i) {\n                vm.onImportFileChanged({ file: f });\n                vm.showReload = true;\n            }\n        }, false);\n        $scope.$watch(function() { return vm.importType; }, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                if (!vm.importFiles || vm.importFiles.length === 0) {\n                    loadImportFiles();\n                }\n                if (oldValue === 'existingImportFile') {\n                    $('.col-lg-6').css('width', '100%');\n                } else {\n                    $('.col-lg-6').css('width', '50%');\n                }\n            }\n        });\n    }\n\n    function loadImportFiles() {\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiServiceV2.getImportFiles(vm.currentPage, vm.searchTerm, vm.itemsPerPage).then(function(response) {\n            vm.totalItems = response.totalItems;\n            vm.importFiles = response.data;\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant('productimport.errorWhileReadingImportFileList'), $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function reloadFile() {\n        var target = $(fileInputDomElement)[0];\n        var files = target.files;\n        var i,f;\n        for (i = 0, f = files[i]; i !== files.length; ++i) {\n            vm.onImportFileChanged({ file: f, revalidate: true });\n            vm.showReload = true;\n        }\n    }\n\n    function deleteImportFile(importId) {\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiServiceV2.deleteProductImportFile(importId).then(function() {\n            var deletedItem = _.find(vm.importFiles, function(importFile) {\n                return importFile.id === importId;\n            });\n\n            vm.importFiles = _.without(vm.importFiles, deletedItem);\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError($translate.instant('productimport.errorWhileDeletingImportFile'), $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function goToOrder(order) {\n        $state.go('order.modifyorder', { orderId: order.id });\n    }\n\n    function goToEditor(file) {\n        $state.go('product.productimporteditor', { importFileId: file.id });\n    }\n}\n","angular.module('components.caMapOrDate', [])\n    .component('caMapOrDate', {\n        templateUrl: 'main/product/productimport/components/mapordate.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            dateModel: '=',\n            dateMin: '<',\n            dateMax: '<',\n            columnNames: '<',\n            columnModel: '=',\n            columnOrderBy: '<',\n            columnItemRenderer: '<',\n            columnFilterBy: '<',\n            columnPlaceholder: '<',\n            disabledBy: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, GenericComponentService) {\n    var vm = this;\n    vm.$onChanges = onChanges;\n    vm.$onInit = onInit;\n\n    //Properties\n    vm.multiplicity = 'single';\n    vm.mandatory = true;\n\n    //Methods\n    vm.filterColumn = filterColumn;\n\n    function onInit() {\n        resolveRenderer();\n\n        $scope.$watch(function() { return (vm.multiplicity); }, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                if (vm.multiplicity === 'single') {\n                    vm.columnModel = undefined;\n                } else if (vm.multiplicity === 'multiple') {\n                    vm.dateModel = undefined;\n                }\n            }\n        });\n    }\n\n    function onChanges(changes) {\n        if (changes.columnRenderItem) {\n             resolveRenderer();\n        }\n    }\n\n    function resolveRenderer() {\n        vm.columnRenderItem = GenericComponentService.resolveSelectRenderer(vm.columnItemRenderer);\n    }\n\n    function filterColumn(query) {\n        return GenericComponentService.getSelectFilter(query, vm.columnFilterBy);\n    }\n}\n","angular.module('components.caMapOrSelect', [])\n    .component('caMapOrSelect', {\n        templateUrl: 'main/product/productimport/components/maporselect.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            choices: '<',\n            choiceModel: '=',\n            choiceOrderBy: '<',\n            choiceItemRenderer: '<',\n            choiceFilterBy: '<',\n            choicePlaceholder: '<',\n            columnNames: '<',\n            columnModel: '=',\n            columnOrderBy: '<',\n            columnItemRenderer: '<',\n            columnFilterBy: '<',\n            columnPlaceholder: '<',\n            disabledBy: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, GenericComponentService) {\n    var vm = this;\n    vm.$onChanges = onChanges;\n    vm.$onInit = onInit;\n\n    //Properties\n    vm.multiplicity = 'single';\n    vm.mandatory = true;\n\n    //Methods\n    vm.filterChoice = filterChoice;\n    vm.filterColumn = filterColumn;\n\n    function onInit() {\n        resolveRenderer();\n\n        $scope.$watch(function() { return (vm.multiplicity); }, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                if (vm.multiplicity === 'single') {\n                    vm.columnModel = undefined;\n                } else if (vm.multiplicity === 'multiple') {\n                    vm.choiceModel = undefined;\n                }\n            }\n        });\n    }\n\n    function onChanges(changes) {\n        if (changes.choiceRenderItem || changes.columnRenderItem) {\n             resolveRenderer();\n        }\n    }\n\n    function resolveRenderer() {\n        vm.choiceRenderItem = GenericComponentService.resolveSelectRenderer(vm.choiceItemRenderer);\n        vm.columnRenderItem = GenericComponentService.resolveSelectRenderer(vm.columnItemRenderer);\n    }\n\n    function filterChoice(query) {\n        return GenericComponentService.getSelectFilter(query, vm.choiceFilterBy);\n    }\n    function filterColumn(query) {\n        return GenericComponentService.getSelectFilter(query, vm.columnFilterBy);\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.productimport',{\n        url: '/productimport',\n        views: {'wideColumnView@product': {\n            templateUrl: 'main/product/productimport/productimport.tpl.html',\n            controller: 'ProductImportController as vm'\n        }},\n        resolve: {\n            suppliers: suppliersResolver,\n            locations: locationsResolver,\n            articleCollections: articleCollectionsResolver,\n            orderCollections: orderCollectionsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction suppliersResolver(FileDataImportApiServiceV2) {\n    return FileDataImportApiServiceV2.getSuppliers();\n}\n\n// @ngInject\nfunction locationsResolver(FileDataImportApiServiceV2) {\n    return FileDataImportApiServiceV2.getLocations();\n}\n// @ngInject\nfunction articleCollectionsResolver(FileDataImportApiServiceV2) {\n    return FileDataImportApiServiceV2.getArticleCollections();\n}\n// @ngInject\nfunction orderCollectionsResolver(FileDataImportApiServiceV2) {\n    return FileDataImportApiServiceV2.getOrderCollections();\n}\n\n// @ngInject\nfunction ProductImportController($state, $scope, $translate, loadSpinnerService, ToasterService, confirmationDialogService,\n    FileDataImportApiServiceV2, suppliers, locations, articleCollections, orderCollections, $sce) {\n    var vm = this;\n    var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n    //Properties\n    vm.importType = 'newImportFile';\n    vm.importFileType = 'productImport';\n    vm.importSku = false;\n    vm.usePricesFromExistingProducts = { \n       forPurchaseCost : false,\n       forSalesPrice : false,\n       forPreviousPrice : false\n    };\n    vm.importFile = {};\n    vm.JSonAdaptedSheetData = undefined;\n    vm.importFileColumnNames =[];\n    vm.importMapping = {\n        column: {}\n    };\n    vm.productImportRequest = {\n        articleCollection: undefined,\n        fileName: '',\n        importRows: [],\n        importType: '',\n        location: undefined,\n        orderCollection: undefined,\n        plannedDeliveryDate: new Date(),\n        supplier: undefined\n    };\n    vm.suppliers = suppliers;\n    \n    vm.locations = locations;\n    vm.articleCollections = articleCollections;\n    vm.orderCollections = orderCollections;\n    vm.errorList = [];\n    vm.assumptionList = [];\n    vm.readyForSave = false;\n    vm.readyForImport = false;\n    vm.useMainGroupAndBrand = false;\n    vm.isAllowedToImportSku = false;\n\n    //Methods\n    vm.handleImportFile = handleImportFile;\n    vm.saveSupplierMapping = saveSupplierMapping;\n    vm.validateImportFile = validateImportFile;\n    vm.goToEditor = goToEditor;\n    vm.mandatoryAccordionAvailable = mandatoryAccordionAvailable;\n    vm.mappingsAccordionAvailable = mappingsAccordionAvailable;\n    vm.confirmGoToEditor = confirmGoToEditor;\n    vm.changeToImportNewFileView = changeToImportNewFileView;\n    vm.changeToUseExistingFileView = changeToUseExistingFileView;\n    vm.isPurchasingCurrencyCodePopulated = isPurchasingCurrencyCodePopulated;\n    vm.getPricesFromProductWarningMessage = getPricesFromProductWarningMessage\n\n    activate();\n\n    function activate() {\n        var currentDate = new Date();\n        vm.articleCollections = _.filter(vm.articleCollections, function(coll) {\n            var fromDate = new Date(coll.fromDate);\n            var toDate = new Date(coll.toDate);\n            return fromDate >= currentDate ||\n                (fromDate <= currentDate && toDate >= currentDate);\n        });\n        vm.orderCollections = _.filter(vm.orderCollections, function(coll) {\n            var fromDate = new Date(coll.fromDate);\n            var toDate = new Date(coll.toDate);\n            return fromDate >= currentDate ||\n                (fromDate <= currentDate && toDate >= currentDate);\n        });\n\n        $scope.$watch(function() { return vm.importFileType;}, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                vm.readyForSave = false;\n                vm.readyForImport = false;\n            }\n        });\n        $scope.$watch(function() { return (vm.productImportRequest.supplier) ? vm.productImportRequest.supplier.id : undefined; }, function(newValue, oldValue) {\n            if (newValue === undefined) { vm.productImportRequest.supplier = undefined; return; }\n            if (newValue !== oldValue) {\n                loadSpinnerService.start('mainSpinner');\n                vm.productImportRequest.supplier.id = vm.productImportRequest.supplier.id;\n                FileDataImportApiServiceV2.getColumnMapping(vm.productImportRequest.supplier.id).then(function(response) {\n                    if (response && response.id !== 0) {\n                        //Retrieve saved mapping, has a column name eg. \"alternativeArticleNumber\" and the name of the column in the file eg. \"Modell\"\n                        var keys = Object.keys(response);\n                        var filteredKeys = _.filter(keys, function(key) { return key !== 'id'; }); //Removes id column\n                        var dbColumnNames = [];\n                        _.forEach(filteredKeys, function(key) {\n                            if (response[key] && response[key].trim().length > 0) {\n                                if (!_.find(dbColumnNames, function(col) { return col.column === key; })) {\n                                    var nameStr = normalizeString(response[key]);\n                                    var newColumn = { column: key, name: nameStr };\n                                    dbColumnNames.push(newColumn);\n                                }\n                            }\n                        });\n\n                        //Mappings in the file has already been read into vm.importFileColumnNames\n                        //Match mapping in db against mappings in vm.importFileColumnNames so to only update those that HAVE a mapping, and only map where it isn't empty\n                        var matchedColumns = [];\n                        _.forEach(vm.importFileColumnNames, function(fileCol) {\n                            var dbColumns = _.filter(dbColumnNames, function (dbCol) { if (dbCol.name.trim().length > 0 && dbCol.name.trim() === fileCol.name.trim()) { return dbCol; }});\n                            if (dbColumns.length > 0) {\n                                _.forEach(dbColumns, function(dbc) {\n                                    matchedColumns.push(dbc);\n                                });\n                            }\n                        });\n\n                        //Compare matched columns with vm.importMapping which is used be the dropdowns\n                        _.forEach(matchedColumns, function (matchedCol) {\n                            var fileColumn = _.find(vm.importFileColumnNames, function(fileCol) { if (fileCol.name.trim() === matchedCol.name.trim()) { return fileCol; }});\n                            if (fileColumn) {\n                                vm.importMapping.column[matchedCol.column] = fileColumn;\n                            }\n                        });\n                    }\n                }, function (error) {\n                    console.log(error);\n                    ToasterService.showError($translate.instant('productimport.errorWhileReadingColumnMapping'), $translate.instant('common.error'));\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n\n                vm.readyForSave = false;\n                vm.readyForImport = false;\n\n                //Remove error from list if user has chosen value\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'supplier';\n                });\n            }\n        });\n        $scope.$watch(function() { return (vm.importMapping.column.companyCode) ? vm.importMapping.column.companyCode : undefined; }, function(newValue, oldValue) {\n            vm.errorList = _.remove(vm.errorList, function(err) {\n                return err.code !== 'supplier';\n            });\n        });\n\n        //Remove error from list if user has chosen value\n        $scope.$watch(function() { return (vm.productImportRequest.location) ? vm.productImportRequest.location.id : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'location';\n                });\n            }\n        });\n        $scope.$watch(function() { return (vm.importMapping.column.locationCode) ? vm.importMapping.column.locationCode : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'location';\n                });\n            }\n        });\n    \n\n        $scope.$watch(function() { return (vm.productImportRequest.articleCollection) ? vm.productImportRequest.articleCollection.id : undefined; }, function(newValue, oldValue) {\n            vm.errorList = _.remove(vm.errorList, function(err) {\n                return err.code !== 'articleCollection';\n            });\n        });\n        $scope.$watch(function() { return (vm.importMapping.column.articleCollectionCode) ? vm.importMapping.column.articleCollectionCode : undefined; }, function(newValue, oldValue) {\n            vm.errorList = _.remove(vm.errorList, function(err) {\n                return err.code !== 'articleCollection';\n            });\n        });\n\n        $scope.$watch(function() { return (vm.productImportRequest.orderCollection) ? vm.productImportRequest.orderCollection.id : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'orderCollection';\n                });\n            }\n        });\n        $scope.$watch(function() { return (vm.importMapping.column.orderCollectionCode) ? vm.importMapping.column.orderCollectionCode : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'orderCollection';\n                });\n            }\n        });\n\n        $scope.$watch(function() { return (vm.importMapping.column.plannedDeliveryDate) ? vm.importMapping.column.plannedDeliveryDate : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'plannedDeliveryDate';\n                });\n            }\n        });\n\n        $scope.$watch(function() { return (vm.importMapping.column.alternativeArticleNumber) ? vm.importMapping.column.alternativeArticleNumber : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'importMappingAlternativeArticleNumber';\n                });\n            }\n        });\n        $scope.$watch(function() { return (vm.importMapping.column.purchaseCost) ? vm.importMapping.column.purchaseCost : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'importMappingPurchaseCost';\n                });\n            }\n        });\n        $scope.$watch(function() { return (vm.importMapping.column.salesPrice) ? vm.importMapping.column.salesPrice : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'importMappingSalesPrice';\n                });\n            }\n        });\n        $scope.$watch(function() { return (vm.importMapping.column.salesPrice) ? vm.importMapping.column.salesPrice : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'importMappingSalesPrice';\n                });\n            }\n        });\n        $scope.$watch(function() { return (vm.importMapping.column.barcode) ? vm.importMapping.column.barcode : undefined; }, function(newValue, oldValue) {\n            if (vm.importFileType === 'orderImport') {\n                vm.errorList = _.remove(vm.errorList, function(err) {\n                    return err.code !== 'assumptionBarcode';\n                });\n            }\n        });\n\n        FileDataImportApiServiceV2.getTenantConfig().then(function(response) {\n            vm.isAllowedToImportSku = response.data.isAllowedToImportSku;\n        });\n    }\n\n    function getPricesFromProductWarningMessage(){\n        var foo = $translate.instant(\"productimport.pricesfromproductwarningmessage\");\n        return $sce.trustAsHtml(foo);\n    }\n\n    function mandatoryAccordionAvailable() {\n        return vm.importType === 'newImportFile' &&\n            vm.JSonAdaptedSheetData &&\n            vm.JSonAdaptedSheetData.length > 0 &&\n            vm.importFileColumnNames &&\n            vm.importFileColumnNames.length > 0;\n    }\n\n    function mappingsAccordionAvailable() {\n        return vm.importType === 'newImportFile' &&\n                vm.JSonAdaptedSheetData &&\n                vm.JSonAdaptedSheetData.length > 0 &&\n                vm.importFileColumnNames &&\n                vm.importFileColumnNames.length > 0 &&\n                (vm.productImportRequest.supplier || vm.importMapping.column.companyCode) &&\n                (vm.productImportRequest.articleCollection || vm.importMapping.column.articleCollectionCode) &&\n                (\n                    vm.importFileType === 'productImport' ||\n                    (vm.importFileType === 'orderImport' &&\n                        (vm.productImportRequest.location || vm.importMapping.column.locationCode) &&\n                        (vm.productImportRequest.orderCollection || vm.importMapping.column.orderCollectionCode)\n                    )\n                );\n    }\n\n    function handleImportFile(file, revalidate) {\n        var reader = new FileReader();\n        vm.productImportRequest.fileName = file.name;\n        reader.onload = onLoadFunction;\n        loadSpinnerService.start('mainSpinner');\n        reader.readAsArrayBuffer(file);\n\n        function onLoadFunction(e) {\n            try {\n                // --- File data read ---\n                // From MDN: \"readAsBinaryString is deprecated and readAsArrayBuffer() should be used instead.\"\n\n                // ReadAsArrayBuffer solution.\n                var data = \"\";\n                var bytes = new Uint8Array(e.target.result);\n                var length = bytes.byteLength;\n                for (var i = 0; i < length; i++) {\n                    data += String.fromCharCode(bytes[i]);\n                }\n\n                // --- XLSX ---\n                // Read Excel data into a workbook object representation.\n                var workbook = XLSX.read(data, {type: 'binary'});\n\n                // Getting the name of the first sheet in the workbook.\n                var firstSheetName = workbook.SheetNames[0];\n\n                // Getting the sheet based on the firstSheetName.\n                var workSheet = workbook.Sheets[firstSheetName];\n\n                // The JSon representation of the worksheet returned by js-xlsx is pretty similar to how\n                // we want our request data to be formatted.\n                vm.JSonAdaptedSheetData = XLSX.utils.sheet_to_json(workSheet);\n\n                cleanColumnNames();\n\n                extractImportFileColumnNames();\n\n                vm.errorList = [];\n                if (revalidate) {\n                    validateImportFile();\n                }\n            } catch (error) {\n                console.log(error);\n                ToasterService.showError($translate.instant('productimport.errorWhileReadingImportFile'), $translate.instant('common.error'));\n            } finally {\n                loadSpinnerService.stop('mainSpinner');\n            }\n        }\n    }\n\n    function cleanColumnNames() {\n        if (vm.JSonAdaptedSheetData.length !== 0) {\n            for (var sheetIndex = 0; sheetIndex < vm.JSonAdaptedSheetData.length; sheetIndex++) {\n                var sheetData = vm.JSonAdaptedSheetData[sheetIndex];\n                var keys = Object.keys(sheetData);\n\n                for (var keyIndex = 0; keyIndex < keys.length; keyIndex++) {\n                    var key = keys[keyIndex];\n                    var origKey = key;\n                    var keyStr = normalizeString(key);\n                    //Check if the key has changed after normalization, if yes replace the kolumn with the new name\n                    if (origKey !== keyStr) {\n                        sheetData[keyStr] = sheetData[origKey];\n                        var index = keys.indexOf(origKey);\n                        keys[index] = keyStr;\n                        sheetData = _.pick(sheetData, keys);\n                    }\n                }\n\n                vm.JSonAdaptedSheetData[sheetIndex] = sheetData;\n            }\n        }\n    }\n\n    // js-xlsx has done most of the work already. All we need to do is extract the javascript object property names\n    function extractImportFileColumnNames() {\n        if (vm.JSonAdaptedSheetData.length !== 0) {\n            vm.importFileColumnNames = [];\n            _.forEach(vm.JSonAdaptedSheetData, function(sheetData) {\n                var keys = Object.keys(sheetData);\n\n                _.forEach(keys, function(key) {\n                    if (!_.find(vm.importFileColumnNames, function(col) { return col.name === key; })) {\n                        var nameStr = normalizeString(key);\n                        if (!_.find(vm.importFileColumnNames, function(col) { return col.name === nameStr; })) {\n                            var newColumn = { id: vm.importFileColumnNames.length, name: nameStr };\n                            vm.importFileColumnNames.push(newColumn);\n                        }\n                    }\n                });\n            });\n        }\n    }\n\n    function normalizeString(str) {\n        //Make sure string contains only letters, numbers and some special characters\n        var retVal = str;\n        var r = /[^ ()/\\\\0-9\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]+/g;\n        retVal = str.replace(r, '');\n        //Make sure there are no extra whitespace\n        var r2 = /[\\s]{2,}/g;\n        retVal = retVal.replace(r2, ' ');\n        //Remove leading and trailing whitespace\n        retVal = retVal.trim();\n        return retVal;\n    }\n\n    function saveSupplierMapping() {\n        if (!vm.productImportRequest || !vm.productImportRequest.supplier || !vm.productImportRequest.supplier.id) { return; }\n\n        //Make sure strings are clean\n        _.forEach(vm.importMapping.column, function(mapCol) {\n            mapCol.name = normalizeString(mapCol.name);\n        });\n\n        //Save mapping\n        var mappingRequest = {\n            alternativeArticleNumber: vm.importMapping.column.alternativeArticleNumber  ? vm.importMapping.column.alternativeArticleNumber.name : '',\n            articleCollectionCode: vm.importMapping.column.articleCollectionCode        ? vm.importMapping.column.articleCollectionCode.name : '',\n            articleDescription: vm.importMapping.column.articleDescription              ? vm.importMapping.column.articleDescription.name : '',\n            articleName: vm.importMapping.column.articleName                            ? vm.importMapping.column.articleName.name : '',\n            articleTypeName: vm.importMapping.column.articleTypeName                    ? vm.importMapping.column.articleTypeName.name : '',\n            barcode: vm.importMapping.column.barcode                                    ? vm.importMapping.column.barcode.name : '',\n            externalSku: vm.importMapping.column.externalSku                            ? vm.importMapping.column.externalSku.name : '',\n            supplierSku: vm.importMapping.column.supplierSku                            ? vm.importMapping.column.supplierSku.name : '',\n            departmentCode: vm.importMapping.column.departmentCode                      ? vm.importMapping.column.departmentCode.name : '',\n            intrastatCode: vm.importMapping.column.intrastatCode                        ? vm.importMapping.column.intrastatCode.name : '',\n            itemGroupCode: vm.importMapping.column.itemGroupCode                        ? vm.importMapping.column.itemGroupCode.name : '',\n            locationCode: vm.importMapping.column.locationCode                          ? vm.importMapping.column.locationCode.name : '',\n            orderCollectionCode: vm.importMapping.column.orderCollectionCode            ? vm.importMapping.column.orderCollectionCode.name : '',\n            orderNumberExternal: vm.importMapping.column.orderNumberExternal            ? vm.importMapping.column.orderNumberExternal.name : '',\n            plannedDeliveryDate: vm.importMapping.column.plannedDeliveryDate            ? vm.importMapping.column.plannedDeliveryDate.name : '',\n            previousPrice: vm.importMapping.column.previousPrice                        ? vm.importMapping.column.previousPrice.name : '',\n            purchaseCost: vm.importMapping.column.purchaseCost                          ? vm.importMapping.column.purchaseCost.name : '',\n            quantity: vm.importMapping.column.quantity                                  ? vm.importMapping.column.quantity.name : '',\n            salesPrice: vm.importMapping.column.salesPrice                              ? vm.importMapping.column.salesPrice.name : '',\n            subCategory: vm.importMapping.column.subCategory                            ? vm.importMapping.column.subCategory.name : '',\n            companyCode: vm.importMapping.column.supplier                               ? vm.importMapping.column.supplier.name : '',\n            variant1Name: vm.importMapping.column.variant1Name                          ? vm.importMapping.column.variant1Name.name : '',\n            variant2Name: vm.importMapping.column.variant2Name                          ? vm.importMapping.column.variant2Name.name : '',\n            length: vm.importMapping.column.length                                      ? vm.importMapping.column.length.name : '',\n            height: vm.importMapping.column.height                                      ? vm.importMapping.column.height.name : '',\n            width: vm.importMapping.column.width                                        ? vm.importMapping.column.width.name : '',\n            weight: vm.importMapping.column.weight                                      ? vm.importMapping.column.weight.name : '',\n            countryCode: vm.importMapping.column.countryCode                            ? vm.importMapping.column.countryCode.name : ''\n        };\n\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiServiceV2.saveColumnMapping(vm.productImportRequest.supplier.id, mappingRequest).then(function(response) {\n            ToasterService.showSuccess($translate.instant('productimport.mappingSaved'), $translate.instant('productimport.productImport'));\n        }, function (error) {\n            console.log(error);\n            ToasterService.showError($translate.instant('productimport.errorWhileSavingMapping'), $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function validateImportFile() {\n        var result = false;\n        result = validateMandatoryFields(true);\n        vm.readyForSave = result;\n        var columnsToCheckForEmptyFields = [\n            'barcode',\n            vm.usePricesFromExistingProducts.forPreviousPrice ? 'ignore' : 'previousPrice',\n            vm.usePricesFromExistingProducts.forPurchaseCost ? 'ignore' : 'purchaseCost',\n            vm.usePricesFromExistingProducts.forSalesPrice ? 'ignore' : 'salesPrice',\n            'variant1Name',\n            'variant2Name'\n        ];\n        var importMappingColumnsToCheck = [];\n        _.forEach(columnsToCheckForEmptyFields, function(columnName) {\n            if(columnName !== 'ignore')\n                importMappingColumnsToCheck.push(vm.importMapping.column[columnName]);\n        });\n\n        _.forEach(vm.JSonAdaptedSheetData, function(sheetData) {\n            _.forEach(importMappingColumnsToCheck, function(column) {\n                if (column && column && column.name.trim().length > 0) {\n                    if (!sheetData[column.name] || sheetData[column.name].length === 0) {\n                        result = false;\n                        var errorStr = $translate.instant('productimport.errorContainsEmptyFields').replace('%1', column.name);\n                        addErrorList(column, errorStr, true);\n                    }\n                }\n            });\n\n            var errorStr = '';\n            var findMultipleSeparatorsPattern = '[\\\\.\\\\,](?=[^\\\\.\\\\,]*[\\\\.\\\\,])';\n            var findMultipleSeparatorsRegExp = new RegExp(findMultipleSeparatorsPattern,'g');\n            var findLastCommaPattern = '[\\\\,](?![^\\\\,]*[\\\\,])';\n            var findLastCommaRegExp = new RegExp(findLastCommaPattern,'g');\n            var findNonDigitCharactersPattern = '[^0-9]';\n            var findNonDigitCharactersRegExp = new RegExp(findNonDigitCharactersPattern,'g');\n            var findFirstCommaAndAllNumbersBehindItPattern = '[\\\\.\\\\,][0-9]*[0-9]';\n            var findFirstCommaAndAllNumbersBehindItRegExp = new RegExp(findFirstCommaAndAllNumbersBehindItPattern,'g');\n            var purchaseCost = vm.importMapping.column.purchaseCost;\n            if (purchaseCost && sheetData[purchaseCost.name]) {\n                if (findMultipleSeparatorsRegExp.test(sheetData[purchaseCost.name])) {\n                    sheetData[purchaseCost.name] = sheetData[purchaseCost.name].replace(findMultipleSeparatorsRegExp, '');\n                    addAssumptionList('assumptionPurchaseCostMultipleSeparators', $translate.instant('productimport.assumptionPurchaseCostMultipleSeparators'));\n                }\n                if (findLastCommaRegExp.test(sheetData[purchaseCost.name])) {\n                    sheetData[purchaseCost.name] = sheetData[purchaseCost.name].replace(findLastCommaRegExp, '.');\n                }\n                if (isNaN(Number(sheetData[purchaseCost.name]))) {\n                    //Check if purchaseCost can be parsed to int/decimal\n                    result = false;\n                    errorStr = $translate.instant('productimport.errorPurchaseCostContainsInvalidNumber').replace('%1', purchaseCost.name);\n                    addErrorList('purchaseCost', errorStr, true);\n                }\n            }\n            var salesPrice = vm.importMapping.column.salesPrice;\n            if (salesPrice && sheetData[salesPrice.name]) {\n                if (findMultipleSeparatorsRegExp.test(sheetData[salesPrice.name])) {\n                    sheetData[salesPrice.name] = sheetData[salesPrice.name].replace(findMultipleSeparatorsRegExp, '');\n                    addAssumptionList('assumptionSalesPriceMultipleSeparators', $translate.instant('productimport.assumptionSalesPriceMultipleSeparators'));\n                }\n                if (findLastCommaRegExp.test(sheetData[salesPrice.name])) {\n                    sheetData[salesPrice.name] = sheetData[salesPrice.name].replace(findLastCommaRegExp, '.');\n                }\n                if (isNaN(Number(sheetData[salesPrice.name]))) {\n                    //Check if salesPrice can be parsed to int/decimal\n                    result = false;\n                    errorStr = $translate.instant('productimport.errorSalesPriceContainsInvalidNumber').replace('%1', salesPrice.name);\n                    addErrorList('salesPrice', errorStr, true);\n                }\n            }\n            var previousPrice = vm.importMapping.column.previousPrice;\n            if (previousPrice && sheetData[previousPrice.name]) {\n                if (findMultipleSeparatorsRegExp.test(sheetData[previousPrice.name])) {\n                    sheetData[previousPrice.name] = sheetData[previousPrice.name].replace(findMultipleSeparatorsRegExp, '');\n                    addAssumptionList('assumptionPreviousPriceMultipleSeparators', $translate.instant('productimport.assumptionPreviousPriceMultipleSeparators'));\n                }\n                if (findLastCommaRegExp.test(sheetData[previousPrice.name])) {\n                    sheetData[previousPrice.name] = sheetData[previousPrice.name].replace(findLastCommaRegExp, '.');\n                }\n                if (isNaN(Number(sheetData[previousPrice.name]))) {\n                    //Check if previousPrice can be parsed to int/decimal\n                    result = false;\n                    errorStr = $translate.instant('productimport.errorPreviousPriceContainsInvalidNumber').replace('%1', previousPrice.name);\n                    addErrorList('previousPrice', errorStr, true);\n                }\n            }\n\n            if(vm.importFileType === 'orderImport'){\n                var quantity = vm.importMapping.column.quantity;\n                if(quantity && sheetData[quantity.name]){\n                    if (findFirstCommaAndAllNumbersBehindItRegExp.test(sheetData[quantity.name])) {\n                        sheetData[quantity.name] = sheetData[quantity.name].replace(findFirstCommaAndAllNumbersBehindItRegExp, '');\n                        addAssumptionList('assumptionQuantityMultipleSeparators', $translate.instant('productimport.assumptionQuantityMultipleSeparators'));\n                    }\n                    if (findLastCommaRegExp.test(sheetData[quantity.name])) {\n                        sheetData[quantity.name] = sheetData[quantity.name].replace(findLastCommaRegExp, '.');\n                    }\n                    if (isNaN(Number(sheetData[quantity.name]))) {\n                        //Check if quantity can be parsed to int/decimal\n                        result = false;\n                        errorStr = $translate.instant('productimport.errorPreviousPriceContainsInvalidNumber').replace('%1', quantity.name);\n                        addErrorList('quantity', errorStr, true);\n                    }\n                }\n            }\n\n            var intrastatCode = vm.importMapping.column.intrastatCode;\n            if (intrastatCode && sheetData[intrastatCode.name]) {\n                if (findNonDigitCharactersRegExp.test(sheetData[intrastatCode.name])) {\n                    sheetData[intrastatCode.name] = sheetData[intrastatCode.name].replace(findNonDigitCharactersRegExp, '');\n                }\n                if (sheetData[intrastatCode.name].length === 8) {\n                    //Check if intrastatCode has correct length (8 digits will be filled out with zeros)\n                    sheetData[intrastatCode.name] = sheetData[intrastatCode.name] + '00';\n                }\n                if (sheetData[intrastatCode.name].length !== 10) {\n                    //Check if intrastatCode has correct length (10 digits)\n                    result = false;\n                    errorStr = $translate.instant('productimport.errorIntrastatCodeHasIncorrectLength').replace('%1', intrastatCode.name);\n                    addErrorList('intrastatCodeLength', errorStr, true);\n                }\n                if (isNaN(Number(sheetData[intrastatCode.name]))) {\n                    //Check if intrastatCode can be parsed to int/decimal\n                    result = false;\n                    errorStr = $translate.instant('productimport.errorIntrastatContainsInvalidNumber').replace('%1', intrastatCode.name);\n                    addErrorList('previousPrice', errorStr, true);\n                }\n            }\n            var plannedDeliveryDate = vm.importMapping.column.plannedDeliveryDate;\n            if (plannedDeliveryDate && sheetData[plannedDeliveryDate.name]) {\n                //Check if plannedDeliveryDate can be parsed to datetime\n                var dat = sheetData[plannedDeliveryDate.name];\n                var canParseDate = true;\n                if (Object.prototype.toString.call(dat) === \"[object Date]\") {\n                    // it is a date\n                    if (isNaN(dat.getTime())) {\n                      // date is not valid\n                      canParseDate = false;\n                    } else {\n                      // date is valid\n                    }\n                } else {\n                    // not a date\n                    canParseDate = false;\n                }\n\n                if (!canParseDate) {\n                    result = false;\n                    errorStr = $translate.instant('productimport.errorCannotParseDeliveryDate').replace('%1', plannedDeliveryDate.name);\n                    addErrorList('plannedDeliveryDate', errorStr, true);\n                }\n            }\n        });\n\n        vm.readyForImport = result;\n\n        return result;\n    }\n\n    function validateMandatoryFields(outputErrors) {\n        var result = true;\n        vm.errorList = [];\n        //vm.assumptionList = [];\n\n        if (!vm.JSonAdaptedSheetData || vm.JSonAdaptedSheetData.length === 0) {\n            result = false;\n            addErrorList('importFileList', $translate.instant('productimport.errorMustReadImportFile'), outputErrors);\n            return result;\n        }\n        if (!vm.productImportRequest.supplier && (!vm.importMapping.column.companyCode || vm.importMapping.column.companyCode.name.trim().length === 0)) {\n            result = false;\n            addErrorList('supplier', $translate.instant('productimport.errorMustChooseSupplier'), outputErrors);\n        }\n        if (vm.importFileType === 'orderImport' &&\n            !vm.productImportRequest.location && (!vm.importMapping.column.locationCode || vm.importMapping.column.locationCode.name.trim().length === 0)) {\n            result = false;\n            addErrorList('location', $translate.instant('productimport.errorMustChooseLocation'), outputErrors);\n        }\n        if (!vm.productImportRequest.articleCollection && (!vm.importMapping.column.articleCollectionCode || vm.importMapping.column.articleCollectionCode.name.trim().length === 0)) {\n            result = false;\n            addErrorList('articleCollection', $translate.instant('productimport.errorMustChooseSeason'), outputErrors);\n        }\n        if (vm.importFileType === 'orderImport' &&\n            !vm.productImportRequest.orderCollection && (!vm.importMapping.column.orderCollectionCode || vm.importMapping.column.orderCollectionCode.name.trim().length === 0)) {\n            result = false;\n            addErrorList('orderCollection', $translate.instant('productimport.errorMustChooseSeason'), outputErrors);\n        }\n        if (vm.importFileType === 'orderImport' && !vm.productImportRequest.plannedDeliveryDate && (!vm.importMapping.column.plannedDeliveryDate || vm.importMapping.column.plannedDeliveryDate.name.trim().length === 0)) {\n            result = false;\n            addErrorList('plannedDeliveryDate', $translate.instant('productimport.errorMustChooseDeliveryDate'), outputErrors);\n        }\n        if (vm.importFileType === 'orderImport' && !vm.productImportRequest.quantity && (!vm.importMapping.column.quantity || vm.importMapping.column.quantity.name.trim().length === 0)) {\n            result = false;\n            addErrorList('quantity', $translate.instant('productimport.errorMustChooseQuantity'), outputErrors);\n        }\n        if (isEmpty(vm.importMapping) || isEmpty(vm.importMapping.column)) {\n            result = false;\n            addErrorList('importMapping', $translate.instant('productimport.errorMustChooseMapping'), outputErrors);\n        } else {\n            if (!vm.importMapping.column.alternativeArticleNumber || vm.importMapping.column.alternativeArticleNumber.name.trim().length === 0) {\n                addAssumptionList('assumptionAlternativeArticleNumber', $translate.instant('productimport.assumptionDoNotUseAlternativeArticleNumber'));\n            }\n            if ((!vm.importMapping.column.purchaseCost || vm.importMapping.column.purchaseCost.name.trim().length === 0) && !vm.usePricesFromExistingProducts.forPurchaseCost) {\n                result = false;\n                addErrorList('importMappingPurchaseCost', $translate.instant('productimport.errorMustChoosePurchaseCost'), outputErrors);\n            }\n            if ((!vm.importMapping.column.salesPrice || vm.importMapping.column.salesPrice.name.trim().length === 0) && !vm.usePricesFromExistingProducts.forSalesPrice) {\n                result = false;\n                addErrorList('importMappingSalesPrice', $translate.instant('productimport.errorMustChooseSalesPrice'), outputErrors);\n            }\n            if (vm.importMapping.column.salesPrice && (!vm.importMapping.column.previousPrice || vm.importMapping.column.previousPrice.name.trim().length === 0) && !vm.usePricesFromExistingProducts.forPreviousPrice) {\n                addAssumptionList('assumptionPreviousPrice', $translate.instant('productimport.assumptionPreviousPriceIsSalesPrice'));\n            } else { vm.assumptionList = _.filter(vm.assumptionList, function(ass) { return ass.code !== 'assumptionPreviousPrice'; }); }\n            if (!vm.importMapping.column.barcode || vm.importMapping.column.barcode.name.trim().length === 0) {\n                addAssumptionList('assumptionBarcode', $translate.instant('productimport.assumptionBarcodeWillBeGenerated'));\n            } else { vm.assumptionList = _.filter(vm.assumptionList, function(ass) { return ass.code !== 'assumptionBarcode'; }); }\n        }\n\n        return result;\n    }\n\n    function readyForImport() {\n        return isEmpty(vm.importMapping) || isEmpty(vm.importMapping.column) || vm.errorList.length > 0;\n    }\n\n    function isEmpty(obj) {\n        // null and undefined are \"empty\"\n        if (obj == null) { return true; }\n\n        // Assume if it has a length property with a non-zero value\n        // that that property is correct.\n        if (obj.length > 0) { return false; }\n        if (obj.length === 0) { return true; }\n\n        // If it isn't an object at this point\n        // it is empty, but it can't be anything *but* empty\n        // Is it empty?  Depends on your application.\n        if (typeof obj !== \"object\") { return true; }\n\n        // Otherwise, does it have any properties of its own?\n        // Note that this doesn't handle\n        // toString and valueOf enumeration bugs in IE < 9\n        for (var key in obj) {\n            if (hasOwnProperty.call(obj, key)) { return false; }\n        }\n\n        return true;\n    }\n\n    function addErrorList(code, message, outputErrors) {\n        if (!outputErrors) { return; }\n        if (!_.find(vm.errorList, function (error) { return error.code === code; })) {\n            vm.errorList.push({ code: code, message: message });\n        }\n    }\n\n    function addAssumptionList(code, message) {\n        if (!_.find(vm.assumptionList, function (assumption) { return assumption.code === code; })) {\n            vm.assumptionList.push({ code: code, message: message });\n        }\n    }\n\n    function confirmGoToEditor() {\n        //Validate\n        if (!validateImportFile()) { return; }\n\n        //Save mappings\n        saveSupplierMapping();\n\n        //Confirm assumptions\n        if (vm.assumptionList.length > 0) {\n            var assumptionMessage = $translate.instant('productimport.confirmAssumptions1') + '<br><br>';\n            assumptionMessage += '<ul>';\n            _.forEach(vm.assumptionList, function(assumption) {\n                assumptionMessage += '<li>' + assumption.message + '</li>';\n            });\n            assumptionMessage += '</ul>';\n            assumptionMessage += $translate.instant('productimport.confirmAssumptions2');\n            confirmationDialogService.showDialog(assumptionMessage).then(function (result) {\n                if (result === false) {\n                    return;\n                }\n\n                goToEditor();\n            });\n        } else {\n            goToEditor();\n        }\n    }\n\n    function changeToImportNewFileView() {\n        vm.importType = 'newImportFile';\n    }\n\n    function changeToUseExistingFileView() {\n        vm.importType = 'existingImportFile';\n    }\n\n    function isPurchasingCurrencyCodePopulated() {\n        return (\n            vm.productImportRequest.supplier &&\n            vm.productImportRequest.supplier.purchasingCurrency &&\n            vm.productImportRequest.supplier.purchasingCurrency.code !== undefined &&\n            vm.productImportRequest.supplier.purchasingCurrency.code !== null &&\n            vm.productImportRequest.supplier.purchasingCurrency.code !== ''\n        );\n    }\n\n    function goToEditor() {\n        if (vm.importMapping.column.salesPrice && (!vm.importMapping.column.previousPrice || vm.importMapping.column.previousPrice.name.trim().length === 0)) {\n            vm.importMapping.column.previousPrice = angular.copy(vm.importMapping.column.salesPrice);\n        }\n\n        //Collect product import rows\n        vm.productImportRequest.importRows = [];\n        vm.productImportRequest.importType = vm.importFileType;\n        vm.productImportRequest.isImportingSku = vm.importSku;\n        vm.productImportRequest.usePricesFromExistingProducts = vm.usePricesFromExistingProducts;\n        vm.productImportRequest.useMainGroupAndBrand = vm.useMainGroupAndBrand;\n\n        var mappingKeys = Object.keys(vm.importMapping.column);\n        _.forEach(vm.JSonAdaptedSheetData, function(sheetData) {\n            var requestRowDto = {\n                alternativeArticleNumber: '',\n                articleCollectionCode: '',\n                articleDescription: '',\n                articleName: '',\n                articleTypeName: '',\n                barcode: '',\n                departmentCode: '',\n                intrastatCode: '',\n                itemGroupCode: '',\n                mainGroupCode: '',\n                brandCode: '',\n                locationCode: '',\n                orderCollectionCode: '',\n                orderNumberExternal: '',\n                plannedDeliveryDate: '',\n                previousPrice: '',\n                purchaseCost: '',\n                quantity: '',\n                salesPrice: '',\n                subCategory: '',\n                companyCode: '',\n                variant1Name: '',\n                variant2Name: ''\n            };\n            _.forEach(mappingKeys, function(mapKey) {\n                var mapValue = vm.importMapping.column[mapKey];\n                if (mapValue && mapValue !== '') {\n                    requestRowDto[mapKey] = sheetData[mapValue.name];\n                }\n            });\n\n            vm.productImportRequest.importRows.push(requestRowDto);\n        });\n\n        //Create file\n        loadSpinnerService.start('mainSpinner', { message: $translate.instant('productimport.loadingCreatingImportEntry') });\n        FileDataImportApiServiceV2.createProductImportEntry(vm.productImportRequest).then(function(response) {\n            if (response && response.id !== 0) {\n                $state.go('product.productimporteditor', { importFileId: response.id });\n            }\n        }, function (error) {\n            console.log(error);\n            ToasterService.showError($translate.instant('productimport.errorWhileCreatingProductImportEntry'), $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n}\n\nangular\n    .module('product.productimport', [])\n    .config(stateConfig)\n    .controller('ProductImportController', ProductImportController);\n","angular.module('components.caImportEditorSummary', [])\n    .component('caImportEditorSummary', {\n        templateUrl: 'main/product/productimporteditor/components/importeditorsummary.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            importFile: '=',\n            updateSummary: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope) {\n    var vm = this;\n\n    //Properties\n    vm.showSummaries = true;\n    vm.summaries = [];\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    function onInit() {\n        $scope.$watch(function() { return vm.updateSummary; }, function() {\n            recalculateSummaries();\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n    function recalculateSummaries() {\n        if (vm.importFile && vm.importFile.importRows && vm.importFile.importRows.length > 0) {\n            vm.summaries = [];\n            var orders = _.groupBy(vm.importFile.importRows, function(row) { return row.orderNumberExternal + row.companyCode + row.locationCode + row.plannedDeliveryDate; });\n            if (Object.keys(orders).length > 0 && vm.importFile.importType.toLowerCase() === \"order\") {\n                vm.summaries.push({ title: 'common.orders', count: Object.keys(orders).length });\n            }\n            var products = _.groupBy(vm.importFile.importRows, function(row) { return row.alternativeArticleNumber; });\n            if (Object.keys(products).length > 0) {\n                vm.summaries.push({ title: 'common.articles', count: Object.keys(products).length });\n            }\n            var productVariants = _.groupBy(vm.importFile.importRows, function(row) { return row.barcode; });\n            if (Object.keys(productVariants).length > 0) {\n                vm.summaries.push({ title: 'common.articlevariants', count: Object.keys(productVariants).length });\n            }\n            var variant1s = _.groupBy(vm.importFile.importRows, function(row) { return row.variant1Name; });\n            if (Object.keys(variant1s).length > 0) {\n                vm.summaries.push({ title: 'common.variant1s', count: Object.keys(variant1s).length });\n            }\n            var variant2s = _.groupBy(vm.importFile.importRows, function(row) { return row.variant2Name; });\n            if (Object.keys(variant2s).length > 0) {\n                vm.summaries.push({ title: 'common.variant2s', count: Object.keys(variant2s).length });\n            }\n        }\n    }\n}\n","angular.module('components.caImportEditorTextDropdown', [])\n    .component('caImportEditorTextDropdown', {\n        templateUrl: 'main/product/productimporteditor/components/importeditortextdropdown.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            selectionOptions: '<',\n            groupRow: '<',\n            editProperty: '<',\n            onSelectionChanged: '&',\n            onFocus: '&',\n            onBlur: '&',\n            filterFunction: '<',\n            backgroundClass: '<'\n        },\n        controller: controller\n    }); \n\n// @ngInject\nfunction controller($scope) {\n    var vm = this;\n    var numberOfResults = 100;\n\n    vm.placeholderModel = {};\n    vm.localSelectionOptions = [];\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.selectionChanged = selectionChanged;\n\n    vm.refreshSearchItems = refreshSearchItems;\n\n    vm.dropDownToggled = dropDownToggled;\n\n    function onInit() {\n        refreshSearchItems(\"\");\n        initializePlaceholderModel();\n\n        $scope.$watch(function() { return vm.groupRow[vm.editProperty]; }, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                vm.placeholderModel.value = vm.groupRow[vm.editProperty];\n            }\n        });\n    }\n\n    function onChanges(changes) {\n\n    }\n    function onDestroy() {\n    }\n\n    function initializePlaceholderModel(search) {\n\n        vm.placeholderModel = {\n            value: vm.groupRow[vm.editProperty],\n            fullName: vm.groupRow[vm.editProperty],\n            editProperty: vm.editProperty\n        };\n    }\n\n    function refreshSearchItems(searchTerm) {\n        vm.localSelectionOptions = [];\n        var splitTerms = searchTerm.split(\" \");\n        var regexes = [];\n        // constructing regex: /.*searchTerm.*/i\n        _.forEach(splitTerms, function(term) { regexes.push(new RegExp(\".*\" + term + \".*\", 'i')); });\n\n        var items = vm.selectionOption;\n\n        _.forEach(regexes, function(regex) {\n            items = _.filter(vm.selectionOptions, function(selectionOption) { return selectionOption.fullName.search(regex) !== -1; });\n        });\n\n        items = vm.filterFunction(items, vm.editProperty, vm.groupRow);\n        items = _.take(items, numberOfResults);\n\n        if (items.length === 0 && searchTerm.length > 0) {\n            items.unshift({\n                value: searchTerm,\n                fullName: searchTerm\n            });\n        }\n\n        vm.localSelectionOptions = items;\n\n        vm.localSelectionOptions.unshift({ value:\"\",fullName:\"\" });\n    }\n\n    function selectionChanged() {\n        vm.onSelectionChanged({groupRow: vm.groupRow, editProperty: vm.editProperty, value: vm.placeholderModel.value});\n    }\n\n    function dropDownToggled(isOpen) {\n        if (isOpen) {\n            vm.onFocus({ propertyName: vm.editProperty, groupRow: vm.groupRow });\n        } else {\n            vm.onBlur({ propertyName: vm.editProperty, groupRow: vm.groupRow });\n        }\n    }\n\n}\n","angular.module('components.caImportEditorValidationErrors', [])\n    .component('caImportEditorValidationErrors', {\n        templateUrl: 'main/product/productimporteditor/components/importeditorvalidationerrors.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            validationErrors: '<',\n            selectFileRows: '&',\n            deselectFileRows: '&',\n            validationErrorChangeCount: '=',\n            numberOfFilteredRows: '<'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope) {\n    var vm = this;\n\n    //Properties\n    vm.errors = [];\n    vm.warnings = [];\n    vm.hiddenWarningDisplayMessages = [];\n    vm.showWarnings = true;\n    vm.showErrors = true;\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.selectValidationError = selectValidationError;\n    vm.hideWarning = hideWarning;\n    vm.getNumberOfShownErrors = getNumberOfShownErrors;\n    vm.getNumberOfShownWarnings = getNumberOfShownWarnings;\n    vm.resetFilters = resetFilters;\n    vm.resetWarnings = resetWarnings;\n\n    function onInit() {\n        $scope.$watchCollection('vm.validationErrors', function(oldValue, newValue) {\n            vm.errors = _.filter(vm.validationErrors, function(validationError) {\n                return validationError.severity === 'error';\n            });\n            vm.warnings = _.filter(vm.validationErrors, function(validationError) {\n                return validationError.severity === 'warning';\n            });\n            // Hide previously hidden messages\n            _.forEach(vm.warnings, function(warning) {\n                if (_.find(vm.hiddenWarningDisplayMessages, function(w) { return w === warning.displayMessage; })) {\n                    warning.hide = true;\n                }\n            });\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n    function resetFilters() {\n        vm.deselectFileRows();\n    }\n\n    function hideWarning(warning) {\n        warning.hide = true;\n        vm.validationErrorChangeCount++;\n        // Remember hidden warning messages\n        if (!_.find(vm.hiddenWarningDisplayMessages, function(m) { return m === warning.displayMessage; })) {\n            vm.hiddenWarningDisplayMessages.push(warning.displayMessage);\n        }\n    }\n\n    function resetWarnings() {\n        vm.hiddenWarningDisplayMessages = [];\n        _.forEach(vm.warnings, function(warning) {\n            warning.hide = false;\n        });\n        vm.validationErrorChangeCount++;\n    }\n\n    function selectValidationError(validationError) {\n        if (vm.selectFileRows) {\n            vm.selectFileRows({ fileRows: validationError.fileRows, displayMessage: validationError.displayMessage });\n        }\n    }\n\n    function getNumberOfShownWarnings() {\n        var count = 0;\n        _.forEach(vm.warnings, function(warning) {\n            if (!warning.hide) {\n                count++;\n            }\n        });\n        return count;\n    }\n\n    function getNumberOfShownErrors() {\n        var count = 0;\n        _.forEach(vm.errors, function() { count++; });\n        return count;\n    }\n}\n","angular.module('components.caImportRowsGrid', [])\n    .component('caImportRowsGrid', {\n        templateUrl: 'main/product/productimporteditor/components/importrowsgrid.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            importFile: '=',\n            validationErrors: '=',\n            checkResults: '=',\n            selectedFileRowIds: '=',\n            tenantCurrency: '<',\n            onGroupRowChanged: '&',\n            validationErrorChangeCount: '=',\n            currencies: '<',\n            componentRegistrationHandler: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $translate, ToasterService, FileDataImportApiServiceV2, loadSpinnerService, $q) {\n    var vm = this;\n\n    //Properties\n    var lastFocusedFileRow = {};\n    var lastBlurredFileRow = {};\n    var highlightingPriorities = [\n        { name: 'none', priority: 0 },\n        { name: 'foundData', priority: 1 },\n        { name: 'warning', priority: 2 },\n        { name: 'error', priority: 3 }\n    ];\n    vm.numberOfLoadingRows = 0;\n    vm.currentDisplayedGroups = [];\n    vm.itemGroupOptions = [];\n    vm.CompanyOptions = [];\n    vm.departmentOptions = [];\n    vm.subCategoryOptions = [];\n    vm.articleTypeOptions = [];\n    vm.articleCollectionOptions = [];\n    vm.orderCollectionOptions = [];\n    vm.displayedColumns = [];\n    vm.displayedGroups = [];\n    vm.currentPage = 1;\n    vm.itemsPerPage = 10;\n    vm.fixedItemsPerPageChoices = [5, 10, 15, 20, 25];\n    // Data model to convey which grid columns exists between the grid, grid rows and grid cells.\n    vm.gridColumnIdentifiers = [];\n    vm.groupingLevels = [\n        { id: 1,  label: 'productimport.none',                  groupingType: 'none'    },\n        { id: 2,  label: 'productimport.product',               groupingType: 'article' },\n        { id: 3,  label: 'productimport.orderNumberExternal',   groupingType: 'ordernumberexternal' },\n        { id: 4,  label: 'productimport.department',            groupingType: 'department' },\n        { id: 5,  label: 'productimport.subCategory',           groupingType: 'subcategory' },\n        { id: 6,  label: 'productimport.itemgroup',             groupingType: 'itemGroup' },\n        { id: 7,  label: 'productimport.intrastat',             groupingType: 'intrastat' },\n        { id: 8,  label: 'productimport.articleCollection',     groupingType: 'articleCollection' },\n        { id: 9,  label: 'productimport.orderCollection',       groupingType: 'orderCollection' },\n        { id: 10, label: 'productimport.articleType',           groupingType: 'articleTypeName' }\n    ];\n    vm.currentGroupingLevel = vm.groupingLevels[1];\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.deleteFileRow = deleteFileRow;\n    vm.textInputBoxFocused = textInputBoxFocused;\n    vm.textInputBoxBlurred = textInputBoxBlurred;\n    vm.fileRowChanged = fileRowChanged;\n    vm.groupRowChanged = groupRowChanged;\n    vm.deleteGroupRow = deleteGroupRow;\n    vm.saveFileRow = saveFileRow;\n    vm.saveGroupRow = saveGroupRow;\n    vm.updatePage = updatePage;\n    vm.updateValue = updateValue;\n    vm.getRowInputStyle = getRowInputStyle;\n    vm.getRowInputClass = getRowInputClass;\n    vm.getInputTooltip = getInputTooltip;\n    vm.getPriceInTenantCurrency = getPriceInTenantCurrency; \n    vm.filterChoices = filterChoices;\n    vm.isInputReadOnly = isInputReadOnly;\n    vm.cleanBarcodes = cleanBarcodes;\n\n\n    function onInit() {\n        setGridColumnIdentifiers();\n        getDropdownSelections();\n        sortFileRows(vm.importFile);\n        setDisplayedRows(vm.importFile.importRows);\n        vm.displayedColumns = vm.gridColumnIdentifiers;\n        vm.currentDisplayedGroups = [];\n\n        validateImportFileWithId(vm.importFile.id);\n\n        vm.componentRegistrationHandler({ component: this });\n\n        // Watch for new filter information from outside this component\n        $scope.$watch(function() { return vm.selectedFileRowIds; }, function() {\n            if (vm.selectedFileRowIds.length !== 0) {\n                var relevantFileRows = _.filter(vm.importFile.importRows, function(fileRow) {\n                    return _.find(vm.selectedFileRowIds, function(id) {\n                        return id === fileRow.id;\n                    });\n                });\n                setDisplayedRows(relevantFileRows);\n            } else {\n                setDisplayedRows(vm.importFile.importRows);\n            }\n        });\n\n        $scope.$watch(function() { return vm.currentGroupingLevel; }, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                vm.selectedFileRowIds = [];\n                setDisplayedRows(vm.importFile.importRows);\n            }\n        });\n\n        $scope.$watch(function() { return vm.numberOfLoadingRows; }, function(newValue, oldValue) {\n            if (newValue !== oldValue && newValue === 0) { // If all rows are done loading\n                validateImportFileWithId(vm.importFile.id);\n            }\n        });\n\n        $scope.$watch(function() { return vm.validationErrorChangeCount; }, function(newValue, oldValue) {\n            if (newValue !== oldValue) {\n                _.forEach(vm.currentDisplayedGroups, function(g) {\n                    handleInformationHighlighting(g);\n                });\n            }\n        });\n\n        $scope.$watch(function() { return vm.itemsPerPage; }, function(newValue, oldValue) {\n            if (newValue && newValue !== oldValue) {\n                updatePage();\n            }\n        });\n\n        _.forEach(vm.groupingLevels, function(g) {\n            g.label = $translate.instant(g.label);\n        });\n    }\n\n    function onChanges(changes) {\n\n    }\n\n    function onDestroy() {\n\n    }\n\n    function validateImportFileWithId(importFileId) {\n        loadSpinnerService.start('mainSpinner', { message: $translate.instant('productimport.loadingValidatingImportRows') });\n        var promises = [];\n\n        var promise = FileDataImportApiServiceV2.validateImportFileWithId(importFileId);\n        promises.push(promise);\n\n        promise = FileDataImportApiServiceV2.checkImportFileDataExistence(importFileId);\n        promises.push(promise);\n\n        $q.all(promises).then(function(responses) {\n            var validationResults = responses[0];\n            handleValidationErrors(validationResults);\n\n            if (vm.checkResults) {\n                vm.checkResults.length = 0;\n            } else {\n                vm.checkResults = [];\n            }\n            _.forEach(responses[1], function(res) {\n                vm.checkResults.push(res);\n            });\n            _.forEach(vm.displayedGroups, function(groupRow) {\n                handleInformationHighlighting(groupRow);\n            });\n\n        }, function(error) {\n            ToasterService.showError($translate.instant('productimport.couldntValidateFile'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n\n    }\n\n    function sortFileRows(importFile) {\n        importFile.importRows = _.orderBy(importFile.importRows, function(importRow) {\n            return importRow.alternativeArticleNumber;\n        }, function(importRow) {\n            return importRow.variant1Name;\n        }, function(importRow) {\n            return importRow.variant2Name;\n        });\n    }\n\n    // Change what rows are displayed in the grid\n    function setDisplayedRows(importRows) {\n        var relevantEditProperties = [];\n        if (vm.currentGroupingLevel.groupingType === 'article') {\n            relevantEditProperties = [\n                'alternativeArticleNumber', 'articleName', 'articleDescription', 'articleTypeName', 'itemGroupCode', 'departmentCode', 'purchaseCost',\n                'salesPrice', 'previousPrice', 'currencyCode', 'subCategory', 'articleCollectionCode', 'orderCollectionCode', 'numberOfRows', 'companyCode', 'countryCode'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else if (vm.currentGroupingLevel.groupingType === 'ordernumberexternal') {\n            relevantEditProperties = [\n                'orderNumberExternal', 'alternativeArticleNumber', 'articleName', 'articleDescription', 'articleTypeName', 'itemGroupCode', 'departmentCode', 'purchaseCost',\n                'salesPrice', 'previousPrice', 'currencyCode', 'subCategory', 'articleCollectionCode', 'orderCollectionCode', 'numberOfRows', 'companyCode', 'countryCode'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else if (vm.currentGroupingLevel.groupingType === 'department') {\n            relevantEditProperties = [\n                'departmentCode'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else if (vm.currentGroupingLevel.groupingType === 'subcategory') {\n            relevantEditProperties = [\n                'subCategory'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else if (vm.currentGroupingLevel.groupingType === 'articleTypeName') {\n            relevantEditProperties = [\n                'articleTypeName'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else if (vm.currentGroupingLevel.groupingType === 'itemGroup') {\n            relevantEditProperties = [\n                'itemGroupCode', 'companyCode'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else if (vm.currentGroupingLevel.groupingType === 'intrastat') {\n            relevantEditProperties = [\n                'intrastatCode'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else if (vm.currentGroupingLevel.groupingType === 'articleCollection') {\n            relevantEditProperties = [\n                'articleCollectionCode'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else if (vm.currentGroupingLevel.groupingType === 'orderCollection') {\n            relevantEditProperties = [\n                'orderCollectionCode'\n            ];\n            groupRowsByRelevantEditProperties(importRows, relevantEditProperties);\n        } else {\n            // No grouping\n            groupRowsByImportFileRow(importRows);\n        }\n    }\n\n    // When one of the input text boxes of the grid is focused.\n    function textInputBoxFocused(editPropertyName, fileRow) {\n        var lastRowExists = lastFocusedFileRow !== undefined && lastFocusedFileRow.id !== undefined;\n\n        if (lastRowExists && lastFocusedFileRow.id !== fileRow.id && !lastBlurredFileRow.isPristine) {\n            // validateGroupRow(lastBlurredFileRow);\n            saveGroupRow(lastBlurredFileRow);\n        }\n        lastFocusedFileRow = fileRow;\n    }\n\n    function textInputBoxBlurred(editPropertyName, fileRow) {\n        lastBlurredFileRow = fileRow;\n    }\n\n    // Remove a row from the import file from the local data model\n    function deleteFileRow(fileRow) {\n        fileRow.isLoading = true;\n        vm.numberOfLoadingRows = vm.numberOfLoadingRows + 1;\n        var promise = FileDataImportApiServiceV2.deleteFileRow(fileRow);\n\n        promise.then(function(result) {\n            fileRow.isPristine = true;\n            _.remove(vm.importFile.importRows, function(row) {\n                return row.id === fileRow.id;\n            });\n        }, function(error) {\n            ToasterService.showError($translate.instant('productimport.couldNotSaveFileRow'));\n        }).finally(function () {\n            vm.numberOfLoadingRows = vm.numberOfLoadingRows - 1;\n            fileRow.isLoading = false;\n        });\n        return promise;\n    }\n\n    function saveFileRow(fileRow) {\n        fileRow.isLoading = true;\n        vm.numberOfLoadingRows = vm.numberOfLoadingRows + 1;\n        var promise = FileDataImportApiServiceV2.updateFileRow(fileRow);\n\n        promise.then(function(result) {\n            fileRow.isPristine = true;\n        }, function(error) {\n            ToasterService.showError($translate.instant('productimport.couldNotSaveFileRow'));\n        }).finally(function() {\n            fileRow.isLoading = false;\n            vm.numberOfLoadingRows = vm.numberOfLoadingRows - 1;\n        });\n        return promise;\n    }\n\n    // Note down which file rows has changed since last save.\n    function fileRowChanged(fileRow) {\n        fileRow.isPristine = false;\n        if (vm.onGroupRowChanged) {\n            vm.onGroupRowChanged();\n        }\n    }\n\n    function groupRowChanged(groupRow, propertyName) {\n        if (vm.onGroupRowChanged) {\n            vm.onGroupRowChanged();\n        }\n        groupRow.isPristine = false;\n        _.forEach(groupRow.fileRows, function(fileRow) {\n            fileRow.isPristine = false;\n            fileRow[propertyName] = groupRow[propertyName];\n        });\n    }\n\n    function resetValidationErrors() {\n        vm.validationErrors.length = 0;\n        vm.validationErrors = [];\n    }\n\n    // Organize validation errors\n    function handleValidationErrors(validationResults) {\n        vm.validationErrors = [];\n        _.forEach(validationResults, function(res) {\n            var fileRow = res.importRow;\n            var newValidationErrors = res.validationErrors;\n            _.forEach(newValidationErrors, function(validationError) {\n                var validationErrorRow = _.find(vm.validationErrors, function(err) { return err.displayMessage === validationError.displayMessage; });\n                if (validationErrorRow === undefined) {\n                    validationErrorRow = validationError;\n                    validationErrorRow['fileRows'] = [];\n                    vm.validationErrors.push(validationErrorRow);\n                }\n\n                if (!_.find(validationErrorRow.fileRows, function(fr) { return fr.id === fileRow.id; })) {\n                    validationErrorRow.fileRows.push(fileRow);\n                }\n            });\n        });\n    }\n\n    function groupRowsByRelevantEditProperties(importRows, relevantEditProperties) {\n        vm.displayedGroups = [];\n\n        vm.displayedColumns = _.filter(vm.gridColumnIdentifiers, function(identifier) {\n            return identifier.editPropertyName === undefined ||\n                   _.find(relevantEditProperties, function(p) { return p === identifier.editPropertyName; });\n        });\n\n        var groupings = _.groupBy(importRows, function(importRow) {\n            var groupingString = \"\";\n            _.forEach(relevantEditProperties, function(propertyName) {\n                groupingString += importRow[propertyName];\n            });\n            return groupingString;\n        });\n\n        var groupingKeys = Object.keys(groupings);\n        var counter = 0;\n        _.forEach(groupingKeys, function(key) {\n            var groupElements = groupings[key];\n            var groupRow = {\n                fileRows: groupElements,\n                isPristine: true,\n                isLoading: false,\n                id: counter++,\n                currencyCode: (groupElements !== undefined) ? groupElements[0].currencyCode : \"?\",\n                tenantCurrencyCode: vm.tenantCurrency.code,\n                numberOfRows: groupElements.length\n            };\n            vm.displayedGroups.push(groupRow);\n\n            _.forEach(vm.displayedColumns, function(identifier) {\n                if (identifier.editPropertyName !== undefined) {\n                    var importRow = groupRow.fileRows[0];\n                    groupRow[identifier.editPropertyName] = importRow[identifier.editPropertyName];\n                }\n            });\n            handleInformationHighlighting(groupRow);\n        });\n\n        updatePage();\n    }\n\n    function groupRowsByImportFileRow(importRows) {\n        vm.displayedColumns = vm.gridColumnIdentifiers;\n        vm.displayedGroups = [];\n        var counter = 0;\n\n        _.forEach(importRows, function(importRow) {\n            var group = {\n                fileRows: [importRow],\n                isPristine: true,\n                isLoading: false,\n                id: counter++,\n                numberOfRows: 1,\n                currencyCode: (importRow !== undefined) ? importRow.currencyCode : \"?\",\n                tenantCurrencyCode: vm.tenantCurrency.code\n            };\n            _.forEach(vm.displayedColumns, function(identifier) {\n                if (identifier.editPropertyName !== undefined) {\n                    group[identifier.editPropertyName] = importRow[identifier.editPropertyName];\n                }\n            });\n            vm.displayedGroups.push(group);\n\n            handleInformationHighlighting(group);\n        });\n\n        updatePage();\n    }\n\n    function saveGroupRow(groupRow) {\n        groupRow.isLoading = true;\n        var promises = [];\n        _.forEach(groupRow.fileRows, function(fileRow) {\n            var promise = saveFileRow(fileRow);\n            promises.push(promise);\n        });\n        $q.all(promises).finally(function() {\n            groupRow.isPristine = true;\n            groupRow.isLoading = false;\n        });\n    }\n\n    function deleteGroupRow(groupRow) {\n        _.forEach(groupRow.fileRows, function(fileRow) {\n            deleteFileRow(fileRow);\n        });\n        _.remove(vm.displayedGroups, function(gr) {\n            return gr.id === groupRow.id;\n        });\n\n        _.remove(vm.currentDisplayedGroups, function(gr) {\n            return gr.id === groupRow.id;\n        });\n    }\n\n    function updatePage() {\n        var page = [];\n        var sourceCollection = vm.displayedGroups;\n        var itemsPerPage = vm.itemsPerPage;\n        var currentPage = vm.currentPage;\n\n        var numberOfItems = Math.min(itemsPerPage, sourceCollection.length);\n        var startPosition = itemsPerPage * (currentPage - 1);\n        var endPosition = (startPosition + numberOfItems) - 1;\n\n        for (var i = startPosition; i <= endPosition; i++) {\n            if (i >= sourceCollection.length) {\n                continue;\n            }\n            page.push(sourceCollection[i]);\n        }\n\n        vm.currentDisplayedGroups = page;\n    }\n\n    function getDropdownSelections() {\n        loadSpinnerService.start('mainSpinner');\n\n        var onlyCurrentCollections = true;\n\n        FileDataImportApiServiceV2.getItemGroupsOnFileId(vm.importFile.id).then(function(result) {\n            vm.itemGroupOptions = [];\n\n            _.forEach(result, function(ig) {\n                vm.itemGroupOptions.push({\n                value: ig.itemGroupCode,\n                fullName: ig.itemGroupCode + ' ' + ig.itemGroupLongName,\n                companyNamnes: ig.brand.companies.map(function(company) { return company.companyName || \"\"; })\n            }); });\n\n            var itemGroupElement = _.find(vm.gridColumnIdentifiers, function(e) { return e.editPropertyName === 'itemGroupCode'; });\n            if (itemGroupElement) {\n                itemGroupElement.selectionElements = vm.itemGroupOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        FileDataImportApiServiceV2.getDepartments().then(function(result) {\n\n            vm.departmentOptions = [];\n            _.forEach(result, function(d) { vm.departmentOptions.push({ value: d.departmentCode, fullName: '' + d.departmentCode + ' ' + d.departmentDescription }); });\n            var departmentElement = _.find(vm.gridColumnIdentifiers, function(ci) { return ci.editPropertyName === 'departmentCode'; });\n            if (departmentElement) {\n                departmentElement.selectionElements = vm.departmentOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        FileDataImportApiServiceV2.getSubCategories().then(function(result) {\n            vm.subCategoryOptions = [];\n            _.forEach(result, function(sc) { vm.subCategoryOptions.push({ value: sc.subCategoryCode, fullName: '' + sc.subCategoryCode + ' ' + sc.subCategoryName }); });\n            var subCategoryElement = _.find(vm.gridColumnIdentifiers, function(ci) { return ci.editPropertyName === 'subCategory'; });\n            if (subCategoryElement) {\n                subCategoryElement.selectionElements = vm.subCategoryOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        FileDataImportApiServiceV2.getArticleTypes().then(function(result) {\n            vm.articleTypeOptions = [];\n            _.forEach(result, function(sc) { vm.articleTypeOptions.push({ value: sc.articleTypeName, fullName: '' + sc.articleTypeName + ' (' + sc.articleSystemType + ')' }); });\n            var articleTypeElement = _.find(vm.gridColumnIdentifiers, function(ci) { return ci.editPropertyName === 'articleTypeName'; });\n            if (articleTypeElement) {\n                articleTypeElement.selectionElements = vm.articleTypeOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        FileDataImportApiServiceV2.getOrderCollections(onlyCurrentCollections).then(function(result) {\n            vm.orderCollectionOptions = [];\n            _.forEach(result, function(oc) { vm.orderCollectionOptions.push({ value: '' + oc.collectionCode, fullName: '' + oc.collectionCode + ' ' + oc.collectionDescription }); });\n            var orderCollectionElement = _.find(vm.gridColumnIdentifiers, function(ci) { return ci.editPropertyName === 'orderCollectionCode'; });\n            if (orderCollectionElement) {\n                orderCollectionElement.selectionElements = vm.orderCollectionOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        FileDataImportApiServiceV2.getArticleCollections(onlyCurrentCollections).then(function(result) {\n            vm.articleCollectionOptions = [];\n            _.forEach(result, function(ac) { vm.articleCollectionOptions.push({ value: '' + ac.collectionCode, fullName: '' + ac.collectionCode + ' ' + ac.collectionDescription }); });\n            var articleCollectionElement = _.find(vm.gridColumnIdentifiers, function(ci) { return ci.editPropertyName === 'articleCollectionCode'; });\n            if (articleCollectionElement) {\n                articleCollectionElement.selectionElements = vm.articleCollectionOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        FileDataImportApiServiceV2.getCompanies().then(function(result) {\n            vm.CompanyOptions = [];\n            _.forEach(result, function(company) {\n                vm.CompanyOptions.push({ value: company.companyName, fullName: '' + company.companyName });\n            });\n            var CompanyElement = _.find(vm.gridColumnIdentifiers, function(e) { return e.editPropertyName === 'companyCode'; });\n            if (CompanyElement) {\n                CompanyElement.selectionElements = vm.CompanyOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        FileDataImportApiServiceV2.getSalesChannels().then(function(result) {\n            vm.saleChannelOptions = [];\n            _.forEach(result, function(salesChannel) {\n                vm.saleChannelOptions.push({id: salesChannel.id, value: salesChannel.salesChannelCode, fullName: `${salesChannel.salesChannelCode} ${salesChannel.salesChannelDescription}`});\n            });\n            var saleChannelElement = _.find(vm.gridColumnIdentifiers, function(e) { return e.editPropertyName === 'saleChannels'; });\n            if (saleChannelElement) {\n                saleChannelElement.selectionElements = vm.saleChannelOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        FileDataImportApiServiceV2.getCountries().then(function(result) {\n            vm.countryOptions = [];\n            _.forEach(result, function(country) {\n                vm.countryOptions.push({id: country.id, value: country.code, fullName: `${country.code} ${country.name}`});\n            });\n            var countryElement = _.find(vm.gridColumnIdentifiers, function(e) { return e.editPropertyName === 'countryCode'; });\n            if (countryElement) {\n                countryElement.selectionElements = vm.countryOptions;\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        $q.all().finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateValue(groupRow, editProperty, value) {\n        if (editProperty === 'companyCode') {\n            groupRow['itemGroupCode'] = \"\";\n            _.forEach(groupRow.fileRows, function(fileRow) {\n                fileRow['itemGroupCode'] = \"\";\n            });\n        }\n\n        groupRow[editProperty] = '' + value;\n        _.forEach(groupRow.fileRows, function(fileRow) {\n            fileRow[editProperty] = '' + value;\n            fileRow.isPristine = false;\n        });\n\n        groupRow.isPristine = false;\n    }\n\n    function handleInformationHighlighting(groupRow) {\n        _.forEach(groupRow.fileRows, function(fileRow) {\n            var relatedCheckRow = _.find(vm.checkResults, function(chk) { return chk.importRowId === fileRow.id; });\n            var relatedErrorRows = _.filter(vm.validationErrors, function(error) {\n                var hasError = _.some(error.fileRows, function(errorFileRow) { return errorFileRow.id === fileRow.id; });\n                return hasError;\n            });\n            setHighlightingAndType(relatedCheckRow, relatedErrorRows, fileRow, groupRow);\n        });\n\n        function setHighlightingAndType(dataCheckRow, validationErrors, fileRow, groupRow) {\n            groupRow['highlighting'] = [];\n\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('alternativeArticleNumber', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('articleName', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('articleDescription', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('articleTypeName', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('itemGroupCode', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('variant1Name', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('variant2Name', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('locationCode', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('departmentCode', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('quantity', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('purchaseCost', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('salesPrice', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('previousPrice', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('subCategory', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('intrastatCode', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('barcode', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('externalSku', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('articleCollectionCode', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('orderCollectionCode', dataCheckRow, validationErrors, fileRow, groupRow));\n            groupRow.highlighting.push(consolidateDataCheckAndValidationErrors('companyCode', dataCheckRow, validationErrors, fileRow, groupRow));\n        }\n\n        function consolidateDataCheckAndValidationErrors(propertyName, dataCheckRow, validationErrors, fileRow, groupRow) {\n            var highlightRow = {\n                propertyName: propertyName,\n                highlightType: _.minBy(highlightingPriorities, function(p) { return p.priority; }),\n                displayMessage: ''\n            };\n            var dataCheckMatchesRow = (dataCheckRow !== undefined && groupRow !== undefined && dataCheckRow.importRowId === fileRow.id);\n\n            var validationErrorsForThisProperty = _.filter(validationErrors, function (e) {\n                return !e.hide && _.some(e.properties, function(p) { return p.toLowerCase() === propertyName.toLowerCase(); });\n            });\n\n            var validationErrorMatchesRow = (validationErrorsForThisProperty.length !== 0);\n\n            if (validationErrorMatchesRow) {\n                _.forEach(validationErrorsForThisProperty, function(err) {\n                    highlightRow.displayMessage += $translate.instant(err.displayMessage) + ' -- ';\n                    highlightRow.highlightType = getHighestHighlightPriority(highlightRow.highlightType, err.severity);\n                });\n            } else if (dataCheckMatchesRow) {\n\n                // barcode and sku exist on different variants\n                var shouldShowError = (propertyName === 'barcode' && (dataCheckRow.barcodeExists !== dataCheckRow.externalSkuExists)) || \n                (propertyName === 'externalSku' && (dataCheckRow.barcodeExists !== dataCheckRow.externalSkuExists && !dataCheckRow.barcodeExists));\n\n                if (shouldShowError) {\n                    highlightRow.highlightType = _.find(highlightingPriorities, function(p) { return p.name === 'error'; });\n                    highlightRow.displayMessage = getDataAlreadyExistsErrorMessage(propertyName, groupRow);\n                }\n\n\n                var shouldHighlight = (propertyName === 'alternativeArticleNumber' && dataCheckRow.alternativeArticleNumberExists) ||\n                                      (propertyName === 'barcode' && dataCheckRow.barcodeExists) || (propertyName === 'externalSku' && dataCheckRow.externalSkuExists);\n                if (shouldHighlight && !shouldShowError) {\n                    highlightRow.highlightType = _.find(highlightingPriorities, function(p) { return p.name === 'foundData'; });\n                    highlightRow.displayMessage = getDataAlreadyExistsMessage(propertyName, groupRow);\n                }\n            }\n\n            return highlightRow;\n        }\n    }\n\n    function getHighestHighlightPriority(currentPriority, errorSeverity) {\n        var priority = _.minBy(highlightingPriorities, function(p) { return p.priority; });\n        var errorPriority = _.find(highlightingPriorities, function(p) { return p.name.toLowerCase() === errorSeverity.toLowerCase(); });\n        if (errorPriority === undefined) {\n            errorPriority = priority;\n        }\n        if (priority.priority < errorPriority.priority) {\n            priority = errorPriority;\n        }\n        return priority;\n    }\n\n    function getRowInputStyle(editProperty, groupRow) {\n        var style = {};\n        var green = '#22BB22';\n        var orange = '#e58d22';\n        var red = '#e8563c';\n        var white ='#ffffff';\n        var black = '#000000';\n        var transparent = 'transparent';\n        var borderWidth = '2px';\n        var borderStyle = 'solid';\n\n        var highlightElement = _.find(groupRow.highlighting, function(h) { return h.propertyName === editProperty; });\n\n        if (highlightElement !== undefined) {\n            style['border-width'] = borderWidth;\n            style['border-style'] = borderStyle;\n            if (highlightElement.highlightType.name === 'error') {\n                style['border-color'] = red;\n                style['background-color'] = red;\n                style['color'] = white;\n            } else if (highlightElement.highlightType.name === 'warning') {\n                style['border-color'] = orange;\n                style['background-color'] = orange;\n                style['color'] = white;\n            } else if (highlightElement.highlightType.name === 'foundData') {\n                style['border-color'] = green;\n                style['background-color'] = green;\n                style['color'] = white;\n            } else if (highlightElement.highlightType.name === 'none') {\n                style['border-width'] = '0px';\n                style['background-color'] = transparent;\n                style['color'] = black;\n            }\n        }\n\n        var doubleWidthColumns = [\n            'alternativeArticleNumber',\n            'articleName',\n            'articleDescription',\n            'variant1Name',\n            'barcode'\n        ];\n        if (doubleWidthColumns.indexOf(editProperty) > -1) {\n            style['width'] = 'max-content';\n            style['min-width'] = '150px';\n        }\n\n        return style;\n    }\n\n    function getRowInputClass(editProperty, groupRow) {\n        var caClass = '';\n\n        var highlightElement = _.find(groupRow.highlighting, function(h) { return h.propertyName === editProperty; });\n\n        if (highlightElement !== undefined) {\n            if (highlightElement.highlightType.name === 'error') {\n                caClass = 'caUiSelectErrorBackground';\n            } else if (highlightElement.highlightType.name === 'warning') {\n                caClass = 'caUiSelectWarningBackground';\n            } else if (highlightElement.highlightType.name === 'foundData') {\n                caClass = 'caUiSelectFoundDataBackground';\n            } else if (highlightElement.highlightType.name === 'none') {\n                caClass = '';\n            }\n        }\n\n        return caClass;\n    }\n\n    function getDataAlreadyExistsMessage(editProperty, groupRow) {\n        var tooltipText = '';\n\n        if (editProperty === 'alternativeArticleNumber') {\n            tooltipText = $translate.instant('productimport.productAlreadyExists');\n        }\n        if (editProperty === 'barcode') {\n            tooltipText = $translate.instant('productimport.barcodeAlreadyExists');\n        }\n        if (editProperty === 'externalSku') {\n            tooltipText = $translate.instant('productimport.skuAlreadyExists');\n        }\n\n        return tooltipText;\n    }\n\n    function getDataAlreadyExistsErrorMessage(editProperty) {\n        var tooltipText = '';\n\n        if (editProperty === 'barcode') {\n            tooltipText = $translate.instant('productimport.SkuAndBarcodeInDifferentArticles');\n        }\n        if (editProperty === 'externalSku') {\n            tooltipText = $translate.instant('productimport.SkuAndBarcodeInDifferentArticles');\n        }\n\n        return tooltipText;\n    }\n\n    function getInputTooltip(editProperty, groupRow) {\n        var message = '';\n        var highlightElement = _.find(groupRow.highlighting, function(h) { return h.propertyName === editProperty; });\n        if (highlightElement !== undefined) {\n            message = highlightElement.displayMessage;\n            if (highlightElement.propertyName === 'itemGroupCode' && message === '' && vm.itemGroupOptions.length > 0 && groupRow.itemGroupCode) {\n                var itemGroup = _.find(vm.itemGroupOptions, function(o) { return o.value === groupRow.itemGroupCode; });\n                if (itemGroup !== undefined) {\n                    message = itemGroup.fullName;\n                } else {\n                    message = 'Itemgroup \\'' + groupRow.itemGroupCode + '\\' was not found';\n                }\n            } else if (highlightElement.propertyName === 'departmentCode' && message === '' && vm.departmentOptions.length > 0 && groupRow.departmentCode) {\n                var department = _.find(vm.departmentOptions, function(o) { return o.value === groupRow.departmentCode; });\n                if (department !== undefined) {\n                    message = department.fullName;\n                } else {\n                    message = 'Department \\'' + groupRow.departmentCode + '\\' was not found';\n                }\n            } else if (highlightElement.propertyName === 'subCategory' && message === '' && vm.subCategoryOptions.length > 0 && groupRow.subCategory) {\n                var subCategory = _.find(vm.subCategoryOptions, function(o) { return o.value === groupRow.subCategory; });\n                if (subCategory !== undefined) {\n                    message = subCategory.fullName;\n                } else {\n                    message = 'Subcategory \\'' + groupRow.subCategory + '\\' was not found';\n                }\n            } else if (highlightElement.propertyName === 'articleTypeName' && message === '' && vm.articleTypeOptions.length > 0 && groupRow.articleTypeName) {\n                var articleType = _.find(vm.articleTypeOptions, function(o) { return o.value === groupRow.articleTypeName; });\n                if (articleType !== undefined) {\n                    message = articleType.fullName;\n                } else {\n                    message = 'Product type \\'' + groupRow.articleTypeName + '\\' was not found';\n                }\n            } else if (highlightElement.propertyName === 'articleCollectionCode' && message === '' && vm.articleCollectionOptions.length > 0 && groupRow.articleCollectionCode) {\n                var articleCollection = _.find(vm.articleCollectionOptions, function(o) { return o.value === groupRow.articleCollectionCode; });\n                if (articleCollection !== undefined) {\n                    message = articleCollection.fullName;\n                } else {\n                    message = 'Product collection \\'' + groupRow.articleCollectionCode + '\\' was not found';\n                }\n            } else if (highlightElement.propertyName === 'orderCollectionCode' && message === '' && vm.orderCollectionOptions.length > 0 && groupRow.orderCollectionCode) {\n                var orderCollection = _.find(vm.orderCollectionOptions, function(o) { return o.value === groupRow.orderCollectionCode; });\n                if (orderCollection !== undefined) {\n                    message = orderCollection.fullName;\n                } else {\n                    message = 'Order collection \\'' + groupRow.orderCollectionCode + '\\' was not found';\n                }\n            }\n        }\n\n        var doubleWidthColumns = [\n            'alternativeArticleNumber',\n            'articleName',\n            'articleDescription',\n            'variant1Name',\n            'barcode'\n        ];\n        if (doubleWidthColumns.indexOf(editProperty) > -1 &&\n            groupRow[editProperty] &&\n            groupRow[editProperty].length > 30 &&\n            message.length === 0\n        ) {\n            message = groupRow[editProperty];\n        }\n\n        return message;\n    }\n\n    function getPriceInTenantCurrency(editProperty, groupRow) {\n        var rowCurrencyCode = groupRow.currencyCode;\n        var rowCurrency = _.find(vm.currencies, function(currency) { return currency.code === rowCurrencyCode });\n        var foreignPrice = groupRow[editProperty]\n        var tenantDefaultCurrency = vm.tenantCurrency;\n        var shouldCalculateLocalCurrency = (editProperty === 'purchaseCost');\n\n        if (tenantDefaultCurrency.id != rowCurrency.id && shouldCalculateLocalCurrency) \n        {\n            return (foreignPrice * rowCurrency.currencyRate).toString() + ` ${tenantDefaultCurrency.code}` ;\n        }\n        return foreignPrice + ` ${tenantDefaultCurrency.code}`;\n    }\n\n    function filterChoices(collection, editProperty, groupRow) {\n        if (editProperty === 'itemGroupCode') {\n            var companyName = groupRow['companyCode'];\n            if (companyName !== undefined && companyName !== '') {\n                return collection.filter(function(item) {\n                    return item.companyNamnes.includes(String(companyName));\n                });\n            }\n        }\n\n        return collection;\n    }\n\n    function isInputReadOnly(editPropertyName, groupRow){\n        if(!vm.checkResults) return false\n        if(editPropertyName === 'externalSku'){\n            var alreadyExistingVariant = vm.checkResults.find(x => x.externalSku === groupRow.externalSku)\n            if (alreadyExistingVariant && alreadyExistingVariant.externalSkuExists) {\n                return true;\n            }\n        }\n        return false\n    }\n\n    function cleanBarcodes() {\n        // vm.importFile.importRows;\n        _.forEach(vm.importFile.importRows, function(row) {\n            row.barcode = removeDisallowedCharacters(row.barcode);\n            row.isPristine = false;\n        });\n\n        _.forEach(vm.displayedGroups, function(group) {\n            group.barcode = removeDisallowedCharacters(group.barcode);\n        });\n    }\n\n    function removeDisallowedCharacters(string) {\n        return string.replace(/[^a-zA-Z0-9-]/g, '');\n    }\n\n    function setGridColumnIdentifiers() {\n        vm.gridColumnIdentifiers = [];\n\n        vm.gridColumnIdentifiers.push({ label: '',                                 /* Has no edit property */                    inputElementType: 'refresh'       /* Has no selection elements */ });\n        if (vm.importFile.importType === 'order') {\n            vm.gridColumnIdentifiers.push({ label: 'order.ordernumber',            editPropertyName: 'orderNumberExternal',      inputElementType: 'string'        /* Has no selection elements */ });\n            vm.gridColumnIdentifiers.push({ label: 'order.destination',            editPropertyName: 'locationCode',             inputElementType: 'string'        /* Has no selection elements */ });\n        }\n        vm.gridColumnIdentifiers.push({ label: 'article.alternativearticlenumber', editPropertyName: 'alternativeArticleNumber', inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.articlename',              editPropertyName: 'articleName',              inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.descriptionShort',         editPropertyName: 'articleDescription',       inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.itemgroup',                editPropertyName: 'itemGroupCode',            inputElementType: 'textdropdown', selectionElements: []           });\n        vm.gridColumnIdentifiers.push({ label: 'article.variantdetail1',           editPropertyName: 'variant1Name',             inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.variantdetail2',           editPropertyName: 'variant2Name',             inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.department',               editPropertyName: 'departmentCode',           inputElementType: 'textdropdown', selectionElements: []           });\n\n        if (vm.importFile.importType === 'order') {\n            vm.gridColumnIdentifiers.push({ label: 'article.totalquantity',        editPropertyName: 'quantity',                 inputElementType: 'string'        /* Has no selection elements */ });\n        }\n\n        vm.gridColumnIdentifiers.push({ label: 'article.purchasecost',             editPropertyName: 'purchaseCost',             inputElementType: 'price'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.salesprice',               editPropertyName: 'salesPrice',               inputElementType: 'price'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.previousprice',            editPropertyName: 'previousPrice',            inputElementType: 'price'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.subcategory',              editPropertyName: 'subCategory',              inputElementType: 'textdropdown', selectionElements: []           });\n        vm.gridColumnIdentifiers.push({ label: 'article.articletype',              editPropertyName: 'articleTypeName',          inputElementType: 'textdropdown', selectionElements: []           });\n        vm.gridColumnIdentifiers.push({ label: 'article.intrastatnumber',          editPropertyName: 'intrastatCode',            inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.barcode',                  editPropertyName: 'barcode',                  inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'productimport.externalSku',        editPropertyName: 'externalSku',              inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'productimport.supplierSku',        editPropertyName: 'supplierSku',              inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.countryCode',              editPropertyName: 'countryCode',              inputElementType: 'textdropdown', selectionElements: []           });\n\n        vm.gridColumnIdentifiers.push({ label: 'order.collection',                 editPropertyName: 'articleCollectionCode',    inputElementType: 'textdropdown', selectionElements: []           });\n\n        if (vm.importFile.importType === 'order') {\n            vm.gridColumnIdentifiers.push({ label: 'common.orderCollection',       editPropertyName: 'orderCollectionCode',      inputElementType: 'textdropdown', selectionElements: []           });\n        }\n\n        vm.gridColumnIdentifiers.push({ label: 'productimport.companyCode',        editPropertyName: 'companyCode',              inputElementType: 'textdropdown', selectionElements: []           });\n        vm.gridColumnIdentifiers.push({ label: 'article.length',                   editPropertyName: 'length',                   inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.height',                   editPropertyName: 'height',                   inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.width',                    editPropertyName: 'width',                    inputElementType: 'string'        /* Has no selection elements */ });\n        vm.gridColumnIdentifiers.push({ label: 'article.weight',                   editPropertyName: 'weight',                   inputElementType: 'string'        /* Has no selection elements */ });\n\n        vm.gridColumnIdentifiers.push({ label: 'import.removerow',                 /* Has no edit property */                    inputElementType: 'delete'        /* Has no selection elements */ });\n    }\n\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.productimporteditor', {\n        url: '/productimporteditor/{importFileId}',\n        views: {'wideColumnView@product': {\n            templateUrl: 'main/product/productimporteditor/productimporteditor.tpl.html',\n            controller: 'ProductImportEditorController as vm'\n        }},\n        resolve: {\n            importFile: importFileResolver,\n            defaultCurrency: defaultCurrencyResolver,\n            locations: locationsResolver,\n            currencies: currenciesResolver\n        }\n    });\n}\n\n// @ngInject\nfunction importFileResolver($stateParams, FileDataImportApiServiceV2) {\n    return FileDataImportApiServiceV2.getImportFile($stateParams.importFileId);\n}\n\n// @ngInject\nfunction defaultCurrencyResolver(FileDataImportApiServiceV2) {\n    return FileDataImportApiServiceV2.getCurrencyDefault();\n}\n\n// @ngInject\nfunction locationsResolver(FileDataImportApiServiceV2) {\n    return FileDataImportApiServiceV2.getLocations();\n}\n\n// @ngInject\nfunction currenciesResolver(FileDataImportApiServiceV2) {\n    return FileDataImportApiServiceV2.getCurrencies();\n}\n\n// @ngInject\nfunction ProductImportEditorController(importFile, FileDataImportApiServiceV2, ToasterService, loadSpinnerService, \n    confirmationDialogService, informationDialogService, $translate, $state, defaultCurrency, $q, locations, FeatureSwitchService,\n    importFinalizationDialogService, currencies) {\n    var vm = this;\n    var criticalSeverityLevels = ['error'];\n\n    //Properties\n    vm.importFile = importFile;\n    vm.validationErrors = [];\n    vm.dataCheckResults = [];\n    vm.selectedFileRowIds = [];\n    vm.importUpdateCount = 0;\n    vm.defaultCurrency = defaultCurrency;\n    vm.selectedDisplayMessage = '';\n    vm.validationErrorChangeCount = 0;\n    vm.locations = locations;\n    vm.selectedLocation = {};\n    vm.showAdvancedFunctionsPanel = false;\n    vm.hasAdvancedImportModule = FeatureSwitchService.hasAdvancedImport();\n    vm.currencies = currencies;\n    vm.importGridComponent = {};\n\n    //Methods\n    vm.selectFileRows = selectFileRows;\n    vm.resetSelectedImportRows = resetSelectedImportRows;\n    vm.isAllowedToFinalize = isAllowedToFinalize;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.saveImportFile = saveImportFile;\n    vm.shouldShowValidationErrorsPanel = shouldShowValidationErrorsPanel;\n    vm.finalizeImportFile = finalizeImportFile;\n    vm.showFinalizeDialog = showFinalizeDialog;\n    vm.updateImportSummary = updateImportSummary;\n    vm.checkForConnectionWithArticleData = checkForConnectionWithArticleData;\n    vm.getMissingSiblingRows = getMissingSiblingRows;\n    vm.getPdfLabels = getPdfLabels;\n    vm.registerImportGridComponent = registerImportGridComponent;\n    vm.removeIncorrectCharactersFromBarcodes = removeIncorrectCharactersFromBarcodes\n    \n    // Methonds on child components (only available after component initialization)\n    var cleanBarcodes = function(){}; // Will hold the function from importrowsgrid.component.js once its initialized\n\n    activate();\n\n    function activate() {\n        setAllRowsPristine();\n    }\n\n    function showColumn(list, maxResults, field1, field2) {\n        var columnVisible = false;\n        for (let i = 0; i < Math.min(list.length, maxResults); i++) {\n            const element = list[i];\n            if (element[field1] !== element[field2]) { columnVisible = true; }\n        }\n        return columnVisible;\n    }\n\n    function removeIncorrectCharactersFromBarcodes() {\n        confirmationDialogService.showDialog($translate.instant(\"import.cleanbarcodesconfirmation\")).then(function (result) {\n            if (result === true) {\n                cleanBarcodes();\n            }\n        });\n    }\n\n    function registerImportGridComponent(component) {\n        cleanBarcodes = component.cleanBarcodes;\n    }\n\n    function checkForConnectionWithArticleData() {\n        var request = {\n            importFileId: vm.importFile.id\n        };\n        var message = '';\n        FileDataImportApiServiceV2.checkForConnectionWithArticleData(request).then(function(response) {\n            if (response.vitalChanges && response.vitalChanges.length > 0) {\n                var maxResults = 20;\n                message = $translate.instant(\"productimport.foundTheFollowingChangesToArticleData\") + '. ';\n                if (response.vitalChanges.length > maxResults) {\n                    //var str = 'Visar endast de första {0} skillnaderna';\n                    var str = $translate.instant('productimport.showingOnlyTheFirstXResults');\n                    str = str.replace(/\\{0\\}/, maxResults);\n                    message += str + '.';\n                }\n                message += '<br><br>';\n\n                message += $translate.instant('productimport.confirmConnectWithArticleDataWillOverwriteImportFileData');\n                message += '<br><br>';\n\n                message += '<table class=\"table\" style=\"width:100%;\">';\n                message += '<thead><tr>';\n                message += '<th>' + $translate.instant('productimport.barcode') + '</th>';\n                message += '<th>&nbsp;</th>';\n                if (showColumn(response.vitalChanges, maxResults, 'currentItemGroupCode', 'suggestedItemGroupCode')) { message += '<th>' + $translate.instant('productimport.itemgroup') + '</th>'; }\n                if (showColumn(response.vitalChanges, maxResults, 'currentAlternativeArticleNumber', 'suggestedAlternativeArticleNumber')) { message += '<th>' + $translate.instant('productimport.alternativeArticleNumber') + '</th>'; }\n                if (showColumn(response.vitalChanges, maxResults, 'currentArticleName', 'suggestedArticleName')) { message += '<th>' + $translate.instant('productimport.articleName') + '</th>'; }\n                if (showColumn(response.vitalChanges, maxResults, 'currentArticleDescription', 'suggestedArticleDescription')) { message += '<th>' + $translate.instant('productimport.articleDescription') + '</th>'; }\n                if (showColumn(response.vitalChanges, maxResults, 'currentVariant1Name', 'suggestedVariant1Name')) { message += '<th>' + $translate.instant('productimport.variant1Name') + '</th>'; }\n                if (showColumn(response.vitalChanges, maxResults, 'currentVariant2Name', 'suggestedVariant2Name')) { message += '<th>' + $translate.instant('productimport.variant2Name') + '</th>'; }\n                if (showColumn(response.vitalChanges, maxResults, 'currentDepartmentCode', 'suggestedDepartmentCode')) { message += '<th>' + $translate.instant('productimport.department') + '</th>'; }\n                if (showColumn(response.vitalChanges, maxResults, 'currentSubCategoryCode', 'suggestedSubCategoryCode')) { message += '<th>' + $translate.instant('productimport.subCategory') + '</th>'; }\n                message += '</tr></thead>';\n\n                for (let i = 0; i < Math.min(response.vitalChanges.length, maxResults); i++) {\n                    const vitalChange = response.vitalChanges[i];\n\n                    var showItemGroupCode = vitalChange.currentItemGroupCode !== vitalChange.suggestedItemGroupCode;\n                    var currentItemGroupCode = vitalChange.currentItemGroupCode ? vitalChange.currentItemGroupCode : '';\n                    var suggestedItemGroupCode = vitalChange.suggestedItemGroupCode ? vitalChange.suggestedItemGroupCode : '';\n                    if (currentItemGroupCode.length === 0 && suggestedItemGroupCode.length > 0) { currentItemGroupCode = '(' + $translate.instant('common.empty') + ')'; }\n\n                    var showAlternativeArticleNumber = vitalChange.currentAlternativeArticleNumber !== vitalChange.suggestedAlternativeArticleNumber;\n                    var currentAlternativeArticleNumber = vitalChange.currentAlternativeArticleNumber ? vitalChange.currentAlternativeArticleNumber : '';\n                    var suggestedAlternativeArticleNumber = vitalChange.suggestedAlternativeArticleNumber ? vitalChange.suggestedAlternativeArticleNumber : '';\n                    if (currentAlternativeArticleNumber.length === 0 && suggestedAlternativeArticleNumber.length > 0) { currentAlternativeArticleNumber = '(' + $translate.instant('common.empty') + ')'; }\n\n                    var showArticleName = vitalChange.currentArticleName !== vitalChange.suggestedArticleName;\n                    var currentArticleName = vitalChange.currentArticleName ? vitalChange.currentArticleName : '';\n                    var suggestedArticleName = vitalChange.suggestedArticleName ? vitalChange.suggestedArticleName : '';\n                    if (currentArticleName.length === 0 && suggestedArticleName.length > 0) { currentArticleName = '(' + $translate.instant('common.empty') + ')'; }\n\n                    var showArticleDescription = vitalChange.currentArticleDescription !== vitalChange.suggestedArticleDescription;\n                    var currentArticleDescription = vitalChange.currentArticleDescription ? vitalChange.currentArticleDescription : '';\n                    var suggestedArticleDescription = vitalChange.suggestedArticleDescription ? vitalChange.suggestedArticleDescription : '';\n                    if (currentArticleDescription.length === 0 && suggestedArticleDescription.length > 0) { currentArticleDescription = '(' + $translate.instant('common.empty') + ')'; }\n\n                    var showVariant1Name = vitalChange.currentVariant1Name !== vitalChange.suggestedVariant1Name;\n                    var currentVariant1Name = vitalChange.currentVariant1Name ? vitalChange.currentVariant1Name : '';\n                    var suggestedVariant1Name = vitalChange.suggestedVariant1Name ? vitalChange.suggestedVariant1Name : '';\n                    if (currentVariant1Name.length === 0 && suggestedVariant1Name.length > 0) { currentVariant1Name = '(' + $translate.instant('common.empty') + ')'; }\n\n                    var showVariant2Name = vitalChange.currentVariant2Name !== vitalChange.suggestedVariant2Name;\n                    var currentVariant2Name = vitalChange.currentVariant2Name ? vitalChange.currentVariant2Name : '';\n                    var suggestedVariant2Name = vitalChange.suggestedVariant2Name ? vitalChange.suggestedVariant2Name : '';\n                    if (currentVariant2Name.length === 0 && suggestedVariant2Name.length > 0) { currentVariant2Name = '(' + $translate.instant('common.empty') + ')'; }\n\n                    var showDepartmentCode = vitalChange.currentDepartmentCode !== vitalChange.suggestedDepartmentCode;\n                    var currentDepartmentCode = vitalChange.currentDepartmentCode ? vitalChange.currentDepartmentCode : '';\n                    var suggestedDepartmentCode = vitalChange.suggestedDepartmentCode ? vitalChange.suggestedDepartmentCode : '';\n                    if (currentDepartmentCode.length === 0 && suggestedDepartmentCode.length > 0) { currentDepartmentCode = '(' + $translate.instant('common.empty') + ')'; }\n\n                    var showSubCategoryCode = vitalChange.currentSubCategoryCode !== vitalChange.suggestedSubCategoryCode;\n                    var currentSubCategoryCode = vitalChange.currentSubCategoryCode ? vitalChange.currentSubCategoryCode : '';\n                    var suggestedSubCategoryCode = vitalChange.suggestedSubCategoryCode ? vitalChange.suggestedSubCategoryCode : '';\n                    if (currentSubCategoryCode.length === 0 && suggestedSubCategoryCode.length > 0) { currentSubCategoryCode = '(' + $translate.instant('common.empty') + ')'; }\n\n                    message += '<tr>';\n                    message += '<td>' + vitalChange.barcode + '</td>';\n                    message += '<td>' + $translate.instant('productimport.currentValue') + ':</td>';\n                    if (showItemGroupCode) { message += '<td>' + currentItemGroupCode + '</td>'; }\n                    if (showAlternativeArticleNumber) { message += '<td>' + currentAlternativeArticleNumber + '</td>'; }\n                    if (showArticleName) { message += '<td>' + currentArticleName + '</td>'; }\n                    if (showArticleDescription) { message += '<td>' + currentArticleDescription + '</td>'; }\n                    if (showVariant1Name) { message += '<td>' + currentVariant1Name + '</td>'; }\n                    if (showVariant2Name) { message += '<td>' + currentVariant2Name + '</td>'; }\n                    if (showDepartmentCode) { message += '<td>' + currentDepartmentCode + '</td>'; }\n                    if (showSubCategoryCode) { message += '<td>' + currentSubCategoryCode + '</td>'; }\n                    message += '</tr>';\n\n                    message += '<tr>';\n                    message += '<td>&nbsp;</td>';\n                    message += '<td>' + $translate.instant('productimport.suggestedValue') + ':</td>';\n                    if (showItemGroupCode) { message += '<td>' + suggestedItemGroupCode + '</td>'; }\n                    if (showAlternativeArticleNumber) { message += '<td>' + suggestedAlternativeArticleNumber + '</td>'; }\n                    if (showArticleName) { message += '<td>' + suggestedArticleName + '</td>'; }\n                    if (showArticleDescription) { message += '<td>' + suggestedArticleDescription + '</td>'; }\n                    if (showVariant1Name) { message += '<td>' + suggestedVariant1Name + '</td>'; }\n                    if (showVariant2Name) { message += '<td>' + suggestedVariant2Name + '</td>'; }\n                    if (showDepartmentCode) { message += '<td>' + suggestedDepartmentCode + '</td>'; }\n                    if (showSubCategoryCode) { message += '<td>' + suggestedSubCategoryCode + '</td>'; }\n                    message += '</tr>';\n                }\n\n                message += '</table>';\n\n                confirmationDialogService.showDialog(message).then(function (result) {\n                    if (result === true) {\n                        connectWithArticleData();\n                    }\n                });\n            } else {\n                ToasterService.showSuccess($translate.instant('productimport.foundNoChangesToArticleData'));\n            }\n        }, function(error) {\n            ToasterService.showError($translate.instant('productimport.couldNotCheckForConnectionWithArticleData'));\n        }).finally(function() {\n        });\n    }\n\n    function getMissingSiblingRows() \n    {\n        var request = { \n            importFileId: vm.importFile.id,\n            grouping: \"Color\",\n            rows:[] \n        };\n\n        _.forEach(vm.importFile.importRows, function(row) {\n            request.rows.push({\n                barcode: row.barcode,\n                salesPrice: row.salesPrice,\n                purchaseCost: row.purchaseCost,\n                productImportId: vm.importFile.id\n            });\n        });\n\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiServiceV2.getMissingSiblingRows(request).then(function(response) {\n            ToasterService.showSuccess($translate.instant('success'));\n            var rows = response.data;\n\n            _.forEach(rows, function(r) { \n                r.isAutoGeneratedSiblingRow = true;\n                vm.importFile.importRows.push(r); \n            });\n\n            refreshView();\n        }, function(error) {\n            ToasterService.showError($translate.instant('failure'));\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function refreshView() {\n        vm.importUpdateCount++;\n        resetSelectedImportRows();\n    }\n\n    function getPdfLabels() {\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiServiceV2.getPdfLabels(vm.importFile.id, vm.selectedLocation.id).then(function(response) {\n            ToasterService.showSuccess($translate.instant('success'));\n        },function(error) {\n            ToasterService.showError($translate.instant('failure'));\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n\n    }\n\n    function connectWithArticleData() {\n        loadSpinnerService.start('mainSpinner', { message: $translate.instant('productimport.connectingToArticleData') });\n        var request = {\n            importFileId: vm.importFile.id\n        };\n        FileDataImportApiServiceV2.connectWithArticleData(request).then(function(response) {\n            ToasterService.showSuccess($translate.instant('productimport.connectWithArticleDataSuccessful'));\n            $state.reload();\n        }, function(error) {\n            ToasterService.showError($translate.instant('productimport.couldNotConnectWithArticleData'));\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function selectFileRows(fileRows, displayMessage) {\n        vm.selectedFileRowIds = [];\n        vm.selectedDisplayMessage = displayMessage;\n        _.forEach(fileRows, function(fileRow) {\n            vm.selectedFileRowIds.push(fileRow.id);\n        });\n    }\n\n    function resetSelectedImportRows() {\n        vm.selectedFileRowIds = [];\n        vm.selectedDisplayMessage = '';\n    }\n\n    function isAllowedToFinalize() {\n        // Find errors that is severe enough that the file cannot be finalized.\n        var isAllowedToFinalize = true;\n        var criticalErrors = getCriticalErrors();\n\n        if (criticalErrors.length !== 0) {\n            isAllowedToFinalize = false;\n        }\n        return isAllowedToFinalize;\n    }\n\n    function isAllowedToSave() {\n        return true;\n    }\n\n    function saveImportFile() {\n        var fileRowsToSave = [];\n\n        _.forEach(vm.importFile.importRows, function(row) {\n            if (!row.isPristine) {\n                fileRowsToSave.push(row);\n                row.productImportId = vm.importFile.id;\n            }\n        });\n\n        loadSpinnerService.start('mainSpinner');\n        FileDataImportApiServiceV2.updateFileRows(fileRowsToSave).then(function(response) {\n            _.forEach(response, function(r) {\n                var localRow = _.find(vm.importFile.importRows, function(row) { return row.id === r.id; });\n                localRow.isPristine = true;\n            });\n\n            if (response.length === 0) {\n                ToasterService.showWarning($translate.instant('productimport.noChangesToSave'));\n            } else {\n                validateImportFileWithId(vm.importFile.id);\n            }\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function validateImportFileWithId(importFileId) {\n        loadSpinnerService.start('mainSpinner', { message: $translate.instant('productimport.loadingValidatingImportRows') });\n        var promises = [];\n\n        var promise = FileDataImportApiServiceV2.validateImportFileWithId(importFileId);\n        promises.push(promise);\n\n        promise = FileDataImportApiServiceV2.checkImportFileDataExistence(importFileId);\n        promises.push(promise);\n\n        $q.all(promises).then(function(responses) {\n            vm.validationErrors = [];\n            handleValidationErrors(responses[0]);\n\n            vm.dataCheckResults = [];\n            _.forEach(responses[1], function(res) {\n                vm.dataCheckResults.push(res);\n            });\n\n            vm.validationErrorChangeCount++;\n        }, function(error) {\n            ToasterService.showError($translate.instant('productimport.couldntValidateFile'), \n                                            $translate.instant('inventory.error') + ':', 15000);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function handleValidationErrors(validationResults) {\n        vm.validationErrors = [];\n        _.forEach(validationResults, function(res) {\n            var fileRow = res.importRow;\n            var newValidationErrors = res.validationErrors;\n            _.forEach(newValidationErrors, function(validationError) {\n                var validationErrorRow = _.find(vm.validationErrors, function(err) { return err.displayMessage === validationError.displayMessage; });\n                if (validationErrorRow === undefined) {\n                    validationErrorRow = validationError;\n                    validationErrorRow['fileRows'] = [];\n                    vm.validationErrors.push(validationErrorRow);\n                }\n\n                if (!_.find(validationErrorRow.fileRows, function(fr) { return fr.id === fileRow.id; })) {\n                    validationErrorRow.fileRows.push(fileRow);\n                }\n            });\n        });\n    }\n\n    function shouldShowValidationErrorsPanel() {\n        var showErrorsPanel = false;\n        var criticalErrors = getCriticalErrors();\n        var nonHiddenWarnings = _.filter(vm.validationErrors, function(validationError) {\n            return validationError.severity === 'warning' && !validationError.hide;\n        });\n\n        if (nonHiddenWarnings.length + criticalErrors.length > 0) {\n            showErrorsPanel = true;\n        }\n        return showErrorsPanel;\n    }\n\n    function showFinalizeDialog() {\n        if (vm.hasAdvancedImportModule) {\n            loadSpinnerService.start('mainSpinner', { message: $translate.instant('productimport.verifying') });\n            FileDataImportApiServiceV2.existsSiblingPrices(vm.importFile.id).then(function(response) {\n                if (response.data === true) {\n                    importFinalizationDialogService.showDialog().then(function(dialogResponse) {\n                        finalizeImportFile(dialogResponse);\n                    });\n                } else {\n                    finalizeImportFile();\n                }\n            }).finally(function() { loadSpinnerService.stop('mainSpinner'); });\n        } else {\n            finalizeImportFile();\n        }\n    }\n\n    function finalizeImportFile(priceUpdateGroupingLevel) {\n        loadSpinnerService.start('mainSpinner', { message: $translate.instant('productimport.finalizingImport') });\n        FileDataImportApiServiceV2.finalizeImport(vm.importFile.id, priceUpdateGroupingLevel).then(function(response) {\n            ToasterService.showSuccess($translate.instant('productimport.finalizationSuccessful'));\n            $state.go('product.productimport');\n        }, function(error) {\n            ToasterService.showError(error.message, $translate.instant('inventory.error') + ':', 15000);\n            ToasterService.showError($translate.instant('productimport.couldNotFinalizeImport'), $translate.instant('inventory.error') + ':', 15000);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getCriticalErrors() {\n        var criticalErrors = _.filter(vm.validationErrors, function(validationError) {\n            return (_.find(criticalSeverityLevels, function(errorType) { return validationError.severity === errorType; }) !== undefined);\n        });\n        return criticalErrors;\n    }\n\n    function setAllRowsPristine() {\n        _.forEach(vm.importFile.importRows, function(row) {\n            row.isPristine = true;\n        });\n    }\n\n    function updateImportSummary() {\n        vm.importUpdateCount++;\n    }\n}\n\nangular\n.module('product.productimporteditor', [])\n.config(stateConfig)\n.controller('ProductImportEditorController', ProductImportEditorController);\n","// @ngInject\nfunction ProductsApiService($q, $rootScope, DS, DSHttpAdapter, ResourcesService, $cookies, $window) {\n\n    var endpoint = 'products';\n\n    return {\n        createProduct: ResourcesService.apiFactory.create(endpoint, 'Product'),\n        downloadArticleLabels: downloadArticleLabels,\n        downloadArticleVariantLabels: downloadArticleVariantLabels,\n        getAccounts: ResourcesService.apiFactory.get(endpoint + '/accounts'),\n        getArticleCollections: ResourcesService.apiFactory.get(endpoint + '/articlecollections'),\n        getArticleTypes: ResourcesService.apiFactory.get(endpoint + '/articletypes'),\n        getCountries: ResourcesService.apiFactory.get(endpoint + '/countries'),\n        getCurrencies: ResourcesService.apiFactory.get(endpoint + '/currencies'),\n        getDefaultCurrency: ResourcesService.apiFactory.get(endpoint + '/tenantdefault'),\n        getIntrastats: ResourcesService.apiFactory.get(endpoint + '/intrastats'),\n        getItemGroup: ResourcesService.apiFactory.get(endpoint + '/itemgroup'),\n        getItemGroups: ResourcesService.apiFactory.get(endpoint + '/itemgroups'),\n        getItemGroupBriefs: ResourcesService.apiFactory.get(endpoint + '/itemgroupbriefs'),\n        getItemGroupFlats: ResourcesService.apiFactory.get(endpoint + '/itemgroupflats'),\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getMainGroup: ResourcesService.apiFactory.get(endpoint + '/maingroup'),\n        getOrderCollections: ResourcesService.apiFactory.get(endpoint + '/ordercollections'),\n        getProduct: ResourcesService.apiFactory.get(endpoint),\n        getProducts: getProducts,\n        getProductIds: getProductIds,\n        getProductPrices: getProductPrices,\n        //getProductStocks: getProductStocks,\n        getProductStocks: ResourcesService.apiFactory.get('stock/productstock/'),\n        getProductStockLocations: getProductStockLocations,\n        getProductVariants: getProductVariants,\n        getProductVariantsInTransitValues: getProductVariantsInTransitValues,\n        getProductVariantsStocks: getProductVariantsStocks,\n        getProductClasses: ResourcesService.apiFactory.get(endpoint + '/articleclasses'),\n        getRights: ResourcesService.apiFactory.get('/rights'),\n        getSalesChannels: ResourcesService.apiFactory.get(endpoint + '/saleschannels'),\n        getSuppliers: getSuppliers,\n        getVariant: ResourcesService.apiFactory.get(endpoint + '/variant'),\n        // getMultipliers: ResourcesService.apiFactory.get(endpoint + '/multipliers'),\n        getMultipliers: getMultipliers,\n        ReadMultipliersToEdit: ReadMultipliersToEdit,\n        updateMonthMultiplier: updateMonthMultiplier,\n        createMonthMultiplier: createMonthMultiplier,\n        deleteMonthMultiplier: deleteMonthMultiplier,\n        changeMultiplierOnArticle, changeMultiplierOnArticle,\n        saveNewIntrastat: saveNewIntrastat,\n        updateProduct: updateProduct,\n        getAllArticleVariants: getAllArticleVariants,\n        changeItemGroup: ResourcesService.apiFactory.update(endpoint + '/changeItemGroup'),\n        getArticleChangeVariantDetailObject: getArticleChangeVariantDetailObject,\n        getVariantDetailOptions: getVariantDetailOptions,\n        getVariantDetailOptionsPaged: getVariantDetailOptionsPaged,\n        changeArticleVariantDetail: ResourcesService.apiFactory.update(endpoint + '/changeArticleVariantDetail'),\n        hasSimpleWms: hasSimpleWms,\n        checkIfBarcodeExists: checkIfBarcodeExists,\n        getMetaFieldValues: getMetaFieldValues,\n        getMetaFields: getMetaFields,\n        upsertMetaFields: upsertMetaFields,\n        upsertMetaFieldValues: upsertMetaFieldValues\n    };\n\n    function getProducts(request) {\n\n        var params = {\n            filter: '',\n            page: 1,\n            pageSize: 20\n        };\n\n        //page, filter, pageSize, companyId, showInactiveArticles\n        if (request.currentPage && request.currentPage > 1) {\n            params.page = request.currentPage;\n        }\n\n        if (request.pageSize && request.pageSize > 0) {\n            params.pageSize = request.pageSize;\n        }\n\n        if (!_.isEmpty(request.filter)) {\n            params.filter = request.filter;\n        }\n\n        if (request.companyId) {\n            params.companyId = request.companyId;\n        }\n\n        if (request.showInactiveArticles) {\n            params.showInactiveArticles = request.showInactiveArticles;\n        }\n\n        if (request.matchEntireSearchTerm !== undefined) {\n            params.matchEntireSearchTerm = request.matchEntireSearchTerm;\n        }\n\n        var args = {params: params};\n\n        return ResourcesService.apiFactory.get(endpoint)(args);\n    }\n\n    function getMetaFieldValues(articleId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.rms2Path + 'metafieldvalue/' + articleId).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getMetaFields() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.rms2Path + 'metafield/').then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function upsertMetaFields(metaFieldsData) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + 'metafield/', metaFieldsData)\n            .then(function (response) {\n                deferred.resolve(response.data);\n            }, function (error) {\n                deferred.reject(handleError(error));\n            });\n\n        return deferred.promise;\n    }\n\n    function upsertMetaFieldValues(articleId, values) {\n        var deferred = $q.defer();\n\n        var data = {\n            articleId: articleId,\n            metaFieldValues: values\n        }\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + 'metafieldvalue/', data)\n            .then(function (response) {\n                deferred.resolve(response.data);\n            }, function (error) {\n                deferred.reject(handleError(error));\n            });\n\n        return deferred.promise;\n    }\n\n    function getSuppliers(brandId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'products/suppliers/brand/' + brandId).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getProductIds(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + '/products/ids', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getProductPrices(articleId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + articleId + '/prices').then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getProductVariants(page, filter, pageSize, collectionId, onlyWithNegativeEshopStock) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        if (collectionId > 0) {\n            params.collectionId = collectionId;\n        }\n\n        if (onlyWithNegativeEshopStock) {\n            params.onlyWithNegativeEshopStock = onlyWithNegativeEshopStock;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articleVariants', {params: params}).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function getProductVariantsStocks(articleVariantsAndLocationIds) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'articlevariants/stocks', articleVariantsAndLocationIds).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getProductVariantsInTransitValues(articleVariantsAndLocationIds) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'articlevariants/intransit', articleVariantsAndLocationIds).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadArticleLabels(productId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'products/' + productId + '/labels', {responseType: 'arraybuffer'}).then(function (response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'labels.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s]){1,}.pdf/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n\n    function downloadArticleVariantLabels(labelRequests) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'products/labels', labelRequests).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function saveNewIntrastat(articleId, articleVariantId, intrastat) {\n        var params = {\n            articleId: articleId,\n            articleVariantId: articleVariantId,\n            intrastat: intrastat\n        };\n\n        return ResourcesService.apiFactory.save('/products/intrastat', 'Intrastat')(params);\n    }\n\n    function updateProduct(id, data) {\n\n        // The internal json stringification of DSHttpAdapter seems to cause some object fields to go\n        // missing for some reason.\n        data = JSON.stringify(data);\n\n        return ResourcesService.apiFactory.update(endpoint + '/' + id, 'Product')(data);\n    }\n\n    function getAllArticleVariants(page, filter, pageSize, collectionId, onlyWithNegativeEshopStock) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        if (collectionId > 0) {\n            params.collectionId = collectionId;\n        }\n\n        if (onlyWithNegativeEshopStock) {\n            params.onlyWithNegativeEshopStock = onlyWithNegativeEshopStock;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articleVariants', {params: params}).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise;\n    }\n\n    function hasSimpleWms() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/hasSimpleWms').then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n\n    function getProductStockLocations(warehouseId, productId) {\n\n        console.log('warehouseId: ' + warehouseId + ', productId: ' + productId);\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/stocklocations/warehouses/' + warehouseId + '/products/' + productId).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n        /*\n                console.log('warehouseId: ' + warehouseId + ', productId: ' + productId);\n                return ResourcesService.apiFactory.get(endpoint + '/stocklocations/warehouses/' + warehouseId + '/products/' + productId);\n                */\n    }\n\n    function getArticleChangeVariantDetailObject(articleId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/getchangevariantdetailobject/' + articleId).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getVariantDetailOptionsPaged(request) {\n\n        var params = {\n            filter: '',\n            page: 1,\n            pageSize: 20,\n            variantDetailType: 1\n        };\n\n        //page, filter, pageSize, companyId, showInactiveArticles\n        if (request.currentPage && request.currentPage > 1) {\n            params.page = request.currentPage;\n        }\n\n        if (request.pageSize && request.pageSize > 0) {\n            params.pageSize = request.pageSize;\n        }\n\n        if (!_.isEmpty(request.filter)) {\n            params.filter = request.filter;\n        }\n\n        if (request.variantDetailType) {\n            params.variantDetailType = request.variantDetailType;\n        }\n\n        var args = {params: params};\n\n        return ResourcesService.apiFactory.get(endpoint + '/getvariantdetailoptionspaged')(args);\n    }\n\n    function getVariantDetailOptions(variantDetailType) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/getvariantdetailoptions/' + variantDetailType).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteMonthMultiplier(requestId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.DEL(DS.defaults.basePath + 'products/multiplier/' + requestId).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function changeMultiplierOnArticle(articleId, stockLogisticsMonthMultipliersDto) {\n        var deferred = $q.defer();\n        var jsonRequest = JSON.stringify(stockLogisticsMonthMultipliersDto);\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'products/multiplier/' + articleId, jsonRequest).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function createMonthMultiplier(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'products/multiplier/', request).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateMonthMultiplier(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'products/multiplier/', request).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getMultipliers(articleId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'products/multiplier/' + articleId).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function ReadMultipliersToEdit(articleId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'products/multiplier/edit/' + articleId).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function checkIfBarcodeExists(barcode) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (_.isUndefined(barcode) || barcode === \"\") {\n            return false;\n        }\n\n        params.barcode = barcode;\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articlevariants/barcodeexists', {params: params}).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n}\n\nangular.module('products.api', [])\n  .factory('ProductsApiService', ProductsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.psychologicalprices.new', {\n        url:'/new',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/psychologicalprices/psychologicalprice/psychologicalprice.tpl.html',\n            controller: 'PsychologicalPriceController as vm'\n        }},\n        resolve: {\n            psychologicalPrice: function() { return {}; },\n            isNewPsychologicalPrice: function() { return true; }\n        }\n    });\n\n    $stateProvider.state('product.psychologicalprices.psychologicalprice', {\n        url:'/{psychologicalPriceId}',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/psychologicalprices/psychologicalprice/psychologicalprice.tpl.html',\n            controller: 'PsychologicalPriceController as vm'\n        }},\n        resolve: {\n            psychologicalPrice: psychologicalPriceResolver,\n            isNewPsychologicalPrice: function() { return false; }\n        }\n    });\n}\n\n// @ngInject\nfunction psychologicalPriceResolver($stateParams, PsychologicalPricesApiService) {\n    return PsychologicalPricesApiService.getPsychologicalPrice($stateParams.psychologicalPriceId);\n}\n\n// @ngInject\nfunction PsychologicalPriceController($state, $rootScope, psychologicalPrice, loadSpinnerService, PsychologicalPricesApiService, isNewPsychologicalPrice, ToasterService, $translate) {\n    var vm = this;\n\n    var psychologicalPriceCopy = {};\n\n    vm.psychologicalPrice = psychologicalPrice;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.savePsychologicalPrice = savePsychologicalPrice;\n\n    vm.isNewPsychologicalPrice = isNewPsychologicalPrice;\n    vm.isEditing = vm.isNewPsychologicalPrice;\n\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.isPsychologicalPriceNameValid = isPsychologicalPriceNameValid;\n    vm.addInterval = addInterval;\n    vm.removeInterval = removeInterval;\n    vm.clearIntervals = clearIntervals;\n\n    activate();\n\n    function activate() {\n        prepareData();\n\n        if (vm.isNewPsychologicalPrice) {\n            vm.psychologicalPrice = {priceIntervals:[]};\n            vm.newInterval = {minValue: null, maxValue: null, resultValue: null};\n        } else {\n            vm.newInterval = {minValue: null, maxValue: null, resultValue: null};\n        }\n    }\n\n    function clearIntervals() {\n        vm.psychologicalPrice.priceIntervals = [];\n        vm.newInterval = {minValue: null, maxValue: null, resultValue: null};\n    }\n\n    function removeInterval(interval) {\n        _.remove(vm.psychologicalPrice.priceIntervals, interval);\n    }\n\n    function addInterval(interval) {\n        var hasError = false;\n        var newInterval = { minValue: Number(interval.minValue), maxValue: Number(interval.maxValue), resultValue: Number(interval.resultValue)};\n\n        //Validera max och min är numbers\n        if (!_.isNumber(newInterval.minValue) || _.isNaN(newInterval.minValue)) {\n            newInterval.minValue = 0;\n            ToasterService.showError($translate.instant('psychologicalPrice.minValueIsWrong'), $translate.instant('common.error'));\n            hasError = true;\n        }\n\n        if (!_.isNumber(newInterval.maxValue) || _.isNaN(newInterval.maxValue)) {\n            newInterval.maxValue = 0;\n            ToasterService.showError($translate.instant('psychologicalPrice.maxValueIsWrong'), $translate.instant('common.error'));\n            hasError = true;\n        }\n\n        //Validera max > min\n        if (newInterval.minValue > newInterval.maxValue) {\n            newInterval.minValue = newInterval.maxValue;\n            ToasterService.showError($translate.instant('psychologicalPrice.minValueLargerThanMaxValue'), $translate.instant('common.error'));\n            hasError = true;\n        }\n\n        if (!hasError) {\n            vm.psychologicalPrice.priceIntervals.push(newInterval);\n            vm.newInterval = getNewRowDefaults(newInterval);\n        }\n\n    }\n\n    function getNewRowDefaults(fromInterval) {\n        var diff = fromInterval.maxValue - fromInterval.minValue;\n        return {minValue: fromInterval.maxValue, maxValue: fromInterval.maxValue + diff, resultValue: fromInterval.resultValue + diff};\n    }\n\n    function enableEditing() {\n        psychologicalPriceCopy = angular.copy(vm.psychologicalPrice);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.psychologicalPrice = psychologicalPriceCopy;\n        vm.isEditing = false;\n    }\n\n    function savePsychologicalPrice() {\n        if (vm.isNewPsychologicalPrice) {\n            saveNewPsychologicalPrice();\n        } else {\n            updatePsychologicalPrice();\n        }\n    }\n\n    function saveNewPsychologicalPrice() {\n        loadSpinnerService.start('mainSpinner');\n        PsychologicalPricesApiService.createPsychologicalPrice(vm.psychologicalPrice).then(function(response) {\n            vm.psychologicalPrice = response;\n            prepareData();\n            vm.isNewPsychologicalPrice = false;\n            vm.isEditing = false;\n            ToasterService.showSuccess('\"' + vm.psychologicalPrice.name + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"product.psychologicalprices\"));\n            $rootScope.$emit('PsychologicalPrice.Inserted', response);\n            $state.go('product.psychologicalprices.psychologicalprice', {psychologicalPriceId: response.id});\n        }, function(error) {\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updatePsychologicalPrice() {\n        loadSpinnerService.start('mainSpinner');\n        PsychologicalPricesApiService.updatePsychologicalPrice(vm.psychologicalPrice).then(function(response) {\n            vm.psychologicalPrice = response;\n            prepareData();\n            vm.isEditing = false;\n            ToasterService.showSuccess('\"' + vm.psychologicalPrice.name + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"product.psychologicalprices\"));\n            $rootScope.$emit('PsychologicalPrice.Changed', response);\n        }, function(error) {\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function prepareData() {\n        if (vm.psychologicalPrice === undefined) {\n            return;\n        }\n    }\n\n    function isAllInformationValid() {\n        return !vm.isNewPsychologicalPrice ||\n            (isPsychologicalPriceNameValid() &&\n                hasPriceIntervals()\n            );\n    }\n\n    function isPsychologicalPriceNameValid() {\n        return vm.psychologicalPrice && vm.psychologicalPrice.name && vm.psychologicalPrice.name.length > 0;\n\n    }\n\n    function hasPriceIntervals() {\n        return vm.psychologicalPrice && vm.psychologicalPrice.priceIntervals && vm.psychologicalPrice.priceIntervals.length > 0;\n    }\n}\n\nangular\n    .module('psychologicalprices.psychologicalprice', [])\n    .config(stateConfig)\n    .controller('PsychologicalPriceController', PsychologicalPriceController);\n","// @ngInject\nfunction PsychologicalPricesApiService(ResourcesService) {\n\n    var endpoint = 'psychologicalprices';\n\n    return {\n        getPsychologicalPrices: getPsychologicalPrices,\n        getPsychologicalPrice: ResourcesService.apiFactory.get(endpoint),\n        createPsychologicalPrice: ResourcesService.apiFactory.create(endpoint,'PsychologicalPriceList'),\n        updatePsychologicalPrice: ResourcesService.apiFactory.update(endpoint,'PsychologicalPriceList')\n    };\n\n\n    function getPsychologicalPrices(page, filter, pageSize, companyId) {\n\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        var args = { params: params};\n\n        return ResourcesService.apiFactory.get(endpoint)(args);\n    }\n\n}\n\n\nangular.module('psychologicalprices.api', [])\n  .factory('PsychologicalPricesApiService', PsychologicalPricesApiService);\n","\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.psychologicalprices', {\n        url: '/psychologicalprices',\n        views: {'productList@product': {\n            templateUrl: 'main/product/psychologicalprices/psychologicalprices.tpl.html',\n            controller: 'PsychologicalPricesController as vm'\n        }},\n        resolve: {\n            psychologicalPrices: psychologicalPricesResolver\n        }\n    });\n}\n\n// @ngInject\nfunction psychologicalPricesResolver(PsychologicalPricesApiService) {\n    return PsychologicalPricesApiService.getPsychologicalPrices();\n}\n\n// @ngInject\nfunction PsychologicalPricesController($rootScope, $state, $scope, psychologicalPrices, PsychologicalPricesApiService,loadSpinnerService) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.psychologicalPrices = psychologicalPrices;\n    vm.selectedPsychologicalPriceId = 0;\n    vm.searchTerm = \"\";\n    vm.currentPage = 1;\n    vm.itemsPerPage = null;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.psychologicalPriceId; }, function(newValue, oldValue) {\n            vm.selectedPsychologicalPriceId = parseInt($state.params.psychologicalPriceId, 10);\n        });\n        $rootScope.$on('PsychologicalPrice.Inserted', function(event, response) {\n            loadPsychologicalPrices();\n        });\n        $rootScope.$on('PsychologicalPrice.Changed', function(event, response) {\n            loadPsychologicalPrices();\n        });\n    }\n\n    function loadPsychologicalPrices() {\n        loadSpinnerService.start('mainSpinner');\n        PsychologicalPricesApiService.getPsychologicalPrices(vm.currentPage,vm.searchTerm,vm.itemsPerPage).then(function(response) {\n            vm.psychologicalPrices = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadPsychologicalPrices();\n    }\n\n}\n\nangular\n    .module('product.psychologicalprices', ['psychologicalprices.api','psychologicalprices.psychologicalprice'])\n    .config(stateConfig)\n    .controller('PsychologicalPricesController', PsychologicalPricesController);\n","// @ngInject\nfunction Rms2ProductsApiService($q, $rootScope, DS, DSHttpAdapter, ResourcesService, $cookies, $window) {\n\n    var endpoint = 'colourChange';\n\n    return {\n        getArticleColours: getArticleColours,\n        createColourChange: createColourChange\n    };\n\n    function getArticleColours(articleId) {\n        var deferred = $q.defer();\n\n        var data = {\n            articleId: articleId\n        }\n    \n        DSHttpAdapter.GET(DS.defaults.rms2Path + endpoint + '/' + articleId).then(function (response) {\n            console.log(\"GET Response: \", response);\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n    \n        return deferred.promise;\n    }\n\n    function createColourChange(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.rms2Path + endpoint, request).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular.module('rms2Products.api', [])\n  .factory('Rms2ProductsApiService', Rms2ProductsApiService);","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.saleschannels.new', {\n        url:'/new',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/saleschannels/saleschannel/saleschannel.tpl.html',\n            controller: 'SalesChannelController as vm'\n        }},\n        resolve: {\n            salesChannel: function() { return {}; },\n            isNewSalesChannel: function() { return true; },\n            tenantConfig: tenantConfigResolver,\n            pricelists: pricelistsResolver,\n            countries: countriesResolver\n        }\n    });\n\n    $stateProvider.state('product.saleschannels.saleschannel', {\n        url:'/{salesChannelId}',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/saleschannels/saleschannel/saleschannel.tpl.html',\n            controller: 'SalesChannelController as vm'\n        }},\n        resolve: {\n            salesChannel: salesChannelResolver,\n            isNewSalesChannel: function() { return false; },\n            tenantConfig: tenantConfigResolver,\n            pricelists: pricelistsResolver,\n            countries: countriesResolver\n        }\n    });\n\n}\n\n// @ngInject\nfunction salesChannelResolver($stateParams, SalesChannelsApiService) {\n    return SalesChannelsApiService.getSalesChannel($stateParams.salesChannelId);\n}\n\n// @ngInject\nfunction tenantConfigResolver(SalesChannelsApiService) {\n    return SalesChannelsApiService.getTenantConfig();\n}\n\n// @ngInject\nfunction pricelistsResolver(SalesChannelsApiService) {\n    return SalesChannelsApiService.getPricelists();\n}\n\n// @ngInject\nfunction countriesResolver(SalesChannelsApiService) {\n    return SalesChannelsApiService.getCountries();\n}\n\n\n// @ngInject\nfunction SalesChannelController($state, salesChannel, loadSpinnerService, SalesChannelsApiService, isNewSalesChannel, tenantConfig, pricelists, countries) {\n    var vm = this;\n\n    var salesChannelCopy = {};\n\n    vm.salesChannel = salesChannel;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveSalesChannel = saveSalesChannel;\n\n    vm.isNewSalesChannel = isNewSalesChannel;\n    vm.isEditing = vm.isNewSalesChannel;\n\n    vm.tenantConfig = tenantConfig;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.isSalesChannelCodeValid = isSalesChannelCodeValid;\n    vm.pricelists = pricelists;\n    vm.countries = countries;\n\n    activate();\n\n    function activate() {\n        prepareData();\n\n        if (vm.isNewSalesChannel) {\n            vm.salesChannel = {};\n        }\n    }\n\n    function enableEditing() {\n        salesChannelCopy = angular.copy(vm.salesChannel);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.salesChannel = salesChannelCopy;\n        vm.isEditing = false;\n    }\n\n    function saveSalesChannel() {\n        if (vm.isNewSalesChannel) {\n            saveNewSalesChannel();\n        } else {\n            updateSalesChannel();\n        }\n    }\n\n    function saveNewSalesChannel() {\n        loadSpinnerService.start('mainSpinner');\n        SalesChannelsApiService.createSalesChannel(vm.salesChannel).then(function(response) {\n            vm.SalesChannel = response;\n            prepareData();\n            vm.isNewSalesChannel = false;\n            vm.isEditing = false;\n            $state.go('product.saleschannels.saleschannel', {salesChannelId: response.id});\n        }, function(error) {\n            console.log(error);\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateSalesChannel() {\n        loadSpinnerService.start('mainSpinner');\n        SalesChannelsApiService.updateSalesChannel(vm.salesChannel).then(function(response) {\n            vm.salesChannel = response;\n            prepareData();\n            vm.isEditing = false;\n        }, function(error) {\n            console.log(error);\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function prepareData() {\n        if (vm.salesChannel === undefined) {\n            return;\n        }\n    }\n\n    function isAllInformationValid() {\n        return !vm.isNewSalesChannel ||\n            (isSalesChannelCodeValid());\n    }\n\n    function isSalesChannelCodeValid() {\n        var isSalesChannelCodeAlreadyAssigned = _.find(vm.tenantConfig.assignedSalesChannelCodes, function(code) {\n            return vm.salesChannel.salesChannelCode === code;\n        });\n\n        if (!isSalesChannelCodeAlreadyAssigned) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n}\n\nangular\n    .module('saleschannels.saleschannel', [])\n    .config(stateConfig)\n    .controller('SalesChannelController', SalesChannelController);\n","// @ngInject\nfunction SalesChannelsApiService(ResourcesService) {\n\n    var endpoint = 'saleschannels';\n\n    return {\n        getSalesChannels: getSalesChannels,\n        getSalesChannel: ResourcesService.apiFactory.get(endpoint),\n        createSalesChannel: createSalesChannel,\n        updateSalesChannel: updateSalesChannel,\n        getTenantConfig: ResourcesService.apiFactory.get(endpoint + '/tenantconfig'),\n        getPricelists: ResourcesService.apiFactory.get(endpoint + '/pricelists'),\n        getCountries: ResourcesService.apiFactory.get(endpoint + '/countries')\n    };\n\n    function getSalesChannels(page, filter, pageSize, companyId) {\n\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        var args = { params: params};\n\n        return ResourcesService.apiFactory.get(endpoint)(args);\n    }\n\n    function createSalesChannel(salesChannel) {\n\n        var args = {\n            salesChannel: salesChannel\n        };\n\n        return ResourcesService.apiFactory.create(endpoint,'SalesChannel')(args);\n    }\n\n    function updateSalesChannel(salesChannel) {\n        var args = {\n            salesChannel: salesChannel\n        };\n\n        return ResourcesService.apiFactory.update(endpoint,'SalesChannel')(args);\n    }\n\n}\n\n\nangular.module('saleschannels.api', [])\n  .factory('SalesChannelsApiService', SalesChannelsApiService);\n","\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.saleschannels', {\n        url: '/saleschannels',\n        views: {'productList@product': {\n            templateUrl: 'main/product/saleschannels/saleschannels.tpl.html',\n            controller: 'SalesChannelsController as vm'\n        }},\n        resolve: {\n            salesChannels: salesChannelsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction salesChannelsResolver(SalesChannelsApiService) {\n    return SalesChannelsApiService.getSalesChannels();\n}\n\n// @ngInject\nfunction SalesChannelsController($rootScope, $state, $scope, salesChannels, SalesChannelsApiService,loadSpinnerService) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.salesChannels = salesChannels;\n    vm.selectedSalesChannelId = 0;\n    vm.searchTerm = \"\";\n    vm.currentPage = 1;\n    vm.itemsPerPage = null;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.salesChannelId; }, function(newValue, oldValue) {\n            vm.selectedSalesChannelId = parseInt($state.params.salesChannelId, 10);\n        });\n        $rootScope.$on('SalesChannel.Changed', function(event, response) {\n            loadSalesChannels();\n        });\n    }\n\n    function loadSalesChannels() {\n        loadSpinnerService.start('mainSpinner');\n        SalesChannelsApiService.getSalesChannels(vm.currentPage,vm.searchTerm,vm.itemsPerPage).then(function(response) {\n            vm.salesChannels = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadSalesChannels();\n    }\n\n}\n\nangular\n    .module('product.saleschannels', ['saleschannels.api', 'saleschannels.saleschannel'])\n    .config(stateConfig)\n    .controller('SalesChannelsController', SalesChannelsController);\n","// @ngInject\nfunction SubCategoriesApiService($q, DS, ResourcesService, DSHttpAdapter) {\n\n    var endpoint = 'subcategories';\n\n    return {\n        getPage: getPage,\n        getSubCategory: ResourcesService.apiFactory.get(endpoint),\n        getMaingroups: ResourcesService.apiFactory.get(endpoint + '/maingroups'),\n        getIntrastats: ResourcesService.apiFactory.get(endpoint + '/intrastats'),\n        save:  ResourcesService.apiFactory.save(endpoint, 'SubCategory')\n    };\n\n    function getPage(page, pageSize, searchTerm) {\n\n        var args = {\n                params: {\n                    page: page,\n                    pageSize: pageSize,\n                    searchTerm: searchTerm\n                }\n        };\n\n        return ResourcesService.apiFactory.get(endpoint + '/page')(args);\n    }\n\n}\n\nangular.module('subcategories.api', [])\n  .factory('SubCategoriesApiService', SubCategoriesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.subcategories', {\n        url: '/subcategories?searchTerm',\n        views: {\n            'productList@product': {\n                templateUrl: 'main/product/subcategories/subcategories.tpl.html',\n                controller: 'SubCategoriesController as vm'\n            }\n        },\n        resolve: {\n            subCategories: subCategoriesResolver,\n            searchTerm: searchTermesolver\n        }\n    });\n}\n\n// @ngInject\nfunction subCategoriesResolver(SubCategoriesApiService, $stateParams) {\n    return SubCategoriesApiService.getPage(1, 19, $stateParams.searchTerm);\n}\n\n// @ngInject\nfunction searchTermesolver($stateParams) {\n    return $stateParams.searchTerm;\n}\n\n// @ngInject\nfunction SubCategoriesController($rootScope, $state, subCategories, $scope, SubCategoriesApiService, loadSpinnerService, searchTerm) {\n    var vm = this;\n\n    vm.itemsPerPage = 19;\n    vm.selectedSubCategoryId = 0;\n    vm.subCategories = subCategories.results;\n    vm.searchTerm = (searchTerm) ? searchTerm : '';\n    vm.currentPage = 1;\n    vm.totalRows = subCategories.total;\n\n    vm.searchTermChanged = searchTermChanged;\n    vm.pageChanged = pageChanged;\n\n    function loadSubCategories() {\n        loadSpinnerService.start('mainSpinner');\n        SubCategoriesApiService.getPage(vm.currentPage, vm.itemsPerPage, vm.searchTerm).then(function (response) {\n            vm.subCategories = response.results;\n            vm.totalRows = response.total;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner', { force: true });\n        });\n    }\n\n    function searchTermChanged() {\n        vm.currentPage = 1;\n        loadSubCategories();\n    }\n\n    function pageChanged() {\n        loadSubCategories();\n    }\n}\n\nangular\n    .module('product.subcategories', ['subcategories.api','subcategories.subcategory'])\n    .config(stateConfig)\n    .controller('SubCategoriesController', SubCategoriesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.subcategories.new', {\n        url: '/new',\n        views: {\n            \"productView@product\": {\n                templateUrl: 'main/product/subcategories/subcategory/subcategory.tpl.html',\n                controller: 'SubCategoryController as vm'\n            }\n        },\n        resolve: {\n            subCategory: function () { return {}; },\n            mainGroups: mainGroupsResolver,\n            intrastats: intrastatsResolver,\n            createNew: function () { return true; }\n        }\n    });\n\n    $stateProvider.state('product.subcategories.subcategory', {\n        url: '/{subCategoryId}',\n        views: {\n            \"productView@product\": {\n                templateUrl: 'main/product/subcategories/subcategory/subcategory.tpl.html',\n                controller: 'SubCategoryController as vm'\n            }\n        },\n        resolve: {\n            subCategory: subCategoriesResolver,\n            mainGroups: mainGroupsResolver,\n            intrastats: intrastatsResolver,\n            createNew: function () { return false; }\n        }\n    });\n\n}\n\n\n// @ngInject\nfunction subCategoriesResolver($stateParams, SubCategoriesApiService) {\n    return SubCategoriesApiService.getSubCategory($stateParams.subCategoryId);\n}\n\n// @ngInject\nfunction mainGroupsResolver(SubCategoriesApiService) {\n    return SubCategoriesApiService.getMaingroups();\n}\n\n// @ngInject\nfunction intrastatsResolver(SubCategoriesApiService) {\n    return SubCategoriesApiService.getIntrastats();\n}\n// @ngInject\nfunction SubCategoryController($state, subCategory, mainGroups, intrastats, loadSpinnerService, createNew, SubCategoriesApiService, $scope, $translate, ToasterService) {\n    var vm = this;\n\n    //properties\n    vm.subCategory = subCategory;\n    vm.isNew = false;\n    vm.isEditing = false;\n    vm.mainGroups = mainGroups;\n    vm.intrastats = intrastats;\n    vm.subCategoryCopy = {};\n\n    //functions\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.save = save;\n\n    //initialize\n    if (createNew) {\n        vm.subCategory = { mainGroup: {} };\n        vm.subCategory.mainGroup = angular.copy(vm.mainGroups[0]);\n        vm.isNew = true;\n        vm.isEditing = true;\n\n    }\n\n    function enableEditing() {\n        vm.isEditing = true;\n        vm.subCategoryCopy = angular.copy(vm.subCategory);\n    }\n\n    function cancelEditing() {\n        vm.isEditing = false;\n        vm.subCategory = vm.subCategoryCopy;\n    }\n\n    function save() {\n\n        SubCategoriesApiService.save(vm.subCategory).then(function (result) {\n            vm.subCategory.id = result.id;\n            vm.isEditing = false;\n            vm.isNew = false;\n            ToasterService.showSuccess('\"' + vm.subCategory.subCategoryCode + '\" ' + $translate.instant(\"common.wasSaved\"), $translate.instant(\"article.subcategory\"));\n\n        }, function (error) {\n            ToasterService.showError(error.message, $translate.instant(\"article.subcategory\"));\n        }).finally(function () {\n            $state.go('product.subcategories.subcategory', { subCategoryId: vm.subCategory.id });\n        });\n    }\n}\n\nangular\n    .module('subcategories.subcategory', [])\n    .config(stateConfig)\n    .controller('SubCategoryController', SubCategoryController);\n\n","// @ngInject\nfunction VariantGroupsApiService(ResourcesService) {\n\n    var endpoint = 'variantgroups';\n\n    return {\n        getVariantBriefs: ResourcesService.apiFactory.get(endpoint + '/variantbriefs'),\n        getVariantDetails: ResourcesService.apiFactory.get(endpoint + '/variantdetails'),\n        getVariantGroupBriefs: getVariantGroupBriefs,\n        getVariantGroup: ResourcesService.apiFactory.get(endpoint),\n        saveVariantGroup: ResourcesService.apiFactory.save(endpoint, 'VariantGroup')\n    };\n\n    function getVariantGroupBriefs(page, filter, pageSize) {\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        var args = { params: params };\n\n        return ResourcesService.apiFactory.get(endpoint + '/briefs')(args);\n    }\n}\n\nangular.module('variantgroups.api', [])\n  .factory('VariantGroupsApiService', VariantGroupsApiService);\n\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.variantgroups.new', {\n        url: '/new',\n        views: {\n            \"productView@product\": {\n                templateUrl: 'main/product/variantgroups/variantgroup/variantgroup.tpl.html',\n                controller: 'VariantGroupController as vm'\n            }\n        },\n        resolve: {\n            createNew: function() {\n                return true;\n            },\n            variantGroup: function() {\n                return {\n                    groupName: '',\n                    variantDetails: []\n                };\n            },\n            variants: variantResolver\n        }\n    });\n    $stateProvider.state('product.variantgroups.variantgroup', {\n        url:'/{variantGroupId}',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/variantgroups/variantgroup/variantgroup.tpl.html',\n            controller: 'VariantGroupController as vm'\n        }},\n        resolve: {\n            createNew: function() {\n                return false;\n            },\n            variantGroup: variantGroupResolver,\n            variants: function() { return []; }\n        }\n    });\n}\n\n// @ngInject\nfunction variantGroupResolver($stateParams, VariantGroupsApiService) {\n    return VariantGroupsApiService.getVariantGroup($stateParams.variantGroupId);\n}\n\n// @ngInject\nfunction variantResolver($stateParams, VariantGroupsApiService) {\n    return VariantGroupsApiService.getVariantBriefs();\n}\n\n// @ngInject\nfunction VariantGroupController($state, $scope, createNew, variantGroup, variants, loadSpinnerService, VariantGroupsApiService) {\n    var vm = this;\n\n    //Properties\n    vm.variantGroupCopy = {};\n    vm.variantGroup = variantGroup;\n    vm.isEditing = false;\n    vm.isNew = false;\n    vm.variantDetails = [];\n    vm.variants = variants;\n    vm.selectedVariant = {};\n    vm.orgDetails = [];\n    vm.addedVariantDetails = [];\n\n    //Methods\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveVariantGroup = saveVariantGroup;\n    vm.isAllInformationValid = isAllInformationValid;\n    //vm.moveUpward = moveUpward;\n    //vm.moveDownward = moveDownward;\n    vm.removeVariantDetail = removeVariantDetail;\n    vm.loadVariantDetails = loadVariantDetails;\n\n    if (createNew) {\n        vm.isNew = true;\n        vm.isEditing = true;\n    }\n\n    activate();\n\n    function activate() {\n        loadVariantDetails();\n\n        $scope.$watch(function() { return vm.selectedVariant; }, function(newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadVariantDetails();\n            }\n        });\n    }\n\n    function loadVariantDetails() {\n        var variantId = null;\n        if (vm.isNew) {\n            if (vm.selectedVariant && vm.selectedVariant.id) {\n                variantId = vm.selectedVariant.id;\n            } else {\n                return;\n            }\n        } else {\n            variantId = vm.variantGroup.variant.id;\n        }\n        loadSpinnerService.start('mainSpinner');\n        VariantGroupsApiService.getVariantDetails(variantId).then(function(response) {\n            vm.variantDetails = response;\n            vm.addedVariantDetails = [];\n        }, function(error) {\n            console.log(error);\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    // function moveUpward(variantDetail) {\n    //     var index = vm.variantGroup.variantDetails.indexOf(variantDetail);\n    //     if (index === 0) { return; }\n    //     var prev = vm.variantGroup.variantDetails[index - 1];\n    //     var tempSortOrder = variantDetail.sortOrder;\n    //     variantDetail.sortOrder = prev.sortOrder;\n    //     prev.sortOrder = tempSortOrder;\n    // }\n    // function moveDownward(variantDetail) {\n    //     var index = vm.variantGroup.variantDetails.indexOf(variantDetail);\n    //     if (index === vm.variantGroup.variantDetails.length - 1) { return; }\n    //     var next = vm.variantGroup.variantDetails[index + 1];\n    //     var tempSortOrder = variantDetail.sortOrder;\n    //     variantDetail.sortOrder = next.sortOrder;\n    //     next.sortOrder = tempSortOrder;\n    // }\n\n    function removeVariantDetail(variantDetail) {\n        var index = vm.variantGroup.variantDetails.indexOf(variantDetail);\n\n        vm.variantGroup.variantDetails.splice(index, 1);\n    }\n\n    function enableEditing() {\n        vm.variantGroupCopy = angular.copy(vm.variantGroup);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.variantGroup = vm.variantGroupCopy;\n        vm.isEditing = false;\n        vm.addedVariantDetails = [];\n    }\n\n    function saveVariantGroup() {\n        vm.variantGroup.variantDetails = _.unionWith(vm.variantGroup.variantDetails, vm.addedVariantDetails, _.isEqual);\n\n        if (vm.isNew) {\n            vm.variantGroup.variant = { id: vm.selectedVariant.id };\n        }\n\n        updateVariantGroup();\n    }\n\n    function updateVariantGroup() {\n        loadSpinnerService.start('mainSpinner');\n        VariantGroupsApiService.saveVariantGroup(vm.variantGroup).then(function(response) {\n            vm.variantGroup = response;\n            vm.isEditing = false;\n            vm.isNew = false;\n            vm.addedVariantDetails = [];\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n            if (vm.variantGroup.id) {\n                $state.go('product.variantgroups.variantgroup', { variantGroupId: vm.variantGroup.id });\n            }\n        });\n    }\n\n    function isAllInformationValid() {\n        if (vm.variantGroup.groupName.length === 0) {\n            return false;\n        }\n        if (vm.isNew && vm.addedVariantDetails.length === 0) {\n            return false;\n        }\n        if (!vm.isNew && vm.variantGroup.variantDetails.length === 0) {\n            return false;\n        }\n\n        return true;\n    }\n\n}\n\nangular\n    .module('product.variantgroups.variantgroup', [])\n    .config(stateConfig)\n    .controller('VariantGroupController', VariantGroupController);\n","\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.variantgroups', {\n        url: '/variantgroups',\n        views: {'productList@product': {\n            templateUrl: 'main/product/variantgroups/variantgroups.tpl.html',\n            controller: 'VariantGroupsController as vm'\n        }},\n        resolve: {\n            variantGroups: variantGroupsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction variantGroupsResolver(VariantGroupsApiService) {\n    return VariantGroupsApiService.getVariantGroupBriefs(1, '', 20);\n}\n\n// @ngInject\nfunction VariantGroupsController($rootScope, $state, $scope, variantGroups, VariantGroupsApiService, loadSpinnerService) {\n    var vm = this;\n\n    //Properties\n    vm.currentUser = $rootScope.currentUser;\n    vm.variantGroups = variantGroups.data;\n    vm.totalItems = variantGroups.totalItems;\n    vm.selectedVariantGroupId = 0;\n    vm.searchTerm = '';\n    vm.currentPage = 1;\n    vm.itemsPerPage = 20;\n\n    //Methods\n    vm.searchTermChange = searchTermChange;\n    vm.loadVariantGroups = loadVariantGroups;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.variantGroupId; }, function(newValue, oldValue) {\n            vm.selectedVariantGroupId = parseInt($state.params.variantGroupId, 10);\n        });\n    }\n\n    function loadVariantGroups() {\n        loadSpinnerService.start('mainSpinner');\n        VariantGroupsApiService.getVariantGroupBriefs(vm.currentPage,vm.searchTerm,vm.itemsPerPage).then(function(response) {\n            vm.variantGroups = response.data;\n            vm.totalItems = response.totalItems;\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadVariantGroups();\n    }\n    $rootScope.$on('VariantGroup.Inserted', function(event, response) {\n    });\n    $rootScope.$on('VariantGroup.Updated', function(event, response) {\n    });\n    $rootScope.$on('VariantGroup.Deleted', function(event, response) {\n    });\n    $rootScope.$on('VariantGroup.Changed', function(event, response) {\n        loadVariantGroups();\n    });\n\n}\n\nangular\n    .module('product.variantgroups', ['product.variantgroups.variantgroup'])\n    .config(stateConfig)\n    .controller('VariantGroupsController', VariantGroupsController);\n","// @ngInject\nfunction VariantsApiService(ResourcesService) {\n\n    var endpoint = 'variants';\n\n    return {\n        getVariants: ResourcesService.apiFactory.get(endpoint),\n        getVariant: ResourcesService.apiFactory.get(endpoint),\n        getVariantGroupsByVariantId: ResourcesService.apiFactory.get(endpoint + '/variantgroups'),\n        getVariantDetails: getVariantDetails,\n        getAllVariantDetails: ResourcesService.apiFactory.get(endpoint + '/getallvariantdetails'),\n        updateVariantDetails: ResourcesService.apiFactory.update(endpoint + '/details','VariantDetails')\n    };\n\n    function getVariantDetails(variantId, page, filter, pageSize) {\n        var params = {};\n\n        if (variantId && variantId > 0) {\n            params.variantId = variantId;\n        } else {\n            // return error, we have to have a variantId\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.filter = filter;\n        }\n\n        if (page && page > 1) {\n            params.page = page;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        var args = { params: params };\n\n        console.log('getVariantDetails', args);\n\n        return ResourcesService.apiFactory.get(endpoint + '/details')(args);\n    }\n\n}\n\n\nangular.module('variants.api', [])\n  .factory('VariantsApiService', VariantsApiService);\n\n","var pageSizeDefault = 20;\nvar pageSizeOptions = [10,20,50,100];\n\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.variants.variant', {\n        url:'/{variantId}?currentPage&filter&pageSize',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/variants/variant/variant.tpl.html',\n            controller: 'VariantController as vm'\n        }},\n        resolve: {\n            variant: variantResolver,\n            variantGroups: variantGroupsResolver,\n            variantDetails: variantDetailsResolver,\n            searchTerms: searchTermsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction variantResolver($stateParams, VariantsApiService) {\n    return VariantsApiService.getVariant($stateParams.variantId);\n}\n\n// @ngInject\nfunction variantGroupsResolver($stateParams, VariantsApiService) {\n    return VariantsApiService.getVariantGroupsByVariantId($stateParams.variantId);\n}\n\n// @ngInject\nfunction variantDetailsResolver($stateParams, VariantsApiService) {\n    if (!$stateParams.currentPage || $stateParams.currentPage < 1) { $stateParams.currentPage = 1; }\n    if (!$stateParams.filter) { $stateParams.filter = ''; }\n    if (!$stateParams.pageSize || $stateParams.pageSize < pageSizeDefault) { $stateParams.pageSize = pageSizeDefault; }\n    return VariantsApiService.getVariantDetails($stateParams.variantId, $stateParams.currentPage, $stateParams.filter, $stateParams.pageSize);\n}\n\n// @ngInject\nfunction searchTermsResolver($stateParams) {\n    return {\n        filter: $stateParams.filter,\n        currentPage: $stateParams.currentPage,\n        pageSize: $stateParams.pageSize\n    };\n}\n\n// @ngInject\nfunction VariantController($stateParams, $scope, variant, variantDetails, loadSpinnerService, VariantsApiService, variantGroups, searchTerms) {\n    var vm = this;\n\n    // Properties\n    vm.variantDetails = variantDetails.data.results;\n    vm.filter = '';\n    vm.currentPage = 1;\n    vm.pageSizeOptions = pageSizeOptions;\n    vm.totalItems = variantDetails.data.total;\n    vm.variantGroups = variantGroups;\n    vm.variant = variant;\n\n    // Functions\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveVariant = saveVariant;\n    vm.isEditing = vm.isNewVariant;\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.orgDetails = [];\n    vm.loadVariantDetails = loadVariantDetails;\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        if (searchTerms) {\n            vm.filter = searchTerms.filter ? searchTerms.filter : '';\n            vm.currentPage = searchTerms.currentPage > 1 ? searchTerms.currentPage : 1;\n            vm.pageSize = searchTerms.pageSize >= pageSizeDefault ? searchTerms.pageSize : pageSizeDefault;\n            loadVariantDetails();\n        }\n    }\n\n    function loadVariantDetails() {\n        loadSpinnerService.start('mainSpinner');\n        console.log('loadVariantDetails', vm.currentPage);\n        VariantsApiService.getVariantDetails($stateParams.variantId, vm.currentPage, vm.filter, vm.pageSize).then(function (response) {\n            console.log('response', response.data);\n            vm.variantDetails = response.data.results;\n            vm.currentPage = response.data.page;\n            vm.pageSize = response.data.limit;\n            vm.totalItems = response.data.total;\n\n            $stateParams.filter = vm.filter;\n            $stateParams.currentPage = vm.currentPage;\n            $stateParams.pageSize = vm.pageSize;\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function enableEditing() {\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.isEditing = false;\n    }\n\n    function saveVariant() {\n        updateVariant();\n    }\n\n    function searchTermChange() {\n        if ($stateParams.filter !== vm.filter) {\n            vm.currentPage = 1;\n        }\n        $stateParams.filter = vm.filter;\n        $stateParams.currentPage = vm.currentPage;\n        $stateParams.pageSize = vm.pageSize;\n        loadVariantDetails();\n    }\n\n    function updateVariant() {\n\n        var detailsToUpdate = [];\n\n        _.forEach(vm.variantDetails, function(detail) {\n            if (_.some(vm.orgDetails, {id: detail.id, statisticName: detail.statisticName, sortOrder: detail.sortOrder})) { return;}\n            detailsToUpdate.push(detail);\n        });\n\n        loadSpinnerService.start('mainSpinner');\n        VariantsApiService.updateVariantDetails(detailsToUpdate).then(function(response) {\n            vm.isEditing = false;\n        }, function(error) {\n            console.log(error);\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function isAllInformationValid() {\n        return true;\n    }\n\n}\n\nangular\n    .module('variants.variant', [])\n    .config(stateConfig)\n    .controller('VariantController', VariantController);\n","\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.variants', {\n        url: '/variants',\n        views: {'productList@product': {\n            templateUrl: 'main/product/variants/variants.tpl.html',\n            controller: 'VariantsController as vm'\n        }},\n        resolve: {\n            variants: variantsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction variantsResolver(VariantsApiService) {\n    return VariantsApiService.getVariants();\n}\n\n// @ngInject\nfunction VariantsController($rootScope, $state, $scope, variants, loadSpinnerService) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.variants = variants;\n    vm.selectedVariantId = 0;\n    vm.searchTerm = \"\";\n    vm.currentPage = 1;\n    vm.itemsPerPage = null;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.variantId; }, function(newValue, oldValue) {\n            vm.selectedVariantId = parseInt($state.params.variantId, 10);\n        });\n    }\n\n\n\n}\n\nangular\n    .module('product.variants', ['variants.variant'])\n    .config(stateConfig)\n    .controller('VariantsController', VariantsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.volumediscounts.new', {\n        url:'/new',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/volumediscounts/volumediscount/volumediscount.tpl.html',\n            controller: 'VolumeDiscountController as vm'\n        }},\n        resolve: {\n            volumeDiscount: function() { return {}; },\n            quantityGroups: quantityGroupsResolver,\n            isNewVolumeDiscount: function() { return true; }\n        }\n    });\n\n    $stateProvider.state('product.volumediscounts.volumediscount', {\n        url:'/{volumeDiscountId}',\n        views: {\"productView@product\": {\n            templateUrl: 'main/product/volumediscounts/volumediscount/volumediscount.tpl.html',\n            controller: 'VolumeDiscountController as vm'\n        }},\n        resolve: {\n            volumeDiscount: volumeDiscountResolver,\n            quantityGroups: quantityGroupsResolver,\n            isNewVolumeDiscount: function() { return false; }\n        }\n    });\n}\n\n// @ngInject\nfunction volumeDiscountResolver($stateParams, VolumeDiscountsApiService) {\n    return VolumeDiscountsApiService.getVolumeDiscount($stateParams.volumeDiscountId);\n}\n\n// @ngInject\nfunction quantityGroupsResolver(VolumeDiscountsApiService) {\n    return VolumeDiscountsApiService.getQuantityGroups();\n}\n\n// @ngInject\nfunction VolumeDiscountController($state, volumeDiscount, loadSpinnerService, VolumeDiscountsApiService, isNewVolumeDiscount, quantityGroups) {\n    var vm = this;\n\n    var volumeDiscountCopy = {};\n\n    vm.volumeDiscount = volumeDiscount;\n\n    vm.enableEditing = enableEditing;\n    vm.cancelEditing = cancelEditing;\n    vm.saveVolumeDiscount = saveVolumeDiscount;\n\n    vm.isNewVolumeDiscount = isNewVolumeDiscount;\n    vm.isEditing = vm.isNewVolumeDiscount;\n\n    vm.isAllInformationValid = isAllInformationValid;\n    vm.addLimit = addLimit;\n    vm.removeLimit = removeLimit;\n    vm.clearLimits = clearLimits;\n    vm.quantityGroups = quantityGroups;\n\n    activate();\n\n    function activate() {\n        prepareData();\n\n        if (vm.isNewVolumeDiscount) {\n            vm.volumeDiscount = {limits:[], quantityGroup: {}};\n        }\n        vm.newLimit = getNewRowDefaults();\n    }\n\n    function clearLimits() {\n        vm.volumeDiscount.limits = [];\n        vm.newLimit = getNewRowDefaults();\n    }\n\n    function removeLimit(limit) {\n        _.remove(vm.volumeDiscount.limits, limit);\n    }\n\n    function addLimit(limit) {\n\n        var newLimit = { minimumQuantity: Number(limit.minimumQuantity), discountPercent: Number(limit.discountPercent)};\n\n        vm.volumeDiscount.limits.push(newLimit);\n        vm.newLimit = getNewRowDefaults();\n    }\n\n    function getNewRowDefaults() {\n\n        return {minimumQuantity: 0, discountPercent: 0};\n\n        /*\n        var limits = _.orderBy(vm.volumeDiscount.limits,'minimumQuantity');\n        var minimumQuantity = _.max(_.map(limits,'minimumQuantity'));\n        var discountPercent = _.max(_.map(limits,'discountPercent'));\n\n        // addera skillnaden med det näst sista\n        if (limits.length > 1)  {\n            minimumQuantity += minimumQuantity - limits[limits.length - 2].minimumQuantity;\n            discountPercent += discountPercent - limits[limits.length - 2].discountPercent;\n        }\n        if (limits.length === 1)  {\n            minimumQuantity += minimumQuantity;\n            discountPercent += discountPercent;\n        }\n        return {minimumQuantity: Math.round(minimumQuantity * 100) / 100, discountPercent: Math.round(discountPercent * 100) / 100};\n        */\n    }\n\n    function enableEditing() {\n        volumeDiscountCopy = angular.copy(vm.volumeDiscount);\n        vm.isEditing = true;\n    }\n\n    function cancelEditing() {\n        vm.volumeDiscount = volumeDiscountCopy;\n        vm.isEditing = false;\n    }\n\n    function saveVolumeDiscount() {\n        if (vm.isNewVolumeDiscount) {\n            saveNewVolumeDiscount();\n        } else {\n            updateVolumeDiscount();\n        }\n    }\n\n    function saveNewVolumeDiscount() {\n        loadSpinnerService.start('mainSpinner');\n        VolumeDiscountsApiService.createVolumeDiscount(vm.volumeDiscount).then(function(response) {\n            vm.volumeDiscount = response;\n            prepareData();\n            vm.isNewVolumeDiscount = false;\n            vm.isEditing = false;\n            $state.go('product.volumediscounts.volumediscount', {volumeDiscountId: response.id});\n        }, function(error) {\n            console.log(error);\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function updateVolumeDiscount() {\n        loadSpinnerService.start('mainSpinner');\n        VolumeDiscountsApiService.updateVolumeDiscount(vm.volumeDiscount).then(function(response) {\n            vm.volumeDiscount = response;\n            prepareData();\n            vm.isEditing = false;\n        }, function(error) {\n            console.log(error);\n        }).then(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function prepareData() {\n        if (vm.volumeDiscount === undefined) {\n            return;\n        }\n    }\n\n    function isAllInformationValid() {\n        return !vm.isNewVolumeDiscount ||\n            (isQuantityGroupValid());\n    }\n\n    function isQuantityGroupValid() {\n        if (!vm.volumeDiscount.quantityGroup) {\n            return false;\n        }\n        if (!vm.volumeDiscount.quantityGroup.id) {\n            return false;\n        }\n        return true;\n    }\n\n}\n\nangular\n    .module('volumediscounts.volumediscount', [])\n    .config(stateConfig)\n    .controller('VolumeDiscountController', VolumeDiscountController);\n","// @ngInject\nfunction VolumeDiscountsApiService(ResourcesService) {\n\n    var endpoint = 'volumediscounts';\n\n    return {\n        getVolumeDiscounts: getVolumeDiscounts,\n        getVolumeDiscount: ResourcesService.apiFactory.get(endpoint),\n        createVolumeDiscount: ResourcesService.apiFactory.create(endpoint,'VolumeDiscount'),\n        updateVolumeDiscount: ResourcesService.apiFactory.update(endpoint,'VolumeDiscount'),\n        getQuantityGroups: ResourcesService.apiFactory.get(endpoint + '/quantitygroups')\n    };\n\n\n    function getVolumeDiscounts(page, filter, pageSize, companyId) {\n\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        var args = { params: params};\n\n        return ResourcesService.apiFactory.get(endpoint)(args);\n    }\n\n}\n\n\nangular.module('volumediscounts.api', [])\n  .factory('VolumeDiscountsApiService', VolumeDiscountsApiService);\n","\n// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('product.volumediscounts', {\n        url: '/volumediscounts',\n        views: {'productList@product': {\n            templateUrl: 'main/product/volumediscounts/volumediscounts.tpl.html',\n            controller: 'VolumeDiscountsController as vm'\n        }},\n        resolve: {\n            volumeDiscounts: volumeDiscountsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction volumeDiscountsResolver(VolumeDiscountsApiService) {\n    return VolumeDiscountsApiService.getVolumeDiscounts();\n}\n\n// @ngInject\nfunction VolumeDiscountsController($rootScope, $state, $scope, volumeDiscounts, VolumeDiscountsApiService,loadSpinnerService) {\n    var vm = this;\n\n    vm.currentUser = $rootScope.currentUser;\n\n    vm.volumeDiscounts = volumeDiscounts;\n    vm.selectedVolumeDiscountId = 0;\n    vm.searchTerm = \"\";\n    vm.currentPage = 1;\n    vm.itemsPerPage = null;\n\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.volumeDiscountId; }, function(newValue, oldValue) {\n            vm.selectedVolumeDiscountId = parseInt($state.params.volumeDiscountId, 10);\n        });\n\n        $rootScope.$on('VolumeDiscount.Changed', function(event, response) {\n            loadVolumeDiscounts();\n        });\n    }\n\n    function loadVolumeDiscounts() {\n        loadSpinnerService.start('mainSpinner');\n        VolumeDiscountsApiService.getVolumeDiscounts(vm.currentPage,vm.searchTerm,vm.itemsPerPage).then(function(response) {\n            vm.volumeDiscounts = response;\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n        });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        loadVolumeDiscounts();\n    }\n\n}\n\nangular\n    .module('product.volumediscounts', ['volumediscounts.api','volumediscounts.volumediscount'])\n    .config(stateConfig)\n    .controller('VolumeDiscountsController', VolumeDiscountsController);\n","var module = angular.module('main.resellerorder', []);\n\nmodule.component('readonlyResellerOrderHeader',{\n    templateUrl: 'main/resellerorder/genericcomponents/readonlyorderheader.cmp.tpl.html',\n    bindings: {\n        resellerOrder: '<',\n        initCollapsed: '<'\n    },\n    controllerAs: 'vm',\n    controller: ['$translate', 'updateAddressDialogService', 'ResellerOrdersApiService', 'ToasterService', componentController]\n});\n\n// @ngInject\nfunction componentController($translate, updateAddressDialogService, ResellerOrdersApiService, ToasterService) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n\n    //Properties\n    vm.collapseHeader = vm.initCollapsed ? vm.initCollapsed : true;\n\n    //Methods\n    vm.formatAddress = formatAddress;\n    vm.formatCityAndCountry = formatCityAndCountry;\n    vm.isTheSameAddresses = isTheSameAddresses;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.isTheSameAddresses = isTheSameAddresses;\n    vm.canSetOrderDeliveryAddress = canSetOrderDeliveryAddress;\n    vm.setOrderDeliveryAddress = setOrderDeliveryAddress;\n    vm.canSetOrderInvoiceAddress = canSetOrderInvoiceAddress;\n    vm.setOrderInvoiceAddress = setOrderInvoiceAddress;\n\n    function onInit() {\n    }\n    function onChanges() {\n        console.log('ResellerOrderHeader, resellerOrder', vm.resellerOrder);\n    }\n\n    function canSetOrderDeliveryAddress() {\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'confirm'; }) !== undefined;\n        return hasLink;\n    }\n    function setOrderDeliveryAddress() {\n        var requestAddress = {\n            addressLine1: vm.resellerOrder.deliveryAddress.addressLine1,\n            addressLine2: vm.resellerOrder.deliveryAddress.addressLine2,\n            addressLine3: vm.resellerOrder.deliveryAddress.addressLine3,\n            city: vm.resellerOrder.deliveryAddress.city,\n            country: vm.resellerOrder.deliveryAddress.country,\n            postalCode: vm.resellerOrder.deliveryAddress.zipCode\n        };\n        updateAddressDialogService.showDialog($translate.instant('resellerorder.deliveryadress'), requestAddress).then(function (result) {\n            if (result.isCompleted === true) {\n                var request = {\n                    orderId: vm.resellerOrder.id,\n                    address: {\n                        addressLine1: result.address.addressLine1,\n                        addressLine2: result.address.addressLine2,\n                        addressLine3: result.address.addressLine3,\n                        city: result.address.city,\n                        country: result.address.country,\n                        postalCode: result.address.postalCode\n                    }\n                };\n                ResellerOrdersApiService.setOrderDeliveryAddress(request).then(function(response) {\n                    vm.resellerOrder.deliveryAddress.addressLine1 = request.address.addressLine1;\n                    vm.resellerOrder.deliveryAddress.addressLine2 = request.address.addressLine2;\n                    vm.resellerOrder.deliveryAddress.addressLine3 = request.address.addressLine3;\n                    vm.resellerOrder.deliveryAddress.city = request.address.city;\n                    vm.resellerOrder.deliveryAddress.country = request.address.country;\n                    vm.resellerOrder.deliveryAddress.zipCode = request.address.postalCode;\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, error.message);\n                }).finally(function() {\n                });\n            }\n        });\n    }\n    function canSetOrderInvoiceAddress() {\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'confirm'; }) !== undefined;\n        return hasLink;\n    }\n    function setOrderInvoiceAddress() {\n        var requestAddress = {\n            addressLine1: vm.resellerOrder.invoiceAddress.addressLine1,\n            addressLine2: vm.resellerOrder.invoiceAddress.addressLine2,\n            addressLine3: vm.resellerOrder.invoiceAddress.addressLine3,\n            city: vm.resellerOrder.invoiceAddress.city,\n            country: vm.resellerOrder.invoiceAddress.country,\n            postalCode: vm.resellerOrder.invoiceAddress.zipCode\n        };\n        updateAddressDialogService.showDialog($translate.instant('resellerorder.invoiceaddress'), requestAddress).then(function (result) {\n            if (result.isCompleted === true) {\n                var request = {\n                    orderId: vm.resellerOrder.id,\n                    address: {\n                        addressLine1: result.address.addressLine1,\n                        addressLine2: result.address.addressLine2,\n                        addressLine3: result.address.addressLine3,\n                        city: result.address.city,\n                        country: result.address.country,\n                        postalCode: result.address.postalCode\n                    }\n                };\n                ResellerOrdersApiService.setOrderInvoiceAddress(request).then(function(response) {\n                    vm.resellerOrder.invoiceAddress.addressLine1 = request.address.addressLine1;\n                    vm.resellerOrder.invoiceAddress.addressLine2 = request.address.addressLine2;\n                    vm.resellerOrder.invoiceAddress.addressLine3 = request.address.addressLine3;\n                    vm.resellerOrder.invoiceAddress.city = request.address.city;\n                    vm.resellerOrder.invoiceAddress.country = request.address.country;\n                    vm.resellerOrder.invoiceAddress.zipCode = request.address.postalCode;\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, error.message);\n                }).finally(function() {\n                });\n            }\n        });\n    }\n\n    function getStatusTranslation(text) {\n        if (text) {\n            var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n            return $translate.instant('resellerorder.status' + textCapital);\n        }\n    }\n\n    function formatAddress(address) {\n        if (!address) {\n            return \"\";\n        }\n        var strings = [];\n        var result = \"\";\n        if (address.addressLine1) {\n            strings.push(address.addressLine1);\n        }\n        if (address.addressLine2) {\n            strings.push(address.addressLine2);\n        }\n        if (address.addressLine3) {\n            strings.push(address.addressLine3);\n        }\n        result = strings.join(', ');\n        return result;\n    }\n\n    function formatCityAndCountry(address) {\n        if (!address) {\n            return \"\";\n        }\n        var strings = [];\n        var result = \"\";\n        if (address.postalCode) {\n            strings.push(address.postalCode);\n        }\n        if (address.city) {\n            strings.push(address.city);\n        }\n        if (address.country) {\n            strings.push(address.country);\n        }\n        result = strings.join(', ');\n        return result;\n    }\n\n    function isTheSameAddresses(address1, address2) {\n        return address1.addressLine1 === address2.addressLine1 &&\n               address1.addressLine2 === address2.addressLine2 &&\n               address1.addressLine3 === address2.addressLine3 &&\n               address1.postalCode === address2.postalCode &&\n               address1.city === address2.city &&\n               address1.postalCode === address2.postalCode;\n    }\n}\n","var module = angular.module('main.resellerorder');\n\nmodule.component('resellerorderBreadcrumbs',{\n    templateUrl: 'main/resellerorder/genericcomponents/resellerorderbreadcrumbs.cmp.tpl.html',\n    bindings: {\n        currentPage: '<'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($state, $translate) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n\n    //Properties\n\n    //Methods\n    vm.transitionToState = transitionToState;\n\n    function onInit() {\n    }\n    function onChanges() {\n    }\n\n    function transitionToState(state) {\n        $state.go(state);\n    }\n}\n","var module = angular.module('main.resellerorder');\n\nmodule.component('caResellerOrderSearch',{\n    templateUrl: 'main/resellerorder/genericcomponents/resellerordersearch.cmp.tpl.html',\n    bindings: {\n        searchTerm: '<',\n        onResellerOrderSelected: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($scope, $state, $stateParams, $translate, ResellerOrdersApiService, confirmationDialogService,\n    printLanguageConfirmationDialogService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    //Properties\n    vm.resellerOrders = [];\n    vm.resellerOrderPrintList = [];\n    vm.resellerOrderSaleList = [];\n    vm.searchTerm = {};\n    vm.searchTerm.orderStatuses = [];\n    vm.searchTerm.locations = [];\n    vm.searchTerm.selectedFromLocation = {};\n    vm.currentPage = 1;\n    vm.totalItems = 0;\n    vm.itemsPerPage = 15;\n    vm.returnFilter = false;\n    vm.isFilterOrderForInvoice = false;\n\n\n    vm.filterCreated = true;\n    vm.filterOpen = true;\n    vm.filterClosed = true;\n    vm.filterOrder = true;\n    vm.filterReturnOrder = true;\n    vm.filterAll = true;\n\n    vm.isProcessing = false;\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.loadResellerOrders = loadResellerOrders;\n    vm.loadResellerReturnOrders = loadResellerReturnOrders;\n    vm.loadAllResellerOrders = loadAllResellerOrders;\n    vm.searchTermChange = searchTermChange;\n    vm.filterAllOrders = filterAllOrders;\n    vm.getOrderTypeTranslation = getOrderTypeTranslation;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.selectOrder = selectOrder;\n    vm.createNewOrder = createNewOrder;\n    vm.createNewReturnOrder = createNewReturnOrder;\n    vm.containsStatus = containsStatus;\n    vm.printAllResellerOrders = printAllResellerOrders;\n    vm.printAllSelectedResellerOrders = printAllSelectedResellerOrders;\n    vm.printSelectedResellerOrder = printSelectedResellerOrder;\n    vm.checkToPrintList = checkToPrintList;\n    vm.checkToSaleList = checkToSaleList;\n    vm.checkAllToPrintList = checkAllToPrintList;\n    vm.checkAllToSaleList = checkAllToSaleList;\n    vm.getOrderType = getOrderType;\n    vm.getAllCheckedToPrintList = getAllCheckedToPrintList;\n    vm.getAllCheckedToSaleList = getAllCheckedToSaleList;\n    vm.generateSales = generateSales;\n    vm.deleteResellerOrder = deleteResellerOrder;\n    vm.disableDeleteOrder = disableDeleteOrder;\n    vm.disablePrintOrder = disablePrintOrder;\n    vm.createReturnOrderFromOrder = createReturnOrderFromOrder;\n    vm.disableMakeReturnOrder = disableMakeReturnOrder;\n    vm.readyForSale = readyForSale;\n\n    activate();\n\n\n    function onInit() {\n        vm.searchTerm.term = ($stateParams.searchTerm) ? $stateParams.searchTerm : '';\n        \n        //filterAllOrders();\n\n        $scope.$watch(function() { return vm.currentPage; }, function() { vm.filterAllOrders(); });\n    }\n    function onChanges() {\n    }\n\n    function deleteResellerOrder(order){\n        var deleteLink = order.links.find((l) => l.rel === 'delete');\n        if(!deleteLink) return;\n        confirmationDialogService.showDialog($translate.instant(\"support.confirmDeleteData\")).then(function (deleteConfirmed) {\n            if (deleteConfirmed === true) {\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.deleteResellerOrder(deleteLink.href).then(function () {\n                }, function (error) {\n                    console.log(error);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                    searchTermChange();\n                });\n            }\n        });\n    }\n\n    function activate() {\n        loadLocations();\n        /*\n        $scope.$watch(function () {\n            return vm.searchTerm.term;\n        }, function (oldValue, newValue) {\n            if (oldValue !== newValue) {\n                filterAllOrders();\n            }\n        });*/\n    }\n\n    function disableDeleteOrder(order) {\n        const hasDeleteLink = _.find(order.links, function(o) { return o.rel === 'delete'; }) !== undefined;\n        return hasDeleteLink ? false : true;\n    }\n\n    function disablePrintOrder(order) {\n        const hasPrintLink = _.find(order.links, function(o) { return o.rel === 'canPrintPdf'; }) !== undefined;\n        return hasPrintLink ? false : true;\n    }\n\n    function disableMakeReturnOrder(order) {\n        const hasPrintLink = _.find(order.links, function(o) { return o.rel === 'CanMakeResellerOrderReturnOrder'; }) !== undefined;\n        return hasPrintLink ? false : true;\n    }\n\n    function createReturnOrderFromOrder(order){\n        confirmationDialogService.showDialog($translate.instant(\"resellerorder.confirmCreateResellerOrderBasedOnOrder\")).then(function (create) {\n            if (create === true) {\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.createResellerReturnOrderBasedOnOrder(order).then(function (response) {\n                    var orderId = response.data.id;\n                    $state.go('resellerorder.resellerreturnordermodify', { orderId: orderId});\n                }, function (error) {\n                    console.log(error);\n                    ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                }).then(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function readyForSale(){\n        vm.isFilterOrderForInvoice = !vm.isFilterOrderForInvoice;\n        searchTermChange();\n    }\n\n    function generateSales() {\n        ToasterService.showInfo($translate.instant('resellerorder.generatingSales'));\n        vm.isProcessing = true;\n        ResellerOrdersApiService.createSalesOnClosedFulfillmentLineItems(vm.resellerOrderSaleList).then(function() {\n            ToasterService.showSuccess($translate.instant('resellerorder.generateSalesSuccess'));\n        }, function(error) {\n            ToasterService.showError($translate.instant('resellerorder.generateSalesFailure'));\n        }).finally(function() {\n            vm.isFilterOrderForInvoice = false;\n            vm.isProcessing = false;\n            searchTermChange();\n\n        });\n    }\n\n    function getAllCheckedToPrintList(){\n        if($scope.checkeverything){\n            return vm.totalItems;\n        }\n        \n        return vm.resellerOrderPrintList.length;\n    }\n\n    function getAllCheckedToSaleList(){\n        if($scope.checkeverything){\n            return vm.totalItems;\n        }\n        return vm.resellerOrderSaleList.length;\n    }\n\n    function checkAllToPrintList(checked){\n        vm.resellerOrderPrintList = [];\n        if(checked){\n            _.forEach(vm.resellerOrders, function(resellerOrder){\n                vm.resellerOrderPrintList.push(resellerOrder.id);\n            });\n        }\n    }\n\n    function checkAllToSaleList(checked){\n        vm.resellerOrderSaleList = [];\n        if(checked){\n            _.forEach(vm.resellerOrders, function(resellerOrder){\n                vm.resellerOrderSaleList.push(resellerOrder.id);\n            });\n        }\n    }\n\n    function checkToPrintList(orderId){\n        var matchingIndex = _.findIndex(vm.resellerOrderPrintList, function(printId){\n            return orderId == printId\n        });\n\n        if(matchingIndex >= 0)\n            vm.resellerOrderPrintList.splice(matchingIndex, 1);\n        else\n            vm.resellerOrderPrintList.push(orderId);\n        \n        if(vm.resellerOrderPrintList.length === 0){\n            $scope.checkall = false;\n            $scope.checkeverything = false;\n        }\n    }\n\n    function checkToSaleList(orderId){\n        var matchingIndex = _.findIndex(vm.resellerOrderSaleList, function(printId){\n            return orderId == printId\n        });\n\n        if(matchingIndex >= 0)\n            vm.resellerOrderSaleList.splice(matchingIndex, 1);\n        else\n            vm.resellerOrderSaleList.push(orderId);\n        \n        if(vm.resellerOrderSaleList.length === 0){\n            $scope.checkall = false;\n            $scope.checkeverything = false;\n        }\n    }\n\n    function printAllSelectedResellerOrders(){\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) \n            {\n                loadSpinnerService.start('mainSpinner');\n    \n                \n                if($scope.checkeverything){\n                    var request = { \n                        filterReturnOrder: vm.filterReturnOrder,\n                        filterOrder: vm.filterOrder,\n                        locale: result.locale,\n                        filter: vm.searchTerm.term,\n                        orderStatuses: vm.searchTerm.orderStatuses\n                    };\n                    \n                    ResellerOrdersApiService.getAllSearchedResellerOrderZip(request).then(function (response) {\n                    }, function (error) {\n                        ToasterService.showError(error.message);\n                    }).finally(function () {\n                        vm.resellerOrderPrintList = [];\n                        $scope.checkall = false;\n                        $scope.checkeverything = false;\n                        ToasterService.showSuccess($translate.instant('common.done'));\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n                else{\n                    var request = { \n                        resellerOrderIds : vm.resellerOrderPrintList,\n                        locale: result.locale\n                    };\n\n                    ResellerOrdersApiService.getSelectedResellerOrderZip(request).then(function (response) {\n                    }, function (error) {\n                        ToasterService.showError(error.message);\n                    }).finally(function () {\n                        vm.resellerOrderPrintList = [];\n                        $scope.checkall = false;\n                        ToasterService.showSuccess($translate.instant('common.done'));\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n                }\n                //ResellerOrdersApiService.getSelectedResellerOrderPdf(request).then(function (response) {\n                //}, function (error) {\n                //    ToasterService.showError(error.message);\n                //}).finally(function () {\n                //    vm.resellerOrderPrintList = [];\n                //    $scope.checkall = false;\n                //    ToasterService.showSuccess($translate.instant('common.done'));\n                //    loadSpinnerService.stop('mainSpinner');\n                //});\n            }   \n            \n        });\n    }\n\n    function printSelectedResellerOrder(orderId){\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) \n            {\n                loadSpinnerService.start('mainSpinner');\n                var request = { \n                    resellerOrderIds : [orderId],\n                    locale: result.locale\n                };\n\n                ResellerOrdersApiService.getSelectedResellerOrderZip(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    vm.resellerOrderPrintList = [];\n                    $scope.checkall = false;\n                    ToasterService.showSuccess($translate.instant('common.done'));\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }           \n        });\n    }\n\n    function printAllResellerOrders() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                var request = {\n                    orderStatus: vm.searchTerm.orderStatuses.length > 0 ? vm.searchTerm.orderStatuses[0] : '',\n                    locale: result.locale\n                };\n\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getAllResellerOrdersPdf(request).then(function (response) {\n                }, function (error) {\n                    console.log(error);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function getOrderType(type){\n        if(type.indexOf('Return') !== -1)\n            return $translate.instant('resellerorder.resellerreturnordershort');\n        else\n            return $translate.instant('resellerorder.resellerordershort');\n    }\n\n    function containsStatus(status) {\n        if (vm.searchTerm.orderStatuses.length === 0 && !vm.returnFilter) {\n            return true;\n        }\n        if (_.find(vm.searchTerm.orderStatuses, function(o) { return o === status; })) {\n            return true;\n        }\n    }\n\n    function createNewOrder() {\n        $state.go('resellerorder.resellerordercreate');\n    }\n\n    function createNewReturnOrder() {\n        $state.go('resellerorder.resellerreturnordercreate');\n    }\n\n    function loadResellerOrders() {\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.getResellerOrders(vm.currentPage, vm.searchTerm.term, vm.itemsPerPage, vm.searchTerm.orderStatuses, vm.isFilterOrderForInvoice).then(function (response) {\n            vm.resellerOrders = response.data.data.results;\n            vm.totalItems = response.data.data.total;\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function loadResellerReturnOrders() {\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.getResellerReturnOrders(vm.currentPage, vm.searchTerm.term, vm.itemsPerPage, vm.searchTerm.orderStatuses).then(function (response) {\n            vm.resellerOrders = response.data.data.results;\n            vm.totalItems = response.data.data.total;\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function loadAllResellerOrders() {\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.getAllResellerOrders(vm.currentPage, vm.searchTerm.term, vm.itemsPerPage, vm.searchTerm.orderStatuses).then(function (response){\n            vm.resellerOrders = response.data.data.results;\n            vm.totalItems = response.data.data.total;\n        }).finally(function(){\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function loadLocations() {\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.getStores().then(function (response) {\n            vm.locations = response.stores;\n            var newEmptyLocation = {\n                id: -1,\n                locationName: $translate.instant('common.allLocations')\n            };\n            vm.locations.unshift(newEmptyLocation);\n            vm.searchTerm.selectedFromLocation = vm.locations[0];\n\n            $scope.$watch(function () {\n                return vm.searchTerm.selectedFromLocation ? vm.searchTerm.selectedFromLocation.id : undefined;\n            }, function(oldValue, newValue) {\n                if (oldValue !== newValue || newValue === -1) {\n                    filterAllOrders();\n                }\n            });\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function searchTermChange() {    \n        if((!vm.filterClosed && !vm.filterCreated && !vm.filterOpen) || (!vm.filterReturnOrder && !vm.filterOrder)){\n            vm.resellerOrders = [];\n            vm.totalItems = 0;\n            vm.resellerOrderPrintList = [];\n            $scope.checkall = false;\n            $scope.checkeverything = false;\n        }        \n        else if((vm.filterOrder && !vm.filterReturnOrder) || vm.isFilterOrderForInvoice)\n            loadResellerOrders();\n        else if(vm.filterReturnOrder && !vm.filterOrder)\n            loadResellerReturnOrders();\n        else\n            loadAllResellerOrders();\n    }\n\n    function selectOrder(order) {\n        \n            var state = _.find(order.links, function(o) { return o.rel === \"state\"; });\n            switch(state.href) {\n                case \"modify\": \n                if(order.orderType === 'ResellerReturnOrder'){\n                    $state.go('resellerorder.resellerreturnordermodify', { orderId: order.id });\n                } \n                else {\n                    $state.go('resellerorder.resellerordermodify', { orderId: order.id });\n                } break;\n                default:\n                case \"fulfill\":\n                case \"view\": $state.go('resellerorder.resellerorderview', { orderId: order.id }); break;\n        }\n    }    \n\n    function filterAllOrders(isCheckBoxAll){\n        var statuses = [];\n        if(isCheckBoxAll){\n            if(vm.filterAll){\n                vm.filterCreated = vm.filterOpen = vm.filterClosed = vm.filterReturnOrder = vm.filterOrder = true;\n            }\n            else{\n                vm.filterCreated = vm.filterOpen = vm.filterClosed = vm.filterReturnOrder = vm.filterOrder = false;\n            }\n        }\n        else if(vm.filterClosed && vm.filterCreated && vm.filterOpen && vm.filterReturnOrder && vm.filterOrder)\n            vm.filterAll = true;\n        else \n            vm.filterAll = false;\n\n        if(vm.filterCreated)\n            statuses.push('Created');\n        if(vm.filterOpen)\n            statuses.push('Open');\n        if(vm.filterClosed)\n            statuses.push('Closed');\n\n        vm.resellerOrderPrintList = [];\n        if(!$scope.checkeverything)\n        {\n            $scope.checkall = false;\n        }\n        else{\n            checkAllToPrintList(true);\n        }\n        \n        vm.searchTerm.orderStatuses = statuses;\n        searchTermChange();\n    }\n\n    function getStatusTranslation(text) {\n        if (text) {\n            var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n            return $translate.instant('resellerorder.status' + textCapital);\n        }\n    }\n\n    function getOrderTypeTranslation(text) {\n        if (text) {\n            var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n            return $translate.instant('resellerorder.type' + textCapital);\n        }\n    }\n}\n","var module = angular.module('main.resellerorder');\n\nmodule.component('resellerReturnorderBreadcrumbs',{\n    templateUrl: 'main/resellerorder/genericcomponents/resellerreturnorderbreadcrumbs.cmp.tpl.html',\n    bindings: {\n        currentPage: '<'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($state, $translate) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n\n    //Properties\n\n    //Methods\n    vm.transitionToState = transitionToState;\n\n    function onInit() {\n    }\n    function onChanges() {\n    }\n\n    function transitionToState(state) {\n        $state.go(state);\n    }\n}\n","var module = angular.module('main.resellerorder');\r\n\r\nmodule.component('caResellerOrderScannerNavigation',{\r\n    templateUrl: 'main/resellerorder/genericcomponents/scannernavigation.cmp.tpl.html',\r\n    bindings: {\r\n        initCollapsed: '<',\r\n        initFocused: '<',\r\n        navigateToStateName: '<'\r\n    },\r\n    controllerAs: 'vm',\r\n    controller: ['$translate', '$state', 'ToasterService', 'ResellerOrdersApiService', 'loadSpinnerService', componentController]\r\n});\r\n\r\nfunction componentController($translate, $state, ToasterService, ResellerOrdersApiService, loadSpinnerService) {\r\n    var vm = this;\r\n\r\n    vm.$onInit = onInit;\r\n    vm.$onChanges = onChanges;\r\n    vm.submitScannerInput = submitScannerInput;\r\n\r\n    vm.scannerInput = \"\";\r\n\r\n    vm.collapseHeader = vm.initCollapsed ? vm.initCollapsed : true;\r\n\r\n    function onInit() {\r\n        if (vm.initFocused) {\r\n            angular.element(\"#resellerOrderScannerNavigationField\").focus();\r\n        }\r\n\r\n        $(\"#resellerOrderScannerNavigationField\").keydown(function(e) {\r\n            var enterKeyCode = 13;\r\n            if (e !== undefined && e.keyCode === enterKeyCode) {\r\n                submitScannerInput();\r\n            }\r\n        });\r\n    }\r\n\r\n    function onChanges(changes) {\r\n\r\n    }\r\n\r\n    function submitScannerInput() {\r\n        console.log(\"Scanned the following: \", vm.scannerInput);\r\n        var orderNumber = vm.scannerInput.split(':')[0];\r\n        var productNumber = vm.scannerInput.split(':')[1];\r\n\r\n        var stateName = vm.navigateToStateName;\r\n\r\n        loadSpinnerService.start('mainSpinner');\r\n        ResellerOrdersApiService.getResellerOrderByOrderNumber(orderNumber).then(function(response) {\r\n            var orderId = response.id;\r\n            $state.go(stateName, {\r\n                orderId: orderId,\r\n                productNumber: productNumber,\r\n                usingScannerNavigation: true\r\n            });\r\n        }, function(error) {\r\n            ToasterService.showError(error);\r\n        }).finally(function() {\r\n            loadSpinnerService.stop('mainSpinner', { force: true });\r\n        });\r\n\r\n\r\n    }\r\n}","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder', {\n        url: '/resellerorder',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/resellerorder/resellerorder.tpl.html',\n        controller: 'MainResellerOrderController as vm'\n    });\n}\n\n// @ngInject\nfunction MainResellerOrderController() {\n    //var vm = this;\n}\n\nangular\n    .module('main.resellerorder', [\n        'resellerorder.api',\n        'resellerorder.resellerordersearch',\n        'resellerorder.resellerordercreate',\n        'resellerorder.resellerreturnordercreate',\n        'resellerorder.resellerreturnordermodify',\n        'resellerorder.resellerordermodify',\n        'resellerorder.createfulfillment',\n        'resellerorder.manageorders',\n        'resellerorder.manageproducts',\n        'resellerorder.resellerorderview'\n    ])\n    .config(stateConfig)\n    .controller('MainResellerOrderController', MainResellerOrderController);\n","var module = angular.module('main.resellerorder');\n\nmodule.component('createResellerOrderHeader',{\n    templateUrl: 'main/resellerorder/resellerordercreate/components/createorderheader.cmp.tpl.html',\n    bindings: {\n        resellerOrder: '='\n    },\n    controllerAs: 'vm',\n    controller: ['$window','$scope','ResellerOrdersApiService','ToasterService',componentController]\n});\n\n// @ngInject\nfunction componentController($window, $scope, ResellerOrdersApiService, ToasterService) {\n    var vm = this;\n\n    //Properties\n    vm.stores = [];\n    vm.resellers = [];\n    vm.warehouses = [];\n    vm.collections = [];\n    vm.selectedReseller = {};\n    vm.selectedSaleLocation = {};\n    vm.selectedWarehouse = {};\n    vm.selectedCollection= {};\n\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function () { return vm.selectedReseller.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                vm.resellerOrder.resellerId = newValue;\n            }\n        });\n        $scope.$watch(function () { return vm.selectedSaleLocation.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                vm.resellerOrder.saleLocationId = newValue;\n                saveLastUsedSaleLocationId(newValue);\n            }\n        });\n        $scope.$watch(function () { return vm.selectedWarehouse.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                vm.resellerOrder.warehouseId = newValue;\n                saveLastUsedWarehouseId(newValue);\n            }\n        });\n        $scope.$watch(function () { return vm.selectedCollection.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                vm.resellerOrder.collectionId = newValue;\n                saveLastUsedCollectionId(newValue);\n            }\n        });\n    }\n\n    function onInit() {\n        ResellerOrdersApiService.getWarehouses().then(function(response) {\n            vm.warehouses = response.warehouses;\n            var lastUsedWarehouseId = getLastUsedWarehouseId();\n            vm.selectedWarehouse = _.find(vm.warehouses, function(o) { return o.id === lastUsedWarehouseId; });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        ResellerOrdersApiService.getStores().then(function(response) {\n            vm.stores = response.stores;\n            var lastUsedSaleLocationId = getLastUsedSaleLocationId();\n            vm.selectedSaleLocation = _.find(vm.stores, function(o) { return o.id === lastUsedSaleLocationId; });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        ResellerOrdersApiService.getResellers().then(function(response) {\n            vm.resellers = response.resellers;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        ResellerOrdersApiService.getOrderCollections().then(function(response) {\n            vm.collections = response;\n            var lastUsedCollectionId = getLastUsedCollectionId();\n            vm.selectedCollection = _.find(vm.collections, function(o) { return o.id === lastUsedCollectionId; });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n    }\n    function onChanges() {\n    }\n\n    function getLastUsedSaleLocationId() {\n        if ($window.localStorage.createorderheader_lastUsedSaleLocationId) {\n            var lastUsedSaleLocationId = parseInt($window.localStorage.getItem('createorderheader_lastUsedSaleLocationId'));\n            if (isNaN(lastUsedSaleLocationId)) { return undefined; }\n            return lastUsedSaleLocationId;\n        }\n        return undefined;\n    }\n    function getLastUsedWarehouseId() {\n        if ($window.localStorage.createorderheader_lastUsedWarehouseId) {\n            var lastUsedWarehouseId = parseInt($window.localStorage.getItem('createorderheader_lastUsedWarehouseId'));\n            if (isNaN(lastUsedWarehouseId)) { return undefined; }\n            return lastUsedWarehouseId;\n        }\n        return undefined;\n    }\n    function getLastUsedCollectionId() {\n        if ($window.localStorage.createorderheader_lastUsedCollectionId) {\n            var lastUsedCollectionId = parseInt($window.localStorage.getItem('createorderheader_lastUsedCollectionId'));\n            if (isNaN(lastUsedCollectionId)) { return undefined; }\n            return lastUsedCollectionId;\n        }\n        return undefined;\n    }\n    function saveLastUsedSaleLocationId(id) {\n        $window.localStorage.setItem('createorderheader_lastUsedSaleLocationId', id);\n    }\n    function saveLastUsedCollectionId(id) {\n        $window.localStorage.setItem('createorderheader_lastUsedCollectionId', id);\n    }\n    function saveLastUsedWarehouseId(id) {\n        $window.localStorage.setItem('createorderheader_lastUsedWarehouseId', id);\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.resellerordercreate', {\n        url: '/new/',\n        templateUrl: 'main/resellerorder/resellerordercreate/resellerordercreate.tpl.html',\n        controller: 'ResellerOrderCreateController as vm',\n        resolve: {\n            resellerOrder: function() {\n                return {\n                    links: [],\n                    order: {\n                        externalOrderNumber: '',\n                        id: 0,\n                        // lineItems: [],\n                        resellerId: 0,\n                        saleLocationId: 0,\n                        status: 'Created',\n                        warehouseId: 0,\n                        collectionId: 0\n                    }\n                };\n            }\n        },\n        params: {\n        }\n    });\n}\n\n// @ngInject\nfunction ResellerOrderCreateController($rootScope, $state, $translate, resellerOrder, ResellerOrdersApiService, confirmationDialogService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    //Properties\n    vm.resellerOrder = resellerOrder.order;\n    vm.resellerOrder.links = resellerOrder.links;\n    vm.links = resellerOrder.links;\n    vm.canAccess = $rootScope.canAccess;\n\n    //Public methods\n    vm.canCreateOrderHeader = canCreateOrderHeader;\n    vm.createOrderHeader = createOrderHeader;\n    vm.createNewReturnOrder = createNewReturnOrder;\n\n    activate();\n\n    function activate() {\n    }\n\n    function createNewReturnOrder() {\n        $state.go('resellerorder.resellerreturnordercreate');\n    }\n\n    function canCreateOrderHeader() {\n        var hasSetReseller = vm.resellerOrder.resellerId > 0;\n        var hasSetSaleLocation = vm.resellerOrder.saleLocationId > 0;\n        var hasSetWarehouse = vm.resellerOrder.warehouseId > 0;\n        var hasSetCollection = vm.resellerOrder.collectionId > 0;\n\n\n        return hasSetReseller && hasSetSaleLocation && hasSetWarehouse && hasSetCollection;\n    }\n\n    function createOrderHeader() {\n        //call backend, save order\n        console.log(\"order\",vm.resellerOrder);\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.create(vm.resellerOrder).then(function (response) {\n            var orderId = response.data.id;\n            $state.go('resellerorder.resellerordermodify', { orderId: orderId });\n        }, function (error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n}\n\nangular\n    .module('resellerorder.resellerordercreate', [])\n    .config(stateConfig)\n    .controller('ResellerOrderCreateController', ResellerOrderCreateController);\n","var module = angular.module('main.resellerorder');\n\nmodule.component('createResellerorderDeliveryDateVariants', {\n    templateUrl: 'main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createDeliveryDate.cmp.tpl.html',\n    bindings: {\n        selectedProduct: '<',\n        selectedWarehouse: '<',\n        minimumAvailableStock: '<',\n        onAppliedFulfillment: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController  \n});\n\n// @ngInject\nfunction componentController($scope, $state, $window, $translate, ResellerOrdersApiService, loadSpinnerService, confirmationDialogService, ToasterService) {\n    var vm = this;\n    var date = moment().format('L');\n\n    //Properties\n    vm.deliveryDate = new Date();\n    vm.allDeliveryDate = new Date();\n    vm.IsChecked = false;\n    vm.lineItems = [];\n    vm.displayItems = [];\n    \n    //Methods \n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.applyDeliveryDate = applyDeliveryDate;\n    vm.goToOrder = goToOrder;\n    vm.quantity = getQuantity;\n\n    function onInit() {\n        activate();  \n        $scope.$watch(function() { return vm.selectedProduct.variants; }, function(variants) {\n        vm.lineItems = getLineItems();\n        vm.displayItems = displayLineItems();\n\n        }); \n    }\n\n    function onChanges() {\n    }\n\n    function getLineItems(){\n        var lineItems = [];\n        var newItem = {};\n        var date = moment();\n        _.forEach(vm.selectedProduct.variants, function (ordVar) {\n            _.forEach(ordVar.lineItems, function (li) {\n                if(vm.IsChecked === true){\n                    date = moment(vm.allDeliveryDate).format('L');\n                    newItem = {\n                        articleId: vm.selectedProduct.articleId,\n                        variantDetail1Id: vm.selectedProduct.variantDetail1Id,\n                        orderId:ordVar.orderId,\n                        lineItemId: li.lineItemId,\n                        orderNumber: ordVar.orderNumber,\n                        resellerName: ordVar.resellerName,\n                        resellerPriority: ordVar.resellerPriority,\n                        deliveryDate: date,\n                        quantity: li.quantity,  \n                        tenantName: vm.selectedProduct.tenantName      \n                    };\n                }\n                else {\n                    date = moment(li.deliveryDate).format('L');\n                    newItem = {\n                        articleId: vm.selectedProduct.articleId,\n                        variantDetail1Id: vm.selectedProduct.variantDetail1Id,\n                        orderId:ordVar.orderId,\n                        lineItemId: li.lineItemId,\n                        orderNumber: ordVar.orderNumber,\n                        resellerName: ordVar.resellerName,\n                        resellerPriority: ordVar.resellerPriority,\n                        deliveryDate: li.plannedDeliverydate,\n                        quantity: li.quantity,  \n                        tenantName: vm.selectedProduct.tenantName       \n                    };\n                }\n                lineItems.push(newItem);\n               \n            });\n        });\n        return lineItems;\n    }\n\n    function displayLineItems(){\n        var displayItem = {};\n        var displayItems = [];\n        var result = [];\n        var orderNum = '';\n        \n        _.forEach(vm.lineItems, function(item){\n            displayItem = {\n                articleId: item.articleId,\n                variantDetail1Id: item.variantDetail1Id,\n                orderId:item.orderId,\n                lineItemId:item.lineItemId,\n                orderNumber: item.orderNumber,\n                resellerName: item.resellerName,\n                resellerPriority: item.resellerPriority,\n                deliveryDate: item.deliveryDate,\n                quantity: item.quantity,  \n                tenantName: item.tenantName       \n            };\n            displayItems.push(displayItem);\n        });\n        displayItems = totalQuantityPerOrder(displayItems);\n        _.forEach(displayItems, function(di){\n\n            if(di.orderNumber + '' !== orderNum){\n                result.push(di);\n                orderNum = di.orderNumber; \n            }\n        });\n        return result;\n    }\n    function totalQuantityPerOrder(displayItemList){\n        _.forEach(displayItemList, function(di){\n            \n            di.quantity = totalQuantityFunc(displayItemList,di.orderNumber);\n            \n        });\n        return displayItemList;\n    }\n    function totalQuantityFunc(displayItemList,orderNumber){\n        var totalQuantity = 0;\n        _.forEach(displayItemList, function(di){\n            if(di.orderNumber === orderNumber){\n                totalQuantity += di.quantity; \n            }          \n        });\n        return totalQuantity;\n    }\n\n    function getQuantity(variant){\n        _.forEach(variant.lineItems, function (li) {\n            var newItem = {             \n                quantity: li.quantity,\n            };\n        });\n    }\n\n    function goToOrder(orderId) {\n        var url = $state.href('resellerorder.resellerorderview', {orderId: orderId});\n        $window.open(url,'_blank');\n    }\n\n    function activate() {\n        loadFulfillableOrders();\n    }\n\n    function applyDeliveryDate() {\n        var newItem = {};\n        var date = moment();\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmApplyDeliveryDate'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                var itemsDeliveryDate = { ItemIdsAndDates: [] };\n                _.forEach(vm.displayItems, function (di) {                   \n                    if(vm.IsChecked === true){\n                        date = moment(vm.allDeliveryDate).format('L');\n                        newItem = {\n                            articleId: di.articleId, \n                            variantDetail1Id: di.variantDetail1Id,\n                            orderId: di.orderId,\n                            lineItemId:di.lineItemId,\n                            deliveryDate: date \n                        };\n                    }\n                    else {\n                        date = moment(di.deliveryDate).format('L');\n                        newItem = {\n                            articleId: di.articleId, \n                            variantDetail1Id: di.variantDetail1Id,\n                            orderId: di.orderId,\n                            lineItemId:di.lineItemId,\n                            deliveryDate:date    \n                        };\n                    }\n                    itemsDeliveryDate.ItemIdsAndDates.push(newItem);\n                });\n\n                ResellerOrdersApiService.setVariantFufillmentDeliveryDate(itemsDeliveryDate).then(function(response) {\n                    vm.onAppliedFulfillment();\n                }, function(error) {\n                    ToasterService.showError(error.message);\n                });\n            }\n        });\n    }\n\n    function loadFulfillableOrders() {\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.getFulfillableOrders(vm.selectedWarehouse.id, vm.minimumAvailableStock, vm.selectedProduct.articleId, vm.selectedProduct.variantDetail1Id).then(function (response) {\n            vm.selectedProduct.variants = response.data.orderVariants;\n            vm.selectedProduct.variantNames = [];\n\n            _.sortBy(vm.selectedProduct.variants, 'orderNumber');\n            _.forEach(vm.selectedProduct.variants, function (ordVar) {\n                ordVar.sumFulfillableQuantity = 0;\n                ordVar.sumQuantity = 0;\n                ordVar.keepRemainder = true;\n\n                _.sortBy(ordVar.lineItems, 'variant2SortOrder');\n                _.forEach(ordVar.lineItems, function (li) {\n                    if (!vm.selectedProduct.variantNames) { vm.selectedProduct.variantNames = []; }\n                    if (vm.selectedProduct.variantNames.indexOf(li.variant2DetailName) === -1) {\n                        vm.selectedProduct.variantNames.push(li.variant2DetailName);\n                    }\n                    ordVar.sumFulfillableQuantity += li.fulfillableQuantity;\n                    ordVar.sumQuantity += li.quantity;\n                });\n            });\n        }, function (error) {\n            console.log(error);\n        }).then(function () {\n            loadSpinnerService.stop('mainSpinner', { force: true });\n        });\n    }\n\n}\n","// @ngInject\nfunction CreateVariantDeliveryDateDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(fulfillableProduct, selectedWarehouse, minimumAvailableStock) {\n\n        var modalDefaults = {\n            backdrop: 'static', //true, false, static\n            keyboard: true,\n            controller: 'CreateVariantDeliveryDateDialogServiceController as vm',\n            templateUrl:'main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createVariantDeliveryDateDialog.tpl.html',\n            size: 'super'\n        };\n\n        modalDefaults.resolve = {\n            fulfillableProduct: function() {\n                return fulfillableProduct;\n            },\n            selectedWarehouse: function() {\n                return selectedWarehouse;\n            },\n            minimumAvailableStock: function() {\n                return minimumAvailableStock;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction CreateVariantDeliveryDateDialogServiceController($uibModalInstance, fulfillableProduct, selectedWarehouse, minimumAvailableStock) {\n    var vm = this;\n\n    //Properties\n    vm.fulfillableProduct = fulfillableProduct;\n    vm.selectedWarehouse = selectedWarehouse;\n    vm.minimumAvailableStock = minimumAvailableStock;\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.fulfillmentApplied = fulfillmentApplied;\n\n    function closeModal(args) {\n        $uibModalInstance.close(args);\n    }\n\n    function fulfillmentApplied(itemsToFulfill) {\n        vm.closeModal({ success: true, itemsToFulfill: itemsToFulfill });\n    }\n}\n\nangular\n    .module('services.dialogs.createVariantDeliveryDateDialogService', [])\n    .service('CreateVariantDeliveryDateDialogService', CreateVariantDeliveryDateDialogService)\n    .controller('CreateVariantDeliveryDateDialogServiceController', CreateVariantDeliveryDateDialogServiceController);\n","// @ngInject\nfunction CreateVariantFulfillmentDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(fulfillableProduct, selectedWarehouse, minimumAvailableStock) {\n\n        var modalDefaults = {\n            backdrop: 'static', //true, false, static\n            keyboard: true,\n            controller: 'CreateVariantFulfillmentDialogServiceController as vm',\n            templateUrl: 'main/resellerorder/resellerorderfulfillment/createfulfillment/components/createVariantFulfillmentDialog.tpl.html',\n            size: 'super'\n        };\n\n        modalDefaults.resolve = {\n            fulfillableProduct: function() {\n                return fulfillableProduct;\n            },\n            selectedWarehouse: function() {\n                return selectedWarehouse;\n            },\n            minimumAvailableStock: function() {\n                return minimumAvailableStock;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction CreateVariantFulfillmentDialogServiceController($uibModalInstance, fulfillableProduct, selectedWarehouse, minimumAvailableStock) {\n    var vm = this;\n\n    //Properties\n    vm.fulfillableProduct = fulfillableProduct;\n    vm.selectedWarehouse = selectedWarehouse;\n    vm.minimumAvailableStock = minimumAvailableStock;\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.fulfillmentApplied = fulfillmentApplied;\n\n    function closeModal(args) {\n        $uibModalInstance.close(args);\n    }\n\n    function fulfillmentApplied(itemsToFulfill) {\n        vm.closeModal({ success: true, itemsToFulfill: itemsToFulfill });\n    }\n}\n\nangular\n    .module('services.dialogs.createVariantFulfillmentDialogService', [])\n    .service('CreateVariantFulfillmentDialogService', CreateVariantFulfillmentDialogService)\n    .controller('CreateVariantFulfillmentDialogServiceController', CreateVariantFulfillmentDialogServiceController);\n","var module = angular.module('main.resellerorder');\n\nmodule.component('createResellerorderFulfillmentVariants', {\n    templateUrl: 'main/resellerorder/resellerorderfulfillment/createfulfillment/components/createfulfillmentvariants.cmp.tpl.html',\n    bindings: {\n        selectedProduct: '<',\n        selectedWarehouse: '<',\n        minimumAvailableStock: '<',\n        onAppliedFulfillment: '&'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($scope, $state, $window, $translate, ResellerOrdersApiService, loadSpinnerService, confirmationDialogService) {\n    var vm = this;\n\n    //Properties\n    vm.allKeepRemainder = true;\n    var canNotConfirmFulfillmentBecauseOfTooLowStockQuantities = '';\n    var canNotConfirmFulfillmentBecauseOfZeroQuantities = '';\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.getFulfillableQuantitySum = getFulfillableQuantitySum;\n    vm.getQuantitySum = getQuantitySum;\n    vm.getDifference = getDifference;\n    vm.getStockQuantity = getStockQuantity;\n    vm.clearRowQuantities = clearRowQuantities;\n    vm.resetRowQuantities = resetRowQuantities;\n    vm.canResetRowQuantities = canResetRowQuantities;\n    vm.clearAllRowQuantities = clearAllRowQuantities;\n    vm.resetAllRowQuantities = resetAllRowQuantities;\n    vm.canResetAllRowQuantities = canResetAllRowQuantities;\n    vm.formatDifference = formatDifference;\n    vm.canApplyFulfillment = canApplyFulfillment;\n    vm.applyFulfillment = applyFulfillment;\n    vm.getApplyFulfillmentTooltipText = getApplyFulfillmentTooltipText;\n    vm.preventInputLessThanZero = preventInputLessThanZero;\n    vm.goToOrder = goToOrder;\n\n    activate();\n\n    function onInit() {\n        \n    }\n    function onChanges() {\n       \n    }\n\n    function goToOrder(orderId) {\n        var url = $state.href('resellerorder.resellerorderview', {orderId: orderId});\n        $window.open(url,'_blank');\n    }\n\n    function activate() {\n        loadFulfillableOrders();\n        var result = _.sortBy(vm.selectedProduct.variantList, function(variant) { return variant.variant2SortOrder; });\n        console.log(result);\n        $scope.$watch(function () { return vm.allKeepRemainder; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                _.forEach(vm.selectedProduct.variants, function (ordVar) {\n                    ordVar.keepRemainder = vm.allKeepRemainder;\n                });\n            }\n        });\n        canNotConfirmFulfillmentBecauseOfTooLowStockQuantities = $translate.instant('resellerorder.canNotConfirmFulfillmentBecauseOfTooLowStockQuantities');\n        canNotConfirmFulfillmentBecauseOfZeroQuantities = $translate.instant('resellerorder.canNotConfirmFulfillmentBecauseOfZeroQuantities');\n    }\n\n    function getApplyFulfillmentTooltipText() {\n        if (!vm.selectedProduct || !vm.selectedProduct.variants || vm.selectedProduct.variants.length === 0) { return false; }\n\n        if (hasPositiveDiff() === false) {\n            return canNotConfirmFulfillmentBecauseOfTooLowStockQuantities;\n        }\n        if (hasPositiveTotal() === false) {\n            return canNotConfirmFulfillmentBecauseOfZeroQuantities;\n        }\n        return '';\n    }\n    function canApplyFulfillment() {\n        if (!vm.selectedProduct || !vm.selectedProduct.variants || vm.selectedProduct.variants.length === 0) { return false; }\n\n        var fulfillHasPositiveDiff = true;\n        var nonFakeArtVarId = [];\n\n\n        // Finds all variantId's in all lineitems that aren't fake. And adds the correct {VariandId, Quantity} to nonFakeArtVarId array.\n        _.forEach(vm.selectedProduct.variants, function(variant){  \n            _.forEach(variant.lineItems, function(lineItem){\n                if(!lineItem.isFake){\n                    var canBeAddedToArray = !_.find(nonFakeArtVarId, function(artVarId) { return artVarId.variantId === lineItem.articleVariantId})\n                    if(canBeAddedToArray)\n                        nonFakeArtVarId.push({variantId : lineItem.articleVariantId , quantity : lineItem.quantity});\n                    else{ // Increase the quantity\n                        _.find(nonFakeArtVarId, function(artVarId) { \n                            if(artVarId.variantId === lineItem.articleVariantId) {\n                                artVarId.quantity += lineItem.quantity;\n                            }\n                        });\n                    }\n                }\n            });\n        });\n\n        // Checks if there are any negative diffs after fulfillment\n        _.forEach(vm.selectedProduct.variantList, function(varL){\n            if(fulfillHasPositiveDiff){\n                _.find(nonFakeArtVarId, function(artVarId) \n                { \n                    if(artVarId.variantId === varL.id){\n                        if(varL.stockQuantity - artVarId.quantity < 0)\n                            fulfillHasPositiveDiff = false;\n                        if(artVarId.quantity === 0)\n                            fulfillHasPositiveDiff = true;\n\n                    } \n                });\n            }\n        });\n\n        return fulfillHasPositiveDiff;\n    }\n    function hasPositiveDiff() {\n        var canApplyFulfillment = true;\n\n        _.forEach(vm.selectedProduct.variantNames, function (variantName) {\n            var diff = getDifference(variantName);\n            if (diff < 0) {\n                canApplyFulfillment = false;\n            }\n        });\n\n        return canApplyFulfillment;\n    }\n    function hasPositiveTotal() {\n        var totalDiff = 0;\n        _.forEach(vm.selectedProduct.variantNames, function (variantName) {\n            totalDiff += getQuantitySum(variantName);\n        });\n\n        return totalDiff > 0;\n    }\n    function applyFulfillment() {\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmApplyFulfillment'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                var itemsToFulfill = [];\n\n                _.forEach(vm.selectedProduct.variants, function (ordVar) {\n                    _.forEach(ordVar.lineItems, function (li) {\n                        if (!li.isFake) {\n                            var newItem = {\n                                orderId: li.orderId,\n                                lineItemId: li.lineItemId,\n                                articleVariantId: li.articleVariantId,\n                                quantity: li.quantity,\n                                closeOrderLine: !ordVar.keepRemainder\n                            };\n                            itemsToFulfill.push(newItem);\n                        }\n                    });\n                });\n\n                vm.onAppliedFulfillment({ itemsToFulfill: itemsToFulfill });\n            }\n        });\n    }\n\n    function getStockQuantity(variantName) {\n        if (!variantName || variantName === '') { return 0; }\n\n        var stockQuantity = 0;\n        try {\n            _.forEach(vm.selectedProduct.variantList, function (variant) {\n                if(variantName === variant.variant2DetailName){\n                    stockQuantity = variant.stockQuantity;\n                }\n            });\n        } catch (error) {\n            console.log(error);\n        }\n\n        return stockQuantity;\n    }\n\n    function clearRowQuantities(variant) {\n        _.forEach(variant.lineItems, function (li) {\n            li.quantity = 0;\n        });\n    }\n\n    function resetRowQuantities(variant) {\n        _.forEach(variant.lineItems, function (li) {\n            li.quantity = li.fulfillableQuantity;\n        });\n    }\n\n    function canResetRowQuantities(variant) {\n        var canResetRowQuantities = false;\n        _.forEach(variant.lineItems, function (li) {\n            if (li.quantity !== li.fulfillableQuantity) {\n                canResetRowQuantities = true;\n            }\n        });\n\n        return canResetRowQuantities;\n    }\n\n    function clearAllRowQuantities() {\n        _.forEach(vm.selectedProduct.variants, function (ordVar) {\n            _.forEach(ordVar.lineItems, function (li) {\n                li.quantity = 0;\n            });\n        });\n    }\n\n    function resetAllRowQuantities() {\n        _.forEach(vm.selectedProduct.variants, function (ordVar) {\n            _.forEach(ordVar.lineItems, function (li) {\n                li.quantity = li.fulfillableQuantity;\n            });\n        });\n    }\n\n    function canResetAllRowQuantities() {\n        var canResetAllRowQuantities = false;\n        _.forEach(vm.selectedProduct.variants, function (ordVar) {\n            _.forEach(ordVar.lineItems, function (li) {\n                if (li.quantity !== li.fulfillableQuantity) {\n                    canResetAllRowQuantities = true;\n                }\n            });\n        });\n\n        return canResetAllRowQuantities;\n    }\n\n    function populateVariantList () {\n        var lineItem = {}; \n        _.forEach(vm.selectedProduct.variants, function (variant) {\n            _.forEach(vm.selectedProduct.variantList, function(v){\n\n                    var resultLineItem = _.find(variant.lineItems, function(lineitem){ \n                        return lineitem.variant2DetailName == v.variant2DetailName;\n                    });\n\n                    if(resultLineItem != undefined){\n                        // lineItem = {\n                        //     id : v.id,\n                        //     tenantName : vm.selectedProduct.tenantName,\n                        //     orderId : variant.orderId,\n                        //     orderNumber: resultLineItem.orderNumber,\n                        //     resellerName : variant.resellerName,\n                        //     resellerPriority : variant.resellerPriority, \n                        //     variant1DetailName : resultLineItem.variant1DetailName,\n                        //     variant2DetailName : resultLineItem.variant2DetailName,\n                        //     variant2SortOrder : resultLineItem.variant2SortOrder,\n                        //     fulfillableQuantity : resultLineItem.fulfillableQuantity, \n                        //     stockQuantity : resultLineItem.stockQuantity, \n                        //     quantity : resultLineItem.quantity,\n                        //     keepRemainder : variant.keepRemainder\n                        // }\n                  \n                    }\n                    else {\n                        lineItem = {\n                            isFake: true,\n                            id : v.id,              \n                            tenantName : vm.selectedProduct.tenantName,\n                            variant1DetailName : v.variant1DetailName,\n                            variant2DetailName : v.variant2DetailName,\n                            variant2SortOrder : v.variant2SortOrder,\n                            fulfillableQuantity : 0, \n                            stockQuantity : 0, \n                            quantity : 0,\n                            keepRemainder : false\n                    }\n                    variant.lineItems.push(lineItem);\n                }\n            });            \n                   \n        }); \n    }\n\n\n\n    function loadFulfillableOrders() {\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.getFulfillableOrders(vm.selectedWarehouse.id, vm.minimumAvailableStock, vm.selectedProduct.articleId, vm.selectedProduct.variantDetail1Id).then(function (response) {\n            vm.selectedProduct.variants = response.data.orderVariants;\n            vm.selectedProduct.variantList = response.data.variants;\n            vm.selectedProduct.variantNames = [];\n            populateVariantList();\n            var result = _.sortBy(vm.selectedProduct.variantList, function(variant) { return variant.variant2SortOrder; });\n            vm.selectedProduct.variantList = result;\n            console.log(result);\n            _.sortBy(vm.selectedProduct.variants, 'orderNumber');\n            _.forEach(vm.selectedProduct.variants, function (ordVar) {\n                ordVar.sumFulfillableQuantity = 0;\n                ordVar.sumQuantity = 0;\n                ordVar.keepRemainder = true;\n\n                var sortedLineItems = _.sortBy(ordVar.lineItems, 'variant2SortOrder');\n                ordVar.lineItems = sortedLineItems;\n                \n                _.forEach(ordVar.lineItems, function (li) {\n                    if (!vm.selectedProduct.variantNames) { vm.selectedProduct.variantNames = []; }\n                    if (vm.selectedProduct.variantNames.indexOf(li.variant2DetailName) === -1) {\n                        vm.selectedProduct.variantNames.push(li.variant2DetailName);\n                    }\n                    ordVar.sumFulfillableQuantity += li.fulfillableQuantity;\n                    ordVar.sumQuantity += li.quantity;\n                });\n                console.log(ordVar.lineItems);\n            });\n        }, function (error) {\n            console.log(error);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner', { force: true });\n        });\n    }\n\n    function getFulfillableQuantitySum(variantName) {\n        if (!variantName || variantName === '') { return 0; }\n\n        var sum = 0;\n        try {\n            _.forEach(vm.selectedProduct.variants, function (artVar) {\n                _.forEach(artVar.lineItems, function (li) {\n                    if (li.variant2DetailName === variantName) {\n                        sum += li.fulfillableQuantity;\n                    }\n                });\n            });\n        } catch (error) {\n            console.log(error);\n        }\n\n        return sum;\n    }\n    function getQuantitySum(variantName) {\n        if (!variantName || variantName === '') { return 0; }\n\n        var sum = 0;\n        try {\n            _.forEach(vm.selectedProduct.variants, function (artVar) {\n                _.forEach(artVar.lineItems, function (li) {\n                    if (li.variant2DetailName === variantName) {\n                        sum += li.quantity;\n                    }\n                });\n            });\n        } catch (error) {\n            console.log(error);\n        }\n\n        return sum;\n    }\n    function getDifference(variantName) {\n        var diff = getStockQuantity(variantName) - getQuantitySum(variantName);\n        return diff;\n    }\n\n    function preventInputLessThanZero(lineItem) {\n        if (lineItem.quantity < 0) {\n            lineItem.quantity = 0;\n        }\n    }\n\n    function formatDifference(diff) {\n        if (diff >= 0) {\n            return '' + Math.abs(diff);\n        } else {\n            return '-' + Math.abs(diff);\n        }\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.createfulfillment', {\n        url: '/fulfill/create',\n        templateUrl: 'main/resellerorder/resellerorderfulfillment/createfulfillment/createfulfillment.tpl.html',\n        controller: 'ResellerOrderFulfillmentProductsController as vm',\n        resolve: {\n        },\n        params: {\n        }\n    });\n}\n\n// @ngInject\nfunction ResellerOrderFulfillmentProductsController($rootScope, $scope, $window, $translate, $state, ResellerOrdersApiService, loadSpinnerService, ToasterService, CreateVariantFulfillmentDialogService,CreateVariantDeliveryDateDialogService) {\n    var vm = this;\n\n    //Properties\n    vm.canAccess = $rootScope.canAccess;\n    vm.selectedWarehouse = {};\n    vm.fulfillableProducts = [];\n    vm.filteredFulfillableProducts = [];\n    vm.minimumAvailableStock = 0;\n    vm.fulfillableProductsFilter = '';\n    vm.pageSizes = [\n        { id: 0, val: 5 },\n        { id: 1, val: 10 },\n        { id: 2, val: 20 },\n        { id: 3, val: 50 },\n        { id: 4, val: 100 },\n        { id: 5, val: 200 }\n    ];\n    vm.selectedPageSize = vm.pageSizes[4];\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.onSelectProduct = onSelectProduct;\n    vm.goToProduct = goToProduct;\n    vm.showCreateVariantFulfillmentPopup = showCreateVariantFulfillmentPopup;\n    vm.showCreateVariantDeliveryDatePopup = showCreateVariantDeliveryDatePopup;\n    vm.filterFulfillableProducts = filterFulfillableProducts;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function () { return vm.selectedWarehouse.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadFulfillableProducts();\n                saveLastUsedWarehouseId(newValue);\n            }\n        });\n        $scope.$watch(function () { return vm.minimumAvailableStock; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadFulfillableProducts();\n                saveLastMinimumAvailableStock(newValue);\n            }\n        });\n        $scope.$watch(function () { return vm.selectedPageSize.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadFulfillableProducts();\n            }\n        });\n    }\n\n    function onInit() {\n        ResellerOrdersApiService.getWarehouses().then(function (response) {\n            vm.warehouses = response.warehouses;\n            var lastUsedWarehouseId = getLastUsedWarehouseId();\n            vm.selectedWarehouse = _.find(vm.warehouses, function (o) { return o.id === lastUsedWarehouseId; });\n            var lastMinimumAvailableStock = getLastMinimumAvailableStock();\n            vm.minimumAvailableStock = lastMinimumAvailableStock;\n        }, function (error) {\n            ToasterService.showError(error.message);\n        });\n    }\n    function onChanges() {\n    }\n\n    function filterFulfillableProducts() {\n        console.log('fulfillableProductsFilter: \"' + vm.fulfillableProductsFilter + '\"');\n\n        if (vm.fulfillableProductsFilter.trim().length > 0) {\n            var searchTerm = vm.fulfillableProductsFilter.trim().toLowerCase();\n            vm.filteredFulfillableProducts = _.filter(vm.fulfillableProducts, function(o) {\n                return o.displayArticleNumber.toLowerCase().indexOf(searchTerm) > -1 ||\n                        o.supplier.toLowerCase().indexOf(searchTerm) > -1 ||\n                        o.variantDetail1Name.toLowerCase().indexOf(searchTerm) > -1 ||\n                        o.articleName.toLowerCase().indexOf(searchTerm) > -1;\n            });\n        } else {\n            vm.filteredFulfillableProducts = vm.fulfillableProducts;\n        }\n    }\n\n    function showCreateVariantDeliveryDatePopup(fulfillableProduct){\n        CreateVariantDeliveryDateDialogService.showDialog(fulfillableProduct, vm.selectedWarehouse, vm.minimumAvailableStock).then(function (result){\n            // if (result && result.success === true) {\n            //     console.log(result.itemsToFulfill);\n\n            //     var request = {\n            //         itemsToFulfill: result.itemsToFulfill\n            //     };\n            //     loadSpinnerService.start('mainSpinner');\n            //     ResellerOrdersApiService.applyFulfillResellerOrders(request).then(function (response) {\n            //         loadFulfillableProducts();\n            //     }, function (error) {\n            //         ToasterService.showError(error, $translate.instant('common.error'));\n            //     }).then(function () {\n            //         loadSpinnerService.stop('mainSpinner', { force: true });\n            //     });\n            // }\n        });\n    }\n\n    function showCreateVariantFulfillmentPopup(fulfillableProduct) {\n        CreateVariantFulfillmentDialogService.showDialog(fulfillableProduct, vm.selectedWarehouse, vm.minimumAvailableStock).then(function (result) {\n            if (result && result.success === true) {\n                console.log(result.itemsToFulfill);\n\n                var request = {\n                    itemsToFulfill: result.itemsToFulfill\n                };\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.applyFulfillResellerOrders(request).then(function (response) {\n                    loadFulfillableProducts();\n                }, function (error) {\n                    ToasterService.showError(error, $translate.instant('common.error'));\n                }).then(function () {\n                    loadSpinnerService.stop('mainSpinner', { force: true });\n                });\n            }\n        });\n    }\n\n    function goToProduct(articleId) {\n        var url = $state.href('product.articles.article', {articleId: articleId});\n        $window.open(url,'_blank');\n    }\n\n    function getLastUsedWarehouseId() {\n        if ($window.localStorage.resellerorderfulfill_lastUsedWarehouseId) {\n            var lastUsedWarehouseId = parseInt($window.localStorage.getItem('resellerorderfulfill_lastUsedWarehouseId'));\n            if (isNaN(lastUsedWarehouseId)) { return undefined; }\n            return lastUsedWarehouseId;\n        }\n        return undefined;\n    }\n    function saveLastUsedWarehouseId(id) {\n        $window.localStorage.setItem('resellerorderfulfill_lastUsedWarehouseId', id);\n    }\n    function getLastMinimumAvailableStock() {\n        if ($window.localStorage.resellerorderfulfill_lastMinimumAvailableStock) {\n            var lastMinimumAvailableStock = parseInt($window.localStorage.getItem('resellerorderfulfill_lastMinimumAvailableStock'));\n            if (isNaN(lastMinimumAvailableStock)) { return undefined; }\n            return lastMinimumAvailableStock;\n        }\n        return undefined;\n    }\n    function saveLastMinimumAvailableStock(value) {\n        $window.localStorage.setItem('resellerorderfulfill_lastMinimumAvailableStock', value);\n    }\n\n    function loadFulfillableProducts() {\n        if (vm.selectedWarehouse && vm.selectedWarehouse.id > 0) {\n            loadSpinnerService.start('mainSpinner');\n            var request = {\n                warehouseId: vm.selectedWarehouse.id,\n                minimumAvailableStock: vm.minimumAvailableStock,\n                pageSize: vm.selectedPageSize.val\n            };\n            ResellerOrdersApiService.getFulfillableProducts(request).then(function (response) {\n                vm.fulfillableProducts = response.data.products;\n                vm.filteredFulfillableProducts = response.data.products;\n\n                //Sort on productnumber, color\n                _.sortBy(vm.fulfillableProducts, ['articleNumber', 'variantDetail1Name']);\n                _.sortBy(vm.filteredFulfillableProducts, ['articleNumber', 'variantDetail1Name']);\n\n                filterFulfillableProducts();\n            }, function (error) {\n                console.log(error);\n            }).then(function () {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function onSelectProduct(product) {\n        if (!product || !product.articleId || product.articleId <= 0) { return; }\n    }\n}\n\nangular\n    .module('resellerorder.createfulfillment', [])\n    .config(stateConfig)\n    .controller('ResellerOrderFulfillmentProductsController', ResellerOrderFulfillmentProductsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.manageorders', {\n        url: '/fulfill/manage/orders',\n        templateUrl: 'main/resellerorder/resellerorderfulfillment/manageorders/manageorders.tpl.html',\n        controller: 'ResellerOrderManageOrdersController as vm',\n        resolve: {},\n        params: {\n            orderId: undefined,\n            productNumber: undefined,\n            usingScannerNavigation: false\n        }\n    });\n}\n\n// @ngInject\nfunction ResellerOrderManageOrdersController($rootScope, $state, $translate, $scope, $window, $stateParams, ResellerOrdersApiService, loadSpinnerService, ToasterService, printLanguageConfirmationDialogService) {\n    var vm = this;\n\n    //Properties\n    vm.canAccess = $rootScope.canAccess;\n    vm.selectedFulfilledOrdersWarehouse = {};\n    vm.fulfilledOrders = [];\n    vm.filteredFulfilledOrders = [];\n    vm.fulfilledOrdersFilter = '';\n    vm.pageSizes = [\n        { id: 0, val: 5 },\n        { id: 1, val: 10 },\n        { id: 2, val: 20 },\n        { id: 3, val: 50 },\n        { id: 4, val: 100 },\n        { id: 5, val: 200 }\n    ];\n    vm.selectedPageSize = vm.pageSizes[4];\n    vm.openCheck = true;\n    vm.closedCheck = true;\n    vm.filterPickPrinted = false;\n    vm.filterDeliveryPrinted = false;\n    vm.monthDates = [\n        { id: 0, val: 1 },\n        { id: 1, val: 3 },\n        { id: 2, val: 6 },\n        { id: 3, val: 9 },\n        { id: 4, val: 12 },\n        { id: 5, val: 18 }\n    ];\n    vm.selectedDateMonth = vm.monthDates[1];\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.onSelectProduct = onSelectProduct;\n    vm.toggleExpandAll = toggleExpandAll;\n    vm.printResellerOrder = printResellerOrder;\n    vm.printResellerOrderPickingList = printResellerOrderPickingList;\n    vm.getResellerOrderDeliveryNotePdf = getResellerOrderDeliveryNotePdf;\n    vm.goToOrder = goToOrder;\n    vm.goToProduct = goToProduct;\n    vm.printAllResellerOrderPickingLists = printAllResellerOrderPickingLists;\n    vm.filterFulfilledOrders = filterFulfilledOrders;\n    vm.hasBeenPrinted = hasBeenPrinted;\n    vm.getLatestPrint = getLatestPrint;\n    vm.canPick = canPick;\n    vm.confirmPicking = confirmPicking;\n    vm.canPickAll = canPickAll;\n    vm.confirmPickAll = confirmPickAll;\n    vm.toggleClosePicking = toggleClosePicking;\n    vm.canPrintDeliveryNote = canPrintDeliveryNote;\n    vm.loadFulfilledOrders = loadFulfilledOrders;\n\n    // Scanner navigation parameters\n    vm.orderId = $stateParams.orderId;\n    vm.productNumber = $stateParams.productNumber;\n    vm.usingScannerNavigation = $stateParams.productNumber;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function () { return vm.selectedFulfilledOrdersWarehouse.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadFulfilledOrders();\n                saveLastUsedFulfilledOrdersWarehouseId(newValue);\n            }\n        });\n        $scope.$watch(function () { return vm.selectedPageSize.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadFulfilledOrders();\n            }\n        });\n        $scope.$watch(function () { return vm.selectedDateMonth.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadFulfilledOrders();\n            }\n        });\n        if (vm.orderId && vm.usingScannerNavigation) {\n            expandOrder(vm.orderId);\n        }\n    }\n\n    function onInit() {\n        ResellerOrdersApiService.getWarehouses().then(function (response) {\n            vm.warehouses = response.warehouses;\n            var lastUsedFulfilledOrdersWarehouseId = getLastUsedFulfilledOrdersWarehouseId();\n            vm.selectedFulfilledOrdersWarehouse = _.find(vm.warehouses, function (o) { return o.id === lastUsedFulfilledOrdersWarehouseId; });\n        }, function (error) {\n            ToasterService.showError(error.message);\n        });\n    }\n    function onChanges() {\n    }\n\n    function canPick(lineItem) {\n        return hasLink(lineItem.links, 'canPick');\n    }\n    function canPickAll(order) {\n        var canPick = false;\n        _.forEach(order.fulfillmentLineItems, function(li) {\n            if (hasLink(li.links, 'canPick')) {\n                canPick = true;\n            }\n        });\n\n        return canPick;\n    }\n    function confirmPicking(lineItem) {\n        if (canPick(lineItem)) {\n            var request = {\n                pickingConfirmations: [{\n                    fulfillmentLineItemId: lineItem.id,\n                    pickedQuantity: lineItem.pickableQuantity,\n                    closePicking: lineItem.closePicking\n                }]\n            };\n\n            ResellerOrdersApiService.confirmFulfillmentLineItemPicking(request).then(function (response) {\n                var lineItemEvent = _.find(response.events, function(o) {\n                    return o.id === lineItem.id;\n                });\n                lineItem.links = lineItemEvent.links;\n\n                lineItem.pickableQuantity = lineItemEvent.pickableQuantity;\n                lineItem.pickedQuantity = lineItemEvent.pickedQuantity;\n            }, function (error) {\n                ToasterService.showError(error.message);\n            });\n        }\n    }\n    function confirmPickAll(order) {\n        var request = {\n            pickingConfirmations: []\n        };\n        _.forEach(order.fulfillmentLineItems, function(lineItem) {\n            if (canPick(lineItem)) {\n                request.pickingConfirmations.push({\n                    fulfillmentLineItemId: lineItem.id,\n                    pickedQuantity: lineItem.pickableQuantity,\n                    closePicking: lineItem.closePicking ? lineItem.closePicking : false\n                });\n            }\n        });\n\n        ResellerOrdersApiService.confirmFulfillmentLineItemPicking(request).then(function (response) {\n            _.forEach(response.events, function(ev) {\n                var lineItem = _.find(order.fulfillmentLineItems, function(o) {\n                    return o.id === ev.id;\n                });\n                if (lineItem) {\n                    lineItem.links = ev.links;\n\n                    lineItem.pickableQuantity = ev.pickableQuantity;\n                    lineItem.pickedQuantity = ev.pickedQuantity;\n                }\n            });\n        }, function (error) {\n            ToasterService.showError(error.message);\n        });\n    }\n    function toggleClosePicking(order) {\n        var allAreTrue = true;\n        _.forEach(order.fulfillmentLineItems, function (li) {\n            if (!li.closePicking || li.closePicking === false) {\n                allAreTrue = false;\n            }\n        });\n\n        _.forEach(order.fulfillmentLineItems, function (li) {\n            if (!allAreTrue) {\n                li.closePicking = true;\n                order.closeAllPickings = true;\n            } else {\n                li.closePicking = false;\n                order.closeAllPickings = false;\n            }\n        });\n    }\n\n    function hasLink(links, rel) {\n        var link = _.find(links, function (o) {\n            return o.rel === rel;\n        });\n\n        if (link) {\n            return true;\n        }\n\n        return false;\n    }\n\n    function getLatestPrint(order, type) {\n        if (order.printLog.length > 0) {\n            var listOfType = _.last(_.filter(order.printLog, function(log){return log.type === type}));\n\n            if(listOfType){\n                return $translate.instant('resellerorder.hasBeenPrinted') + ': ' +\n                    formatDate(new Date(listOfType.dateUTC)) + ' ' +\n                    $translate.instant('resellerorder.hasBeenPrintedBy') + ' ' + listOfType.user;\n            }\n        }\n        return '';\n    }\n    function hasBeenPrinted(order, type) {\n\n        return _.find(order.printLog, function(log){return log.type === type;});\n\n        //return order.printLog.length > 0;\n    }\n    function formatDate(date) {\n        if (!date) { return ''; }\n        return date.getFullYear() + '-' + zeroFill(date.getMonth() + 1, 2) + '-' + zeroFill(date.getDate(), 2);\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            return new Array(width + ((/\\./).test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n\n    function filterFulfilledOrders() {\n        console.log('fulfilledOrdersFilter: \"' + vm.fulfilledOrdersFilter + '\"');\n\n        if (vm.fulfilledOrdersFilter.trim().length > 0) {\n            var searchTerm = vm.fulfilledOrdersFilter.trim().toLowerCase();\n            vm.filteredFulfilledOrders = _.filter(vm.fulfilledOrders, function(o) {\n                return o.orderNumber.toLowerCase().indexOf(searchTerm) > -1 ||\n                        o.resellerName.toLowerCase().indexOf(searchTerm) > -1;\n            });\n        } else {\n            vm.filteredFulfilledOrders = vm.fulfilledOrders;\n        }\n\n        vm.filteredFulfilledOrders = _.filter(vm.filteredFulfilledOrders, function(order){\n            if(order.printLog.length > 0){\n                if(vm.filterPickPrinted && !vm.filterDeliveryPrinted){\n                    return _.find(order.printLog, function(log){return log.type === 'ResellerOrderPickingList'});\n                }\n                else if(vm.filterDeliveryPrinted && !vm.filterPickPrinted){\n                    return _.find(order.printLog, function(log){return log.type === 'ResellerOrderDeliveryNote'});\n                }\n                else if(vm.filterDeliveryPrinted && vm.filterPickPrinted){\n                    return _.find(order.printLog, function(log){return log.type === 'ResellerOrderPickingList' || log.type === 'ResellerOrderDeliveryNote'});\n                }\n            }\n            else if(!vm.filterDeliveryPrinted && !vm.filterPickPrinted) {\n                return order;\n            }\n        });\n    }\n\n    function canPrintDeliveryNote(order){\n        var isAnyPicked = false;\n        if(order !== null){\n            _.forEach(order.fulfillmentLineItems, function(lineItem){\n                if(lineItem.pickedQuantity > 0)\n                    isAnyPicked = true;\n            });\n        }\n        return isAnyPicked;\n    }\n\n    function goToOrder(orderId) {\n        var url = $state.href('resellerorder.resellerorderview', {orderId: orderId});\n        $window.open(url,'_blank');\n    }\n    function goToProduct(articleId) {\n        var url = $state.href('product.articles.article', {articleId: articleId});\n        $window.open(url,'_blank');\n    }\n\n    function printAllResellerOrderPickingLists() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('common.printAll') + '?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                var request = {\n                    resellerOrderIds: [],\n                    locale: result.locale\n                };\n                _.forEach(vm.fulfilledOrders, function(o) { request.resellerOrderIds.push(o.id); });\n\n                ResellerOrdersApiService.getResellerOrderOrderPerspectivePickingList(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function printResellerOrder(orderId) {\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.getResellerOrderPdf(orderId).then(function (response) {\n        }, function (error) {\n            ToasterService.showError(error.message);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n    function printResellerOrderPickingList(orderId) {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.print.pickingList') + '?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                var request = {\n                    resellerOrderIds: [orderId],\n                    locale: result.locale\n                };\n                ResellerOrdersApiService.getResellerOrderOrderPerspectivePickingList(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n    function getResellerOrderDeliveryNotePdf(orderId) {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                var request = {\n                    resellerOrderIds: [orderId],\n                    locale: result.locale\n                };\n                loadSpinnerService.start('mainSpinner');\n\n                ResellerOrdersApiService.getResellerOrderDeliveryNote(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function getLastUsedFulfilledOrdersWarehouseId() {\n        if ($window.localStorage.resellerorderfulfill_lastUsedFulfilledOrdersWarehouseId) {\n            var lastUsedFulfilledOrdersWarehouseId = parseInt($window.localStorage.getItem('resellerorderfulfill_lastUsedFulfilledOrdersWarehouseId'));\n            if (isNaN(lastUsedFulfilledOrdersWarehouseId)) { return undefined; }\n            return lastUsedFulfilledOrdersWarehouseId;\n        }\n        return undefined;\n    }\n    function saveLastUsedFulfilledOrdersWarehouseId(id) {\n        $window.localStorage.setItem('resellerorderfulfill_lastUsedFulfilledOrdersWarehouseId', id);\n    }\n\n    function toggleExpandAll() {\n        var allAreExpanded = true;\n        _.forEach(vm.fulfilledOrders, function (ord) {\n            if (!ord.showOrderVariants || ord.showOrderVariants === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.fulfilledOrders, function (ord) {\n            if (!allAreExpanded) {\n                ord.showOrderVariants = true;\n            } else {\n                ord.showOrderVariants = false;\n            }\n        });\n    }\n\n    function loadFulfilledOrders() {\n        if (true) {\n            loadSpinnerService.start('mainSpinner');\n            var request = {\n                warehouseId: vm.selectedFulfilledOrdersWarehouse.id,\n                pageSize: vm.selectedPageSize.val,\n                filterOpen : vm.openCheck,\n                filterClosed : vm.closedCheck,\n                filterDateMonth : vm.selectedDateMonth.val\n            };\n            ResellerOrdersApiService.getFulfilledOrders(request).then(function (response) {\n                vm.fulfilledOrders = response.data.orders;\n\n                _.forEach(vm.fulfilledOrders, function (o) {\n                    o.showOrderVariants = false;\n                });\n\n                //Sort on ordernumber\n                vm.fulfilledOrders = _.orderBy(vm.fulfilledOrders, ['createdDate'], ['desc']);\n\n                //Copy to filter list\n                vm.filteredFulfilledOrders = angular.copy(vm.fulfilledOrders);\n\n                filterFulfilledOrders();\n\n                if (vm.orderId && vm.usingScannerNavigation) {\n                    expandOrder(vm.orderId);\n                }\n\n                console.log(vm.fulfilledOrders);\n            }, function (error) {\n                console.log(error);\n            }).then(function () {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function onSelectProduct(product) {\n        if (!product || !product.articleId || product.articleId <= 0) { return; }\n\n        product.showOrderVariants = true;\n    }\n\n    function expandOrder(orderId) {\n        var order = _.find(vm.filteredFulfilledOrders, function(order) {\n            return order.id === orderId;\n        });\n\n        if (order) {\n            order.showOrderVariants = true;\n        }\n    }\n}\n\nangular\n    .module('resellerorder.manageorders', [])\n    .config(stateConfig)\n    .controller('ResellerOrderManageOrdersController', ResellerOrderManageOrdersController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.manageproducts', {\n        url: '/fulfill/manage/products',\n        templateUrl: 'main/resellerorder/resellerorderfulfillment/manageproducts/manageproducts.tpl.html',\n        controller: 'ResellerOrderManageProductsController as vm',\n        resolve: {\n        },\n        params: {\n            orderId: undefined,\n            productNumber: undefined,\n            usingScannerNavigation: false\n        }\n    });\n}\n\n// @ngInject\nfunction ResellerOrderManageProductsController($rootScope, $state, $translate, $scope, $window, $stateParams, ResellerOrdersApiService, loadSpinnerService, ToasterService, printLanguageConfirmationDialogService) {\n    var vm = this;\n\n    //Properties\n    vm.canAccess = $rootScope.canAccess;\n    vm.selectedFulfilledProductsWarehouse = {};\n    vm.fulfilledProducts = [];\n    vm.filteredFulfilledProducts = [];\n    vm.fulfilledProductsFilter = '';\n    vm.pageSizes = [\n        { id: 0, val: 5 },\n        { id: 1, val: 10 },\n        { id: 2, val: 20 },\n        { id: 3, val: 50 },\n        { id: 4, val: 100 },\n        { id: 5, val: 200 }\n    ];\n    vm.selectedPageSize = vm.pageSizes[4];\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.toggleExpandAllProducts = toggleExpandAllProducts;\n    vm.toggleExpandAllOrders = toggleExpandAllOrders;\n    vm.printResellerOrderPickingList = printResellerOrderPickingList;\n    vm.goToOrder = goToOrder;\n    vm.goToProduct = goToProduct;\n    vm.printAllResellerOrderPickingLists = printAllResellerOrderPickingLists;\n    vm.filterFulfilledProducts = filterFulfilledProducts;\n    vm.hasBeenPrinted = hasBeenPrinted;\n    vm.getLatestPrint = getLatestPrint;\n    vm.canPick = canPick;\n    vm.confirmPicking = confirmPicking;\n    vm.canPickAll = canPickAll;\n    vm.confirmPickAll = confirmPickAll;\n    vm.toggleClosePicking = toggleClosePicking;\n\n    // Scanner navigation parameters\n    vm.orderId = $stateParams.orderId;\n    vm.productNumber = $stateParams.productNumber;\n    vm.usingScannerNavigation = $stateParams.productNumber;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function () { return vm.selectedFulfilledProductsWarehouse.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadFulfilledProducts();\n                saveLastUsedFulfilledProductsWarehouseId(newValue);\n            }\n        });\n        $scope.$watch(function () { return vm.selectedPageSize.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                loadFulfilledProducts();\n            }\n        });\n\n        if (vm.orderId && vm.usingScannerNavigation) {\n            expandOrder(vm.orderId, vm.productNumber);\n        }\n    }\n\n    function onInit() {\n        ResellerOrdersApiService.getWarehouses().then(function (response) {\n            vm.warehouses = response.warehouses;\n            var lastUsedFulfilledProductsWarehouseId = getLastUsedFulfilledProductsWarehouseId();\n            vm.selectedFulfilledProductsWarehouse = _.find(vm.warehouses, function (o) { return o.id === lastUsedFulfilledProductsWarehouseId; });\n        }, function (error) {\n            ToasterService.showError(error.message);\n        });\n    }\n    function onChanges() {\n    }\n\n    function canPick(lineItem) {\n        return hasLink(lineItem.links, 'canPick');\n    }\n    function canPickAll(order) {\n        var canPick = false;\n        _.forEach(order.fulfillmentLineItems, function(li) {\n            if (hasLink(li.links, 'canPick')) {\n                canPick = true;\n            }\n        });\n\n        return canPick;\n    }\n    function confirmPicking(lineItem) {\n        if (canPick(lineItem)) {\n            var request = {\n                pickingConfirmations: [{\n                    fulfillmentLineItemId: lineItem.id,\n                    pickedQuantity: lineItem.pickableQuantity,\n                    closePicking: lineItem.closePicking ? lineItem.closePicking : false\n                }]\n            };\n\n            ResellerOrdersApiService.confirmFulfillmentLineItemPicking(request).then(function (response) {\n                var lineItemEvent = _.find(response.events, function(o) {\n                    return o.id === lineItem.id;\n                });\n                lineItem.links = lineItemEvent.links;\n\n                lineItem.pickableQuantity = lineItemEvent.pickableQuantity;\n                lineItem.pickedQuantity = lineItemEvent.pickedQuantity;\n            }, function (error) {\n                ToasterService.showError(error.message);\n            });\n        }\n    }\n    function confirmPickAll(order) {\n        var request = {\n            pickingConfirmations: []\n        };\n        _.forEach(order.fulfillmentLineItems, function(lineItem) {\n            if (canPick(lineItem)) {\n                request.pickingConfirmations.push({\n                    fulfillmentLineItemId: lineItem.id,\n                    pickedQuantity: lineItem.pickableQuantity,\n                    closePicking: lineItem.closePicking ? lineItem.closePicking : false\n                });\n            }\n        });\n\n        ResellerOrdersApiService.confirmFulfillmentLineItemPicking(request).then(function (response) {\n            _.forEach(response.events, function(ev) {\n                var lineItem = _.find(order.fulfillmentLineItems, function(o) {\n                    return o.id === ev.id;\n                });\n                if (lineItem) {\n                    lineItem.links = ev.links;\n\n                    lineItem.pickableQuantity = ev.pickableQuantity;\n                    lineItem.pickedQuantity = ev.pickedQuantity;\n                }\n            });\n        }, function (error) {\n            ToasterService.showError(error.message);\n        });\n    }\n    function toggleClosePicking(order) {\n        var allAreTrue = true;\n        _.forEach(order.fulfillmentLineItems, function (li) {\n            if (!li.closePicking || li.closePicking === false) {\n                allAreTrue = false;\n            }\n        });\n\n        _.forEach(order.fulfillmentLineItems, function (li) {\n            if (!allAreTrue) {\n                li.closePicking = true;\n                order.closeAllPickings = true;\n            } else {\n                li.closePicking = false;\n                order.closeAllPickings = false;\n            }\n        });\n    }\n\n    function hasLink(links, rel) {\n        var link = _.find(links, function (o) {\n            return o.rel === rel;\n        });\n\n        if (link) {\n            return true;\n        }\n\n        return false;\n    }\n\n    function getLatestPrint(order) {\n        if (order.printLog.length > 0) {\n            var print = _.last(order.printLog);\n\n            return $translate.instant('resellerorder.hasBeenPrinted') + ': ' +\n                formatDate(new Date(print.dateUTC)) + ' ' +\n                $translate.instant('resellerorder.hasBeenPrintedBy') + ' ' + print.user;\n        }\n        return '';\n    }\n    function hasBeenPrinted(order) {\n        return order.printLog.length > 0;\n    }\n    function formatDate(date) {\n        if (!date) { return ''; }\n        return date.getFullYear() + '-' + zeroFill(date.getMonth() + 1, 2) + '-' + zeroFill(date.getDate(), 2);\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            return new Array(width + ((/\\./).test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n\n    function filterFulfilledProducts() {\n        console.log('fulfilledProductsFilter: \"' + vm.fulfilledProductsFilter + '\"');\n\n        if (vm.fulfilledProductsFilter.trim().length > 0) {\n            var searchTerm = vm.fulfilledProductsFilter.trim().toLowerCase();\n            vm.filteredFulfilledProducts = _.filter(vm.fulfilledProducts, function(o) {\n                return o.displayArticleNumber.toLowerCase().indexOf(searchTerm) > -1 ||\n                        o.articleName.toLowerCase().indexOf(searchTerm) > -1;\n            });\n        } else {\n            vm.filteredFulfilledProducts = vm.fulfilledProducts;\n        }\n    }\n\n    function goToOrder(orderId) {\n        var url = $state.href('resellerorder.resellerorderview', {orderId: orderId});\n        $window.open(url,'_blank');\n    }\n    function goToProduct(articleId) {\n        var url = $state.href('product.articles.article', {articleId: articleId});\n        $window.open(url,'_blank');\n    }\n\n    function printAllResellerOrderPickingLists() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('common.printAll') + '?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                var request = {\n                    productIds: [],\n                    locale: result.locale\n                };\n                _.forEach(vm.fulfilledProducts, function(o) { request.productIds.push(o.id); });\n\n                ResellerOrdersApiService.getResellerOrderProductPerspectivePickingList(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function printResellerOrderPickingList(productId) {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.print.pickingList') + '?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                var request = {\n                    productIds: [productId],\n                    locale: result.locale\n                };\n                ResellerOrdersApiService.getResellerOrderProductPerspectivePickingList(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function getLastUsedFulfilledProductsWarehouseId() {\n        if ($window.localStorage.resellerorderfulfill_lastUsedFulfilledProductsWarehouseId) {\n            var lastUsedFulfilledProductsWarehouseId = parseInt($window.localStorage.getItem('resellerorderfulfill_lastUsedFulfilledProductsWarehouseId'));\n            if (isNaN(lastUsedFulfilledProductsWarehouseId)) { return undefined; }\n            return lastUsedFulfilledProductsWarehouseId;\n        }\n        return undefined;\n    }\n    function saveLastUsedFulfilledProductsWarehouseId(id) {\n        $window.localStorage.setItem('resellerorderfulfill_lastUsedFulfilledProductsWarehouseId', id);\n    }\n\n    function toggleExpandAllProducts() {\n        var allAreExpanded = true;\n        _.forEach(vm.fulfilledProducts, function (prod) {\n            if (!prod.showOrders || prod.showOrders === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.fulfilledProducts, function (prod) {\n            if (!allAreExpanded) {\n                prod.showOrders = true;\n            } else {\n                prod.showOrders = false;\n            }\n        });\n    }\n    function toggleExpandAllOrders(prod) {\n        var allAreExpanded = true;\n        _.forEach(prod.orders, function (ord) {\n            if (!ord.showOrderRows || ord.showOrderRows === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(prod.orders, function (ord) {\n            if (!allAreExpanded) {\n                ord.showOrderRows = true;\n            } else {\n                ord.showOrderRows = false;\n            }\n        });\n    }\n\n    function loadFulfilledProducts() {\n        if (vm.selectedFulfilledProductsWarehouse && vm.selectedFulfilledProductsWarehouse.id > 0) {\n            loadSpinnerService.start('mainSpinner');\n            var request = {\n                warehouseId: vm.selectedFulfilledProductsWarehouse.id,\n                pageSize: vm.selectedPageSize.val\n            };\n            ResellerOrdersApiService.getFulfilledProducts(request).then(function (response) {\n                vm.fulfilledProducts = response.data.products;\n\n                _.forEach(vm.fulfilledProducts, function (prod) {\n                    prod.showOrders = false;\n\n                    prod.orders = _.sortBy(prod.orders, ['orderNumber']);\n\n                    _.forEach(prod.orders, function (ord) {\n                        //if only one lineitem show immediately, otherwise hide\n                        ord.showOrderRows = prod.orders.length === 1;\n                    });\n                });\n\n                //Sort on ordernumber\n                vm.fulfilledProducts = _.sortBy(vm.fulfilledProducts, ['displayArticleNumber']);\n\n                //Copy to filter list\n                vm.filteredFulfilledProducts = angular.copy(vm.fulfilledProducts);\n\n                filterFulfilledProducts();\n\n                if (vm.orderId && vm.usingScannerNavigation) {\n                    expandOrder(vm.orderId, vm.productNumber);\n                }\n\n                console.log(vm.fulfilledProducts);\n            }, function (error) {\n                console.log(error);\n            }).then(function () {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function expandOrder(orderId, productNumber) {\n        var product = _.find(vm.filteredFulfilledProducts, function(product) {\n            return product.alternativeArticleNumber === productNumber;\n        });\n\n        if (product) {\n            var order = _.find(product.orders, function(order) {\n                return order.id === orderId;\n            });\n            if (order) {\n                product.showOrders = true;\n                order.showOrderRows = true;\n            }\n        }\n    }\n\n}\n\nangular\n    .module('resellerorder.manageproducts', [])\n    .config(stateConfig)\n    .controller('ResellerOrderManageProductsController', ResellerOrderManageProductsController);\n","var module = angular.module('main.resellerorder');\n\nmodule.component('createResellerOrderAddLineItems',{\n    templateUrl: 'main/resellerorder/resellerordermodify/components/addlineitems.cmp.tpl.html',\n    bindings: {\n        resellerOrder: '=',\n        onLineItemChanged: '&',\n        onVariantChanged: '&'\n    },\n    controllerAs: 'vm',\n    controller: ['$scope', componentController]\n});\n\n// @ngInject\nfunction componentController($scope) {\n    var vm = this;\n\n    //Properties\n    vm.excludedArticles = [];\n    vm.tabSelection = {\n        overview: false,\n        quantity: true,\n        amount: false\n    };\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.receiveArticles = receiveArticles;\n    vm.saveLineItem = saveLineItem;\n    vm.saveVariant = saveVariant;\n    vm.canModifyLineItems = canModifyLineItems;\n    vm.changeToTab = changeToTab;\n\n    function onInit() {\n        $scope.$watch(function () { return vm.resellerOrder.lineItems.length; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                updateArticlesToExclude();\n            }\n        });\n    }\n    function onChanges() {\n    }\n\n    function changeToTab(tab) {\n        switch (tab) {\n            default:\n            case 'overview': vm.tabSelection = {\n                    overview: true,\n                    quantity: false,\n                    amount: false\n                };\n                break;\n            case 'quantity': vm.tabSelection = {\n                    overview: false,\n                    quantity: true,\n                    amount: false\n                };\n                break;\n            case 'amount': vm.tabSelection = {\n                    overview: false,\n                    quantity: false,\n                    amount: true\n                };\n                break;\n        }\n    }\n\n    function updateArticlesToExclude() {\n        vm.excludedArticles = _.chain(vm.resellerOrder.lineItems)\n            .groupBy('articleId')\n            .map((value, key) => ({ articleId: parseInt(key) }))\n            .value();\n    }\n\n    function canModifyLineItems() {\n        var canModifyLineItems = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n\n        return canModifyLineItems;\n    }\n\n    function saveLineItem(lineItem) {\n        vm.onLineItemChanged({ lineItem: lineItem });\n    }\n    function saveVariant(variant) {\n        vm.onVariantChanged({ variant: variant });\n    }\n\n    function receiveArticles(articles) {\n        if (!vm.resellerOrder.lineItems) { vm.resellerOrder.lineItems = []; }\n\n        _.forEach(articles, function(art) {\n            _.forEach(art.variants, function(variant) {\n                var newListItem = {\n                    amount: variant.price,\n                    articleId: variant.articleId,\n                    articleName: variant.articleName,\n                    displayArticleNumber: variant.displayArticleNumber,\n                    articleVariantId: variant.id,\n                    fulfilledQuantity: 0,\n                    id: 0,\n                    links: [{ rel: 'modify' }],\n                    orderId: vm.resellerOrder.id,\n                    plannedDeliveryDateUtc: new Date(variant.plannedDeliveryDate),\n                    quantity: 0,\n                    status: 'open',\n                    variantDetail1Name: variant.variantDetail1Name,\n                    variantDetail2Name: variant.variantDetail2Name,\n                    variantDetail2SortOrder: variant.variantDetail2SortOrder,\n                    vatAmount: variant.vatAmount,\n                    vatRate: variant.vatRate\n                };\n\n                vm.resellerOrder.lineItems.push(newListItem);\n            });\n        });\n    }\n}\n","angular.module('components.createResellerOrderArticlesAmount', [])\n    .component('createResellerOrderArticlesAmount', {\n        templateUrl: 'main/resellerorder/resellerordermodify/components/articlelist_amount.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            resellerOrder: '=',\n            disabled: '<',\n            onArticleSelected: '&',\n            onLineItemChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $translate, confirmationDialogService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    vm.lineItemsGroupedByArticle = [];\n\n    //Methods\n    vm.viewOrderArticle = viewOrderArticle;\n    vm.absolute = absolute;\n    vm.groupBy = groupBy;\n    vm.saveLineItem = saveLineItem;\n    vm.canModifyLineItem = canModifyLineItem;\n    vm.getVariant1s = getVariant1s;\n    vm.getVariant2s = getVariant2s;\n    vm.toggleExpandAll = toggleExpandAll;\n    vm.canClearRow = canClearRow;\n    vm.confirmClearRow = confirmClearRow;\n    vm.removeArticleFromOrder = removeArticleFromOrder;\n    vm.canDeleteArticleFromOrder = canDeleteArticleFromOrder;\n    vm.canUpdateWholeRow = canUpdateWholeRow;\n    vm.updateWholeRow = updateWholeRow;\n    vm.getProductGrossPriceSum = getProductGrossPriceSum;\n    vm.getVariantGrossPriceAverage = getVariantGrossPriceAverage;\n\n    function onInit() {\n        if (vm.resellerOrder.lineItems === undefined) {\n            vm.resellerOrder.lineItems = [];\n        } else {\n            regroupLineItemsOnArticle();\n        }\n\n        $scope.$watch(function () { return vm.resellerOrder.lineItems.length; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                regroupLineItemsOnArticle();\n            }\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    function getVariantGrossPriceAverage(variant) {\n        var sumPrice = 0, sumTotalQuantity = 0;\n        sumPrice += _.sumBy(variant.lineItems, function(li) {\n            sumTotalQuantity += li.quantity;\n            return li.amount * li.quantity;\n        });\n        return sumPrice / (sumTotalQuantity === 0 ? 1 : sumTotalQuantity);\n    }\n\n    function getProductGrossPriceSum(article) {\n        var sumPrice = 0;\n        _.forEach(article.lineItemsGroupedOnVariant1, function(liGrp) {\n            sumPrice += _.sumBy(liGrp.lineItems, function(li) {\n                return li.amount * li.quantity;\n            });\n        });\n        return sumPrice;\n    }\n\n    function removeArticleFromOrder(article) {\n        if (!article || !article.lineItemsGroupedOnVariant1) { return false; }\n\n        confirmationDialogService.showDialog($translate.instant(\"resellerorder.confirmRemoveArticle\"), 'warning').then(function (result) {\n            if (result === true) {\n                _.forEach(article.lineItemsGroupedOnVariant1, function(variant1) {\n                    _.forEach(variant1.lineItems, function(li) {\n                        if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                            li.amount = 0;\n                            vm.onLineItemChanged({ lineItem: li });\n                        }\n                    });\n                });\n                vm.resellerOrder.lineItems = _.filter(vm.resellerOrder.lineItems, function(o) {\n                    return o.articleId !== parseInt(article.article.id);\n                });\n            }\n        });\n    }\n    function canDeleteArticleFromOrder(lineItemsGroupedOnVariant1) {\n        if (!lineItemsGroupedOnVariant1) { return false; }\n\n        var canDelete = true;\n        _.forEach(lineItemsGroupedOnVariant1, function(variant1) {\n            _.forEach(variant1.lineItems, function(li) {\n                if (_.find(li.links, function(l) { return l.rel === 'delete'; }) === undefined) {\n                    canDelete = false;\n                }\n            });\n        });\n        return canDelete;\n    }\n\n    function canClearRow(variant1) {\n        var canUpdateWholeRow = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canUpdateWholeRow;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function confirmClearRow(lineItemsGroupedOnVariant1) {\n        confirmationDialogService.showDialog($translate.instant(\"resellerorder.confirmClearRow\"), 'warning').then(function (result) {\n            if (result === true) {\n                _.forEach(lineItemsGroupedOnVariant1.lineItems, function(li) {\n                    if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                        li.amount = 0;\n                        vm.onLineItemChanged({ lineItem: li });\n                    }\n                });\n                lineItemsGroupedOnVariant1.wholeRowAmount = '';\n            }\n        });\n    }\n\n    function canUpdateWholeRow(variant1) {\n        var canUpdateWholeRow = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canUpdateWholeRow;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function updateWholeRow(variant1, wholeRowAmount) {\n        if (!variant1) { return; }\n        if (!variant1.lineItems) { return; }\n        if (!wholeRowAmount || wholeRowAmount === '') { return; }\n\n        var lineItem = _.find(variant1.lineItems, function(o) { return o.amount > 0; });\n        if (lineItem !== undefined) {\n            confirmationDialogService.showDialog($translate.instant('resellerorder.confirmUpdateWholeRow'), $translate.instant('common.warning')).then(function (result) {\n                if (result === true) {\n                    _.forEach(variant1.lineItems, function(li) {\n                        if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                            li.amount = wholeRowAmount;\n                            vm.onLineItemChanged({ lineItem: li });\n                        }\n                    });\n                }\n                variant1.wholeRowAmount = '';\n            });\n        } else {\n            _.forEach(variant1.lineItems, function(li) {\n                if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                    li.amount = wholeRowAmount;\n                    vm.onLineItemChanged({ lineItem: li });\n                }\n            });\n            variant1.wholeRowAmount = '';\n        }\n    }\n\n    function toggleExpandAll() {\n        var allAreExpanded = true;\n        _.forEach(vm.lineItemsGroupedByArticle, function (o) {\n            if (!o.article.showRows || o.article.showRows === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.lineItemsGroupedByArticle, function(art) {\n            if (!allAreExpanded) {\n                art.article.showRows = true;\n            } else {\n                art.article.showRows = false;\n            }\n        });\n    }\n\n    function getVariant1s(lineItems) {\n        var variants = _.chain(lineItems)\n            .groupBy('variantDetail1Name')\n            .map((value, key) => ({ variantDetail1Name: key, lineItems: value }))\n            .value();\n\n        return variants;\n    }\n    function getVariant2s(lineItems) {\n        var variants = _.map(lineItems, 'variantDetail2Name');\n\n        return variants;\n    }\n\n    function canModifyLineItem(lineItem) {\n        var canModifyLineItems = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canModifyLineItems;\n\n        //TODO look on each lineitem if able to upsert\n        // if (lineItem === undefined) { return false; }\n        // if (!lineItem.links) { lineItem.links = []; }\n        // var canModifyLineItem = _.find(lineItem.links, function(o) { return o.rel === 'modify'; }) !== undefined;\n\n        // return canModifyLineItem;\n    }\n\n    function regroupLineItemsOnArticle() {\n        vm.resellerOrder.lineItems = _.sortBy(vm.resellerOrder.lineItems, ['variantDetail1Name', 'variantDetail2SortOrder']);\n        vm.lineItemsGroupedByArticle = _.chain(vm.resellerOrder.lineItems)\n            // Group the elements of Array based on `color` property\n            .groupBy('articleId')\n            // `key` is group's name (color), `value` is the array of objects\n            .map((value, key) => ({\n                article: {\n                    displayArticleNumber: value.length > 0 ? value[0].displayArticleNumber : '',\n                    articleName: value.length > 0 ? value[0].articleName : '',\n                    id: key,\n                    showRows: false\n                }, lineItemsGroupedOnVariant1: regroupLineItemsOnVariant1(value) }))\n            .value();\n    }\n    function regroupLineItemsOnVariant1(lineItems) {\n        var lineItemsGroupedByVariant1 = _.chain(lineItems)\n            .groupBy('variantDetail1Name')\n            .map((value, key) => ({\n                variantDetail1Name: key,\n                lineItems: value\n            }))\n            .value();\n        return lineItemsGroupedByVariant1;\n    }\n\n    function groupBy(array, field) {\n        return _.groupBy(array, field);\n    }\n\n    function saveLineItem(lineItem) {\n        vm.onLineItemChanged({ lineItem: lineItem });\n    }\n\n    function viewOrderArticle(article) {\n        vm.onArticleSelected({ article: article });\n    }\n\n    function absolute(number) {\n        if (_.isNumber(number)) {\n            return Math.abs(number);\n        }\n        return 0;\n    }\n}\n","angular.module('components.createResellerOrderArticlesOverview', [])\n    .component('createResellerOrderArticlesOverview', {\n        templateUrl: 'main/resellerorder/resellerordermodify/components/articlelist_overview.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            resellerOrder: '=',\n            disabled: '<',\n            onArticleSelected: '&',\n            onLineItemChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $state, $window, $translate, confirmationDialogService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    vm.lineItemsGroupedByArticle = [];\n\n    //Methods\n    vm.viewOrderArticle = viewOrderArticle;\n    vm.absolute = absolute;\n    vm.groupBy = groupBy;\n    vm.saveLineItem = saveLineItem;\n    vm.canModifyLineItem = canModifyLineItem;\n    vm.toggleExpandAll = toggleExpandAll;\n    vm.removeArticleFromOrder = removeArticleFromOrder;\n    vm.canDeleteArticleFromOrder = canDeleteArticleFromOrder;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getProductGrossPriceSum = getProductGrossPriceSum;\n    vm.getTotalGrossPriceSum = getTotalGrossPriceSum;\n    vm.getProductGrossPrice = getProductGrossPrice;\n    vm.getProductQuantitySum = getProductQuantitySum;\n    vm.getTotalQuantitySum = getTotalQuantitySum;\n    vm.getProductUnfulfilledQuantitySum = getProductUnfulfilledQuantitySum;\n    vm.getFinalAmount = getFinalAmount;\n    vm.goToProduct = goToProduct;\n\n    function onInit() {\n        if (vm.resellerOrder.lineItems === undefined) {\n            vm.resellerOrder.lineItems = [];\n        } else {\n            regroupLineItems();\n        }\n\n        $scope.$watch(function () { return vm.resellerOrder.lineItems.length; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                regroupLineItems();\n            }\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n\n    }\n\n    function goToProduct(articleId) {\n        var url = $state.href('product.articles.article', {articleId: articleId});\n        $window.open(url,'_blank');\n    }\n\n    function getFinalAmount(lineItem) {\n        var discountPercent = lineItem.discountPercent ? lineItem.discountPercent : 0;\n        return lineItem.amount * (1 - discountPercent);\n    }\n\n    function getProductUnfulfilledQuantitySum(article) {\n        var sumQty = 0;\n        sumQty += _.sumBy(article.lineItems, function(li) {\n            return li.fulfilledQuantity;\n        });\n        return sumQty;\n    }\n\n    function getProductGrossPriceSum(article) {\n        var sumPrice = 0;\n        sumPrice += _.sumBy(article.lineItems, function(li) {\n            return li.amount * li.quantity;\n        });\n        return sumPrice;\n    }\n\n    function getTotalGrossPriceSum() {\n        var sumPrice = 0;\n        _.forEach(vm.lineItemsGroupedByArticle, function(o) {\n            sumPrice += getProductGrossPriceSum(o);\n        });\n        return sumPrice;\n    }\n\n    function getProductGrossPrice(article) {\n        var sumPrice = 0, sumTotalQuantity = 0;\n        sumPrice += _.sumBy(article.lineItems, function(li) {\n            sumTotalQuantity += li.quantity;\n            return li.amount * li.quantity;\n        });\n        return sumPrice / (sumTotalQuantity === 0 ? 1 : sumTotalQuantity);\n    }\n\n    function getProductQuantitySum(article) {\n        var sumQty = 0;\n        sumQty += _.sumBy(article.lineItems, function(li) {\n            return li.quantity;\n        });\n        return sumQty;\n    }\n\n    function getTotalQuantitySum() {\n        var sumQty = 0;\n        _.forEach(vm.lineItemsGroupedByArticle, function(o) {\n            sumQty += getProductQuantitySum(o);\n        });\n        return sumQty;\n    }\n\n    function getStatusTranslation(text) {\n        if (text) {\n            var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n            return $translate.instant('resellerorder.status' + textCapital);\n        }\n    }\n\n    function removeArticleFromOrder(article) {\n        if (!article) { return false; }\n\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmRemoveArticle'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                _.forEach(article.lineItems, function(li) {\n                    if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                        li.quantity = 0;\n                        vm.onLineItemChanged({ lineItem: li });\n                    }\n                });\n                vm.resellerOrder.lineItems = _.filter(vm.resellerOrder.lineItems, function(o) {\n                    return o.articleId !== parseInt(article.article.id);\n                });\n            }\n        });\n    }\n    function canDeleteArticleFromOrder(lineItemsGroupedOnArticle) {\n        if (!lineItemsGroupedOnArticle) { return false; }\n\n        var canDelete = true;\n        _.forEach(lineItemsGroupedOnArticle.lineItems, function(li) {\n            if (_.find(li.links, function(l) { return l.rel === 'delete'; }) === undefined) {\n                canDelete = false;\n            }\n        });\n        return canDelete;\n    }\n\n    function toggleExpandAll() {\n        var allAreExpanded = true;\n        _.forEach(vm.lineItemsGroupedByArticle, function (o) {\n            if (!o.article.showRows || o.article.showRows === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.lineItemsGroupedByArticle, function(art) {\n            if (!allAreExpanded) {\n                art.article.showRows = true;\n            } else {\n                art.article.showRows = false;\n            }\n        });\n    }\n\n    function canModifyLineItem(lineItem) {\n        var canModifyLineItems = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canModifyLineItems;\n    }\n\n    function regroupLineItems() {\n        vm.resellerOrder.lineItems = _.sortBy(vm.resellerOrder.lineItems, ['variantDetail1Name', 'variantDetail2SortOrder']);\n        vm.lineItemsGroupedByArticle = _.chain(vm.resellerOrder.lineItems)\n            // Group the elements of Array based on `color` property\n            .groupBy('articleId')\n            // `key` is group's name (color), `value` is the array of objects\n            .map((value, key) => ({\n                article: {\n                    displayArticleNumber: value.length > 0 ? value[0].displayArticleNumber : '',\n                    articleName: value.length > 0 ? value[0].articleName : '',\n                    id: key,\n                    showRows: false\n                }, lineItems: value }))\n            .value();\n\n        _.forEach(vm.lineItemsGroupedByArticle, function(lineItemArticle) {\n            _.forEach(lineItemArticle.lineItems, function(lineItem) {\n                lineItem.discountDisplayPercent = lineItem.discountPercent * 100 + '%';\n            });\n        });\n    }\n\n    function groupBy(array, field) {\n        return _.groupBy(array, field);\n    }\n\n    function saveLineItem(lineItem) {\n        vm.onLineItemChanged({ lineItem: lineItem });\n    }\n\n    function viewOrderArticle(article) {\n        vm.onArticleSelected({ article: article });\n    }\n\n    function absolute(number) {\n        if (_.isNumber(number)) {\n            return Math.abs(number);\n        }\n        return 0;\n    }\n}\n","angular.module('components.createResellerOrderArticlesQuantity', [])\n    .component('createResellerOrderArticlesQuantity', {\n        templateUrl: 'main/resellerorder/resellerreturnordermodify/components/articlelist_quantity.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            resellerOrder: '=',\n            disabled: '<',\n            onArticleSelected: '&',\n            onLineItemChanged: '&',\n            onVariantChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($rootScope, $scope, $state, $window, $translate, confirmationDialogService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    vm.lineItemsGroupedByArticle = [];\n\n    //Methods\n    vm.viewOrderArticle = viewOrderArticle;\n    vm.absolute = absolute;\n    vm.groupBy = groupBy;\n    vm.saveLineItem = saveLineItem;\n    vm.saveVariant = saveVariant;\n    vm.canModifyLineItem = canModifyLineItem;\n    vm.getVariant1s = getVariant1s;\n    vm.getVariant2s = getVariant2s;\n    vm.toggleExpandAll = toggleExpandAll;\n    vm.canClearRow = canClearRow;\n    vm.confirmClearRow = confirmClearRow;\n    vm.removeArticleFromOrder = removeArticleFromOrder;\n    vm.canDeleteArticleFromOrder = canDeleteArticleFromOrder;\n    vm.canUpdateWholeRow = canUpdateWholeRow;\n    vm.updateWholeRow = updateWholeRow;\n    vm.getProductQuantitySum = getProductQuantitySum;\n    vm.getTotalQuantitySum = getTotalQuantitySum;\n    vm.getVariantQuantitySum = getVariantQuantitySum;\n    vm.getProductGrossPrice = getProductGrossPrice;\n    vm.canModifyLineItemDeliveryDate = canModifyLineItemDeliveryDate;\n    vm.deliveryDateChanged = deliveryDateChanged;\n    vm.setWholeRowPrice = setWholeRowPrice;\n    vm.setWholeRowDiscountPercent = setWholeRowDiscountPercent;\n    vm.getFinalAmount = getFinalAmount;\n    vm.goToProduct = goToProduct;\n\n    function onInit() {\n        if (vm.resellerOrder.lineItems === undefined) {\n            vm.resellerOrder.lineItems = [];\n        } else {\n            regroupLineItemsOnArticle();\n        }\n\n        $scope.$watch(function () { return vm.resellerOrder.lineItems.length; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                regroupLineItemsOnArticle();\n            }\n        });\n        $rootScope.$on('ResellerOrder.hideLineSpinner', function() {\n            vm.showSpinner = false;\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    function goToProduct(articleId) {\n        var url = $state.href('product.articles.article', {articleId: articleId});\n        $window.open(url,'_blank');\n    }\n\n    function getFinalAmount(lineItemArticle, variant) {\n        var avgPrice = parseFloat(vm.getProductGrossPrice(lineItemArticle).toFixed(2));\n        if (!variant.wholeRowPrice) { variant.wholeRowPrice = avgPrice; }\n        if (!variant.wholeRowDiscountPercent) { variant.wholeRowDiscountPercent = 0; }\n\n        var temp = parseFloat((variant.wholeRowPrice * (1 - variant.wholeRowDiscountPercent)).toFixed(2));\n        return temp;\n    }\n\n    function setWholeRowPrice(lineItemArticle, variant) {\n        var avgPrice = parseFloat(vm.getProductGrossPrice(lineItemArticle).toFixed(2));\n        if (!variant.wholeRowPrice) { variant.wholeRowPrice = avgPrice; }\n        variant.wholeRowFinalPrice = parseFloat((variant.wholeRowPrice * (1 - variant.wholeRowDiscount / 100)).toFixed(2));\n\n        _.forEach(variant.lineItems, function(li) {\n            if (!li.amount || li.amount === 0) {\n                li.amount = variant.wholeRowPrice;\n                li.finalAmount = parseFloat((parseFloat(variant.wholeRowPrice) * (1 - parseFloat(variant.wholeRowDiscount) / 100)).toFixed(2));\n            }\n        });\n\n        saveVariant(variant);\n    }\n\n    function setWholeRowDiscountPercent(lineItemArticle, variant) {\n        var avgPrice = parseFloat(vm.getProductGrossPrice(lineItemArticle).toFixed(2));\n        if (!variant.wholeRowPrice) { variant.wholeRowPrice = avgPrice; }\n        if (!variant.wholeRowDiscount) { variant.wholeRowDiscount = 0; }\n        variant.wholeRowFinalPrice = parseFloat((variant.wholeRowPrice * (1 - variant.wholeRowDiscountPercent)).toFixed(2));\n\n        _.forEach(variant.lineItems, function(li) {\n            if (!li.amount || li.amount === 0) {\n                li.amount = variant.wholeRowPrice;\n                li.finalAmount = parseFloat((parseFloat(variant.wholeRowPrice) * (1 - variant.wholeRowDiscountPercent)).toFixed(2));\n            }\n            li.discountPercent = variant.wholeRowDiscountPercent;\n        });\n\n        saveVariant(variant);\n    }\n\n    function getProductGrossPrice(article) {\n        var sumPrice = 0, sumTotalQuantity = 0;\n        _.forEach(article.lineItemsGroupedOnVariant1, function(liGrp) {\n            sumPrice += _.sumBy(liGrp.lineItems, function(li) {\n                if(li.quantity === 0){\n                    sumTotalQuantity += 1;\n                    return li.amount;\n                }\n                sumTotalQuantity += li.quantity;\n                return li.amount * li.quantity;\n            });\n        });\n        return sumPrice / (sumTotalQuantity === 0 ? 1 : sumTotalQuantity);\n    }\n\n    function getVariantQuantitySum(variant) {\n        var sumQty = 0;\n        sumQty += _.sumBy(variant.lineItems, function(li) {\n            return li.quantity;\n        });\n        return sumQty;\n    }\n\n    function getProductQuantitySum(article) {\n        var sumQty = 0;\n        _.forEach(article.lineItemsGroupedOnVariant1, function(liGrp) {\n            sumQty += _.sumBy(liGrp.lineItems, function(li) {\n                return li.quantity;\n            });\n        });\n        return sumQty;\n    }\n\n    function getTotalQuantitySum() {\n        var sumQty = 0;\n        _.forEach(vm.lineItemsGroupedByArticle, function(o) {\n            sumQty += getProductQuantitySum(o);\n        });\n        return sumQty;\n    }\n\n    function removeArticleFromOrder(article) {\n        if (!article || !article.lineItemsGroupedOnVariant1) { return false; }\n\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmRemoveArticle'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                _.forEach(article.lineItemsGroupedOnVariant1, function(variant1) {\n                    _.forEach(variant1.lineItems, function(li) {\n                        if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                            li.quantity = 0;\n                            vm.onLineItemChanged({ lineItem: li });\n                        }\n                    });\n                });\n                vm.resellerOrder.lineItems = _.filter(vm.resellerOrder.lineItems, function(o) {\n                    return o.articleId !== parseInt(article.article.id);\n                });\n            }\n        });\n    }\n    function canDeleteArticleFromOrder(lineItemsGroupedOnVariant1) {\n        if (!lineItemsGroupedOnVariant1) { return false; }\n\n        var canDelete = true;\n        _.forEach(lineItemsGroupedOnVariant1, function(variant1) {\n            _.forEach(variant1.lineItems, function(li) {\n                if (_.find(li.links, function(l) { return l.rel === 'delete'; }) === undefined) {\n                    canDelete = false;\n                }\n            });\n        });\n        return canDelete;\n    }\n\n    function canClearRow() {\n        var canUpdateWholeRow = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canUpdateWholeRow;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function confirmClearRow(lineItemsGroupedOnVariant1) {\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmClearRow'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                _.forEach(lineItemsGroupedOnVariant1.lineItems, function(li) {\n                    if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                        li.quantity = 0;\n                        vm.onLineItemChanged({ lineItem: li });\n                    }\n                });\n                lineItemsGroupedOnVariant1.wholeRowQuantity = '';\n            }\n        });\n    }\n\n    function canUpdateWholeRow() {\n        var canUpdateWholeRow = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canUpdateWholeRow;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function updateWholeRow(variant1, wholeRowQuantity) {\n        if (!variant1) { return; }\n        if (!variant1.lineItems) { return; }\n        if (!wholeRowQuantity || wholeRowQuantity === '') { return; }\n\n        var lineItem = _.find(variant1.lineItems, function(o) { return o.quantity > 0; });\n        if (lineItem !== undefined) {\n            confirmationDialogService.showDialog($translate.instant('resellerorder.confirmUpdateWholeRow'), $translate.instant('common.warning')).then(function (result) {\n                if (result === true) {\n                    _.forEach(variant1.lineItems, function(li) {\n                        if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                            li.quantity = wholeRowQuantity;\n                            vm.onLineItemChanged({ lineItem: li });\n                        }\n                    });\n                }\n                variant1.wholeRowQuantity = '';\n            });\n        } else {\n            _.forEach(variant1.lineItems, function(li) {\n                if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                    li.quantity = wholeRowQuantity;\n                    vm.onLineItemChanged({ lineItem: li });\n                }\n            });\n            variant1.wholeRowQuantity = '';\n        }\n    }\n\n    function toggleExpandAll() {\n        var allAreExpanded = true;\n        _.forEach(vm.lineItemsGroupedByArticle, function (o) {\n            if (!o.article.showRows || o.article.showRows === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.lineItemsGroupedByArticle, function(art) {\n            if (!allAreExpanded) {\n                art.article.showRows = true;\n            } else {\n                art.article.showRows = false;\n            }\n        });\n    }\n\n    function getVariant1s(lineItems) {\n        var variants = _.chain(lineItems)\n            .groupBy('variantDetail1Name')\n            .map((value, key) => ({ variantDetail1Name: key, lineItems: value }))\n            .value();\n\n        return variants;\n    }\n    function getVariant2s(lineItems) {\n        var variants = _.map(lineItems, 'variantDetail2Name');\n\n        return variants;\n    }\n\n    function canModifyLineItem() {\n        var canModifyLineItems = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canModifyLineItems;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function regroupLineItemsOnArticle() {\n        vm.resellerOrder.lineItems = _.sortBy(vm.resellerOrder.lineItems, ['variantDetail1Name', 'variantDetail2SortOrder']);\n        vm.lineItemsGroupedByArticle = _.chain(vm.resellerOrder.lineItems)\n            // Group the elements of Array based on `color` property\n            .groupBy('articleId')\n            // `key` is group's name (color), `value` is the array of objects\n            .map((value, key) => ({\n                article: {\n                    displayArticleNumber: value.length > 0 ? value[0].displayArticleNumber : '',\n                    articleName: value.length > 0 ? value[0].articleName : '',\n                    id: key,\n                    showRows: false,\n                    plannedDeliveryDate: (_.find(value, function(v) { return v.quantity > 0; }) || value[0]).plannedDeliveryDateUtc\n                },\n                lineItemsGroupedOnVariant1: regroupLineItemsOnVariant1(value)\n            }))\n            .value();\n        _.forEach(vm.lineItemsGroupedByArticle, function(lineItemArticle) {\n            var avgPrice = vm.getProductGrossPrice(lineItemArticle);\n            _.forEach(lineItemArticle.lineItemsGroupedOnVariant1, function(variant) {\n                variant.initialProductGrossPrice = avgPrice;\n                var avgWholeRowDiscountPercent = 0;\n                _.forEach(variant.lineItems, function(lineItem) {\n                    lineItem.discountDisplayPercent = lineItem.discountPercent * 100 + '%';\n                    lineItem.plannedDeliveryDateUtc = !lineItem.plannedDeliveryDateUtc ? lineItemArticle.article.plannedDeliveryDate : lineItem.plannedDeliveryDateUtc;\n                    if(lineItem.discountPercent > avgWholeRowDiscountPercent){\n                        avgWholeRowDiscountPercent = lineItem.discountPercent;\n                    }\n                });\n                variant.wholeRowDiscountPercent = avgWholeRowDiscountPercent;\n            });\n        });\n    }\n    function regroupLineItemsOnVariant1(lineItems) {\n        var lineItemsGroupedByVariant1 = _.chain(lineItems)\n            .groupBy('variantDetail1Name')\n            .map((value, key) => ({\n                variantDetail1Name: key,\n                lineItems: value\n            }))\n            .value();\n        return lineItemsGroupedByVariant1;\n    }\n\n    function groupBy(array, field) {\n        return _.groupBy(array, field);\n    }\n\n    function saveVariant(variant) {\n        var v = variant;\n        _.forEach(v.lineItems, function(l) { \n            var d = new Date(l.plannedDeliveryDateUtc);\n            l.plannedDeliveryDateUtc = dateToUtc(d);\n        });\n        vm.onVariantChanged({ variant: variant });\n    }\n\n    function saveLineItem(lineItem) {\n        vm.onLineItemChanged({ lineItem: lineItem });\n    }\n\n    function viewOrderArticle(article) {\n        vm.onArticleSelected({ article: article });\n    }\n\n    function absolute(number) {\n        if (_.isNumber(number)) {\n            return Math.abs(number);\n        }\n        return 0;\n    }\n\n    function canModifyLineItemDeliveryDate(lineItemArticle) {\n        // Planned delivery date can change at any moment (?)\n        return true;\n    }\n\n    function dateToUtc(date) {\n        var milliseconds = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n        var d = new Date(milliseconds);\n        return d;\n    }\n\n    function deliveryDateChanged(lineItemArticle) {\n        var newDate = new Date(\n            lineItemArticle.article.plannedDeliveryDate.getFullYear(),\n            lineItemArticle.article.plannedDeliveryDate.getMonth(),\n            lineItemArticle.article.plannedDeliveryDate.getDate(),\n            0, 0, 0, 0);\n\n        _.forEach(lineItemArticle.lineItemsGroupedOnVariant1, function(group) {\n            _.forEach(group.lineItems, function(lineItem) {\n                lineItem.plannedDeliveryDateUtc = newDate;\n            });\n            saveVariant(group);\n        });\n    }\n}\n","angular.module('components.caResellerOrderProductSearchMultiSelect', [])\n.component('caResellerOrderProductSearchMultiSelect', {\n    templateUrl: 'main/resellerorder/resellerordermodify/components/resellerorderproductsearchmultiselect.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        orderId: '<',\n        selectSameTwiceAllowed: '<',\n        articlesToExclude: '<',\n        disabled: '<',\n        onArticlesRetrieved: '&'\n    },\n    controller: controller\n});\n\n// @ngInject\nfunction controller($q, $scope, ResellerOrdersApiService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.searchResultArticles = [];\n    vm.articlesToAdd = [];\n    vm.result = [];\n    vm.currentPage = 1;\n\n    vm.refreshArticles = refreshArticles;\n    vm.addArticles = addArticles;\n\n    function onInit() {\n        if (!vm.selectSameTwiceAllowed) {\n            vm.selectSameTwiceAllowed = false;\n        }\n\n        if (!vm.pageSize) {\n            vm.pageSize = 20;\n        }\n\n        $scope.$watch(function() { return (vm.company !== undefined) ?  vm.company.id : undefined; }, function() {\n            vm.articlesToAdd = [];\n            refreshArticles();\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n\n    // Refreshes the contents of the drop-down-list of selectable articles.\n    function refreshArticles(filter) {\n        ResellerOrdersApiService.getProducts(vm.orderId, filter).then(function(response) {\n            vm.searchResultArticles = [];\n            var excludeList = [];\n            if (vm.articlesToExclude !== undefined) {\n                excludeList = vm.articlesToExclude.map(function(oa) {\n                    return { id: oa.articleId };\n                });\n            }\n\n            var products = response.data.products;\n\n            for (var i = 0; i < products.length; i++) {\n                var article = products[i];\n                if (!_.find(excludeList, {'id': article.id})) {\n                    vm.searchResultArticles.push(article);\n                }\n            }\n        }, function(error) {\n            ToasterService.showError(error.errors);\n        });\n    }\n\n    function addArticles() {\n        vm.result = [];\n        var promises = [];\n        loadSpinnerService.start(\"mainSpinner\");\n        _.forEach(vm.articlesToAdd, function(article) {\n            var articleFetchPromise = ResellerOrdersApiService.getVariantsForProduct(vm.orderId, article.id);\n            promises.push(articleFetchPromise);\n        });\n\n        $q.all(promises).then(function(responses) {\n            _.forEach(responses, function(response) {\n                vm.result.push(response.data);\n            });\n            vm.onArticlesRetrieved({articles: vm.result});\n            vm.articlesToAdd = [];\n            refreshArticles();\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.resellerordermodify', {\n        url: '/modify/{orderId:int}',\n        templateUrl: 'main/resellerorder/resellerordermodify/resellerordermodify.tpl.html',\n        controller: 'ResellerOrderModifyController as vm',\n        resolve: {\n            resellerOrder: resellerOrderResolver\n        },\n        params: {\n        }\n    });\n}\n\n// @ngInject\nfunction resellerOrderResolver($stateParams, ResellerOrdersApiService) {\n    return ResellerOrdersApiService.getOrderById($stateParams.orderId);\n}\n\n// @ngInject\nfunction ResellerOrderModifyController($window, $rootScope, $state, $translate, resellerOrder,\n    ResellerOrdersApiService, confirmationDialogService, setFieldConfirmationDialogService,\n    loadSpinnerService, ToasterService, printLanguageConfirmationDialogService) {\n    var vm = this;\n\n    //Properties\n    vm.resellerOrder = resellerOrder.order;\n    vm.resellerOrder.links = resellerOrder.links;\n    vm.links = resellerOrder.links;\n    vm.canAccess = $rootScope.canAccess;\n    vm.showSearchFields = false;\n    vm.synchronizationStatus = '';\n    vm.isSaving = false;\n    vm.isEditingOrderNumber = false;\n    vm.editedOrderNumber = '';\n\n    //Public methods\n    vm.canCancelOrder = canCancelOrder;\n    vm.cancelOrder = cancelOrder;\n    vm.canConfirmOrder = canConfirmOrder;\n    vm.confirmOrder = confirmOrder;\n    vm.canPrintOrder = canPrintOrder;\n    vm.printOrder = printOrder;\n    vm.saveLineItem = saveLineItem;\n    vm.saveVariant = saveVariant;\n    vm.createNewOrder = createNewOrder;\n    vm.createNewReturnOrder = createNewReturnOrder;\n    vm.getResellerOrderCsv = getResellerOrderCsv;\n    vm.toggleSearchFields = toggleSearchFields;\n    vm.canSetWholeOrderDeliveryDate = canSetWholeOrderDeliveryDate;\n    vm.canSetWholeOrderDiscountPercent = canSetWholeOrderDiscountPercent;\n    vm.setWholeOrderDeliveryDate = setWholeOrderDeliveryDate;\n    vm.setWholeOrderDiscountPercent = setWholeOrderDiscountPercent;\n    vm.editOrderNumber = editOrderNumber;\n    vm.tryToSaveNewOrderNumber = tryToSaveNewOrderNumber;\n\n    activate();\n\n    function activate() {\n        if (vm.resellerOrder.id !== 0) {\n            //get product variants\n            var lineItemsGroupedByArticle = _.chain(vm.resellerOrder.lineItems)\n                // Group the elements of Array based on `color` property\n                .groupBy('articleId')\n                // `key` is group's name (color), `value` is the array of objects\n                .map((value, key) => ({ article: { id: parseInt(key), showRows: false }, lineItems: value }))\n                .value();\n\n            loadSpinnerService.start('mainSpinner');\n            _.forEach(lineItemsGroupedByArticle, function(li) {\n                ResellerOrdersApiService.getVariantsForProduct(li.article.id).then(function (response) {\n                    fillOutArticle(response.data.variants);\n                });\n            });\n            loadSpinnerService.stop('mainSpinner');\n        }\n\n        vm.synchronizationStatus = $translate.instant(\"common.allChangesSaved\");\n        $rootScope.$on('ResellerOrder.savingChanges', function() {\n            vm.synchronizationStatus = $translate.instant(\"common.savingChanges\");\n            vm.isSaving = true;\n        });\n        $rootScope.$on('ResellerOrder.allChangesSaved', function() {\n            vm.synchronizationStatus = $translate.instant(\"common.allChangesSaved\");\n            vm.isSaving = false;\n        });\n    }\n\n    \n    function editOrderNumber() {\n        vm.isEditingOrderNumber = true;\n        vm.editedOrderNumber = vm.resellerOrder.orderNumber;\n    }\n\n    function tryToSaveNewOrderNumber() {\n        vm.isEditingOrderNumber = false;\n        if(vm.editedOrderNumber === vm.resellerOrder.orderNumber){\n            ToasterService.showError($translate.instant('productimport.noChangesToSave') + ' ' + angular.lowercase($translate.instant('common.in') + ' ' + $translate.instant('resellerorder.orderNumber') + '!'));\n            return;\n        }\n        \n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.changeOrderNumber(vm.editedOrderNumber, vm.resellerOrder.id).then(function () {\n            vm.resellerOrder.orderNumber = vm.editedOrderNumber;\n            ToasterService.showSuccess($translate.instant('common.new') + ' ' + angular.lowercase($translate.instant('resellerorder.orderNumber')) + ': \"' + vm.editedOrderNumber + '\" ' + angular.lowercase($translate.instant('common.wasSaved') + '!'));\n        }, function (error){\n            vm.isEditingOrderNumber = true;\n            ToasterService.showError(error.message);\n        }).finally(function(){\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n    \n    function createNewOrder() {\n        $state.go('resellerorder.resellerordercreate');\n    }\n\n    function createNewReturnOrder() {\n        $state.go('resellerorder.resellerreturnordercreate');\n    }\n\n    function getResellerOrderCsv() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getResellerOrderCsv(vm.resellerOrder.id, result.locale).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n    function canPrintOrder() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n\n        return hasLineItems;\n    }\n    function printOrder() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + ' PDF?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getResellerOrderPdf(vm.resellerOrder.id, result.locale).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function canSetWholeOrderDeliveryDate() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'updateDeliveryDate'; }) !== undefined;\n\n        return hasLineItems && hasLink;\n    }\n    function canSetWholeOrderDiscountPercent() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'updateDiscountPercent'; }) !== undefined;\n\n        return hasLineItems && hasLink;\n    }\n\n    function setWholeOrderDeliveryDate() {\n        setFieldConfirmationDialogService.showDialog($translate.instant('resellerorder.confirmationSetWholeOrderDeliveryDate'), '', 'date', null, null).then(function (result) {\n            if (result.isCompleted === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                var request = {\n                    orderId: vm.resellerOrder.id,\n                    deliveryDateUtc: result.dateValue\n                };\n                ResellerOrdersApiService.setWholeOrderDeliverDate(request).then(function(response) {\n                    //reload page\n                    $window.location.reload();\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, error.message);\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    function setWholeOrderDiscountPercent() {\n        setFieldConfirmationDialogService.showDialog($translate.instant('resellerorder.confirmSetWholeOrderDiscountPercent'), '', 'number', 0, 100).then(function (result) {\n            if (result.isCompleted === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                var request = {\n                    orderId: vm.resellerOrder.id,\n                    discountPercent: result.numberValue / 100\n                };\n                ResellerOrdersApiService.setWholeOrderDiscountPercent(request).then(function(response) {\n                    _.forEach(vm.resellerOrder.lineItems, function(lineItem){\n                        if(lineItem.quantity > 0){\n                            lineItem.discountPercent = result.numberValue / 100;\n                            lineItem.discountDisplayPercent = lineItem.quantity + '%';\n                        }\n                    });\n                    //reload page\n                    $window.location.reload();\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, error.message);\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n\n\n    function toggleSearchFields() {\n        vm.showSearchFields = !vm.showSearchFields;\n    }\n\n    function fillOutArticle(variants) {\n        _.forEach(variants, function(v) {\n            var existingLineItem = _.find(vm.resellerOrder.lineItems, function(li) { return li.articleVariantId === v.id; });\n            if (existingLineItem === undefined) {\n                var newLineItem = {\n                    amount: 0,\n                    articleId: v.articleId,\n                    articleName: v.articleName,\n                    articleVariantId: v.id,\n                    fulfilledQuantity: 0,\n                    id: 0,\n                    links: [{ rel: 'modify' }],\n                    orderId: vm.resellerOrder.id,\n                    quantity: 0,\n                    status: 'open',\n                    variantDetail1Name: v.variantDetail1Name,\n                    variantDetail2Name: v.variantDetail2Name,\n                    variantDetail2SortOrder: v.variantDetail2SortOrder,\n                    vatAmount: 0,\n                    vatRate: 0\n                };\n                vm.resellerOrder.lineItems.push(newLineItem);\n            }\n        });\n    }\n\n    function saveLineItem(lineItem) {\n        var request = {\n            orderId: lineItem.orderId,\n            lineItems: [{\n                articleVariantId: lineItem.articleVariantId,\n                discountPercent: lineItem.discountPercent,\n                plannedDeliveryDateUtc: lineItem.plannedDeliveryDateUtc,\n                price: lineItem.amount,\n                quantity: lineItem.quantity\n            }]\n        };\n\n        $rootScope.$emit('ResellerOrder.savingChanges', '');\n        ResellerOrdersApiService.upsertLineItems(request).then(function (response) {\n            vm.resellerOrder.links = response.data.links;\n            $rootScope.$emit('ResellerOrder.allChangesSaved', '');\n        }, function (error) {\n            console.log(error);\n        }).then(function () {\n        });\n    }\n\n    function saveVariant(variant) {\n        var request = {\n            orderId: variant.lineItems[0].orderId,\n            lineItems: []\n        };\n        _.forEach(variant.lineItems, function(lineItem) {\n            request.lineItems.push({\n                articleVariantId: lineItem.articleVariantId,\n                discountPercent: lineItem.discountPercent,\n                plannedDeliveryDateUtc: lineItem.plannedDeliveryDateUtc,\n                price: lineItem.amount,\n                quantity: lineItem.quantity\n            });\n        });\n\n        $rootScope.$emit('ResellerOrder.savingChanges', '');\n        ResellerOrdersApiService.upsertLineItems(request).then(function (response) {\n            vm.resellerOrder.links = response.data.links;\n            $rootScope.$emit('ResellerOrder.allChangesSaved', '');\n        }, function (error) {\n            console.log(error);\n        }).finally(function () {\n        });\n    }\n\n    function canConfirmOrder() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'confirm'; }) !== undefined;\n\n        return hasLineItems && hasLink;\n    }\n\n    function canCancelOrder() {\n        var hasDeleteLink = _.find(vm.links, function(o) { return o.rel === 'delete'; }) !== undefined;\n\n        return hasDeleteLink;\n    }\n\n    function cancelOrder() {\n        //confirm scrap order\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmCancelOrder'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                //clear line items and order head\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.deleteOrder(vm.resellerOrder.id).then(function () {\n                    ToasterService.showInfo($translate.instant('resellerorder.orderDeleted'), $translate.instant('common.information'));\n                    $state.go('resellerorder.resellerordersearch');\n                }, function (error) {\n                    console.log(error);\n                    ToasterService.showError(error.error, $translate.instant('common.error'));\n                }).then(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function confirmOrder() {\n        confirmationDialogService.showDialog($translate.instant(\"resellerorder.confirmConfirmOrder\"), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                //call backend, confirm order\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.confirm(vm.resellerOrder.id).then(function () {\n                    ToasterService.showInfo($translate.instant('resellerorder.orderConfirmed'), $translate.instant('common.information'));\n\n                    $state.go('resellerorder.resellerorderview', { orderId: vm.resellerOrder.id });\n                }, function (error) {\n                    console.log(error);\n                    ToasterService.showError(error.error, $translate.instant('common.error'));\n                }).then(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n}\n\nangular\n    .module('resellerorder.resellerordermodify', [])\n    .config(stateConfig)\n    .controller('ResellerOrderModifyController', ResellerOrderModifyController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.resellerordersearch', {\n        url: '/search',\n        templateUrl: 'main/resellerorder/resellerordersearch/resellerordersearch.tpl.html',\n        controller: 'ResellerOrderSearchController as vm',\n        resolve: {\n        },\n        params: {\n            searchTerm: ''\n        }\n    });\n}\n\n// @ngInject\nfunction ResellerOrderSearchController($rootScope, $state, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.canAccess = $rootScope.canAccess;\n    vm.showSearchFields = true;\n\n    //Public methods\n    vm.toggleSearchFields = toggleSearchFields;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getOrderTypeTranslation = getOrderTypeTranslation;\n\n    activate();\n\n    function activate() {\n        vm.showSearchFields = true;\n    }\n\n    function toggleSearchFields() {\n        vm.showSearchFields = !vm.showSearchFields;\n    }\n\n    function getStatusTranslation(text) {\n        var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n        return $translate.instant('resellerorder.status' + textCapital);\n    }\n\n    function getOrderTypeTranslation(text) {\n        var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n        return $translate.instant('resellerorder.type' + textCapital);\n    }\n}\n\nangular\n    .module('resellerorder.resellerordersearch', [])\n    .config(stateConfig)\n    .controller('ResellerOrderSearchController', ResellerOrderSearchController);\n","// @ngInject\nfunction ResellerOrdersApiService($q, $window, $cookies, DS, DSHttpAdapter, ResourcesService) {\n    var endpoint = 'resellerorders';\n\n    return {\n        applyFulfillResellerOrders: applyFulfillResellerOrders,\n        getResellerOrders: getResellerOrders,\n        getResellerReturnOrders: getResellerReturnOrders,        \n        getAllResellerOrders: getAllResellerOrders,\n        create: createOrder,\n        createReturnOrder: createResellerReturnOrder,\n        createResellerReturnOrderBasedOnOrder: createResellerReturnOrderBasedOnOrder,\n        changeOrderNumber: changeOrderNumber,\n        confirm: confirmOrder,\n        confirmFulfillmentLineItemPicking: confirmFulfillmentLineItemPicking,\n        deleteResellerOrder: deleteResellerOrder,\n        deleteOrder: deleteOrder,\n        getFulfillableProducts: getFulfillableProducts,\n        getFulfilledOrders: getFulfilledOrders,\n        getFulfilledProducts: getFulfilledProducts,\n        getFulfillableLineItems: getFulfillableLineItems,\n        getFulfillableOrders: getFulfillableOrders,\n        getOrderById: getOrderById,\n        getReturnOrderById: getReturnOrderById,\n        getOrderHeaderById: getOrderHeaderById,\n        getReturnOrderProducts:getReturnOrderProducts,\n        getWarehouses: ResourcesService.apiFactory.get(endpoint + '/warehouses'),\n        getStores: ResourcesService.apiFactory.get(endpoint + '/stores'),\n        getResellers: ResourcesService.apiFactory.get(endpoint + '/resellers'),\n        getOrderCollections: ResourcesService.apiFactory.get(endpoint + '/ordercollections'),\n        getProducts: getProducts,\n        getVariantsForProduct: getVariantsForProduct,\n        upsertLineItems: upsertLineItems,\n        getResellerOrderPdf: getResellerOrderPdf,\n        getSelectedResellerOrderPdf: getSelectedResellerOrderPdf,\n        getSelectedResellerOrderZip: getSelectedResellerOrderZip,\n        getAllSearchedResellerOrderZip:getAllSearchedResellerOrderZip,\n        getResellerOrderCsv: getResellerOrderCsv,\n        setWholeOrderDeliverDate: setWholeOrderDeliverDate,\n        setWholeOrderDiscountPercent: setWholeOrderDiscountPercent,\n        setOrderDeliveryAddress: setOrderDeliveryAddress,\n        setOrderInvoiceAddress: setOrderInvoiceAddress,\n        getResellerOrderOrderPerspectivePickingList: getResellerOrderOrderPerspectivePickingList,\n        getResellerOrderProductPerspectivePickingList: getResellerOrderProductPerspectivePickingList,\n        getResellerOrderDeliveryOrder: getResellerOrderDeliveryOrder,\n        getResellerOrderInvoice: getResellerOrderInvoice,\n        getResellerOrderDeliveryNote: getResellerOrderDeliveryNote,\n        getResellerOrderByOrderNumber: getResellerOrderByOrderNumber,\n        setVariantFufillmentDeliveryDate : setVariantFufillmentDeliveryDate,\n        getAllResellerOrdersPdf: getAllResellerOrdersPdf,\n        createSalesOnClosedFulfillmentLineItems: createSalesOnClosedFulfillmentLineItems,\n        setResellerReturnOrderSaleDate:setResellerReturnOrderSaleDate,\n        // deleteResellerOrder: ResourcesService.apiFactory.delete(endpoint + '/id?'),\n    };\n\n    function getAllSearchedResellerOrderZip(request){\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/searched/zip', request, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], {type: 'application/zip'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrders.zip');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getSelectedResellerOrderZip(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/selected/zip', request, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], {type: 'application/zip'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrders.zip');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getSelectedResellerOrderPdf(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/selected/pdf', request, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrders.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function setResellerReturnOrderSaleDate(request) {\n        var deferred = $q.defer();\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/returnorder/sales', request).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.resolve(handleError);\n        });\n\n        return deferred.promise;\n    }\n\n    function setVariantFufillmentDeliveryDate(request){\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/plannedDeliveryDate', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function setOrderDeliveryAddress(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + request.orderId + '/deliveryaddressadjustment', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function setOrderInvoiceAddress(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + request.orderId + '/invoiceaddressadjustment', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function setWholeOrderDeliverDate(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + request.orderId + '/deliverydateadjustment', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function setWholeOrderDiscountPercent(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + request.orderId + '/discountpercentadjustment', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function applyFulfillResellerOrders(lineItems) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/fulfillments', lineItems).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFulfillableProducts(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/fulfillableproducts/warehouse/' + request.warehouseId, { params: request }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFulfilledOrders(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/fulfilledorders/warehouse/' + request.warehouseId, { params: request }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFulfilledProducts(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/fulfilledproducts/warehouse/' + request.warehouseId, { params: request }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFulfillableLineItems(warehouseId, minimumAvailableStock, articleId, articleVariantDetail1Id) {\n        var deferred = $q.defer();\n\n        var request = {\n            warehouseId: warehouseId,\n            minimumAvailableStock: minimumAvailableStock,\n            articleId: articleId,\n            articleVariantDetail1Id: articleVariantDetail1Id\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/fulfillablelineitems/warehouse/' + warehouseId + '/article/' + articleId + '/articleVariantDetail1Id/' + articleVariantDetail1Id, { params: request }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFulfillableOrders(warehouseId, minimumAvailableStock, articleId, articleVariantDetail1Id) {\n        var deferred = $q.defer();\n\n        var request = {\n            warehouseId: warehouseId,\n            minimumAvailableStock: minimumAvailableStock,\n            articleId: articleId,\n            articleVariantDetail1Id: articleVariantDetail1Id\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/fulfillableorders/warehouse/' + warehouseId + '/article/' + articleId + '/articleVariantDetail1Id/' + articleVariantDetail1Id, { params: request }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getResellerOrders(currentPage, searchTerm, itemsPerPage, orderStatuses, isFilterOrderForInvoice) {\n        var deferred = $q.defer();\n\n        var params = {\n            page: currentPage,\n            filter: searchTerm,\n            Limit: itemsPerPage,\n            order: null,\n            orderStatuses: orderStatuses,\n            isFilterOrderForInvoice: isFilterOrderForInvoice\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint, { params: params }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getResellerReturnOrders(currentPage, searchTerm, itemsPerPage, orderStatuses) {\n        var deferred = $q.defer();\n\n        var params = {\n            page: currentPage,\n            filter: searchTerm,\n            Limit: itemsPerPage,\n            order: null,\n            orderStatuses: orderStatuses\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/returnOrders', { params: params }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getAllResellerOrders(currentPage, searchTerm, itemsPerPage, orderStatuses) {\n        var deferred = $q.defer();\n\n        var params = {\n            page: currentPage,\n            filter: searchTerm,\n            Limit: itemsPerPage,\n            order: null,\n            orderStatuses: orderStatuses\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/allOrders', { params: params }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n\n    function getVariantsForProduct(orderId, productId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + orderId + '/products/' + productId + '/variants').then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getProducts(orderId, filter) {\n        var deferred = $q.defer();\n\n        var params = {\n            filter: filter\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + orderId + '/products/', { params: params }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function getReturnOrderProducts(orderId, filter) {\n        var deferred = $q.defer();\n\n        var params = {\n            filter: filter\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + orderId + '/returnorder/products/', { params: params }).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function upsertLineItems(lineItems) {\n        var deferred = $q.defer();\n\n        var jsonRequest = JSON.stringify(lineItems);\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + lineItems.orderId + '/lineitems', jsonRequest).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function changeOrderNumber(newOrderNumber, resellerOrderId) {\n        var deferred = $q.defer();\n\n        console.log(\"Changeing order number to: \" + newOrderNumber + \" for: \" + resellerOrderId);\n\n\n        var request = {\n            ResellerOrderId: resellerOrderId,\n            NewOrderNumber: newOrderNumber\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/changeOrderNumber', request).then(function (response){\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function createOrder(resellerOrder) {\n        var deferred = $q.defer();\n\n        console.log(\"Creating reseller order: \" + resellerOrder);\n\n        var jsonRequest = JSON.stringify(resellerOrder);\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint, jsonRequest).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    \n    function createResellerReturnOrder(resellerOrder) {\n        var deferred = $q.defer();\n\n        console.log(\"Creating reseller return order: \" + resellerOrder);\n\n        var jsonRequest = JSON.stringify(resellerOrder);\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/returnorder', jsonRequest).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function createResellerReturnOrderBasedOnOrder(resellerOrder) {\n        var deferred = $q.defer();\n\n        console.log(\"Creating reseller return order based on order: \" + resellerOrder);\n        resellerOrder.externalOrderNumber = resellerOrder.orderNumber;\n\n        var jsonRequest = JSON.stringify(resellerOrder);\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/returnOrderBasedOnOrder', jsonRequest).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function confirmOrder(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + endpoint + '/' + orderId + \"/confirmation\").then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteResellerOrder(href) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.DEL(DS.defaults.basePath + href).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteOrder(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + endpoint + '/' + orderId + \"/closure\").then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n\n    function getOrderHeaderById(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + orderId + \"/header\").then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getOrderById(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + orderId).then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function getReturnOrderById(orderId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/' + orderId + '/returnorder/').then(function (response) {\n            deferred.resolve(response.data);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getResellerOrderPdf(orderId, locale) {\n        var deferred = $q.defer();\n\n        var request = {\n            resellerOrderId: orderId,\n            locale: locale\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + orderId + '/pdf', request, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], { type: 'application/pdf' });\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'resellerOrder.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getResellerOrderCsv(orderId, locale) {\n        var url = $window.URL || $window.webkitURL;\n        var deferred = $q.defer();\n\n        var request = {\n            resellerOrderId: orderId,\n            locale: locale\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/' + orderId + '/csv', request, { responseType: 'arraybuffer' }).then(function (response) {\n            //\"attachment; filename=20200330-10072-ICA Sverige AB.csv\"\n            var blob = new Blob([response.data], { type: 'text/csv' });\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'resellerOrder.csv');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var downloadUrl = url.createObjectURL(blob);\n                a.href = downloadUrl;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function confirmFulfillmentLineItemPicking(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/pickinglist/confirm', request).then(function (response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getResellerOrderOrderPerspectivePickingList(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/orders/pickinglist', request, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrderPickingList.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n    function getResellerOrderProductPerspectivePickingList(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/products/pickinglist', request, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrderPickingList.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getAllResellerOrdersPdf(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/all/pdf', request, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrders.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getResellerOrderDeliveryOrder(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'resellerorders/deliveryorderpdf', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'text/plain'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrderDeliveryOrder.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getResellerOrderInvoice(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'resellerorders/invoicepdf', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'text/plain'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrderInvoice.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getResellerOrderDeliveryNote(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'resellerorders/deliveryorderpdf', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'text/plain'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'ResellerOrderDeliveryNote.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n\n    }\n\n    function getResellerOrderByOrderNumber(orderNumber) {\n        var deferred = $q.defer();\n\n        var request = {\n            resellerOrderNumber: orderNumber\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'resellerorders/ordernumber', request).then(function(response) {\n            var order = response.data.order;\n            deferred.resolve(order);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36012-36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s-]){1,}.(pdf|csv|xls|xlsx|zip)/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n\n    function createSalesOnClosedFulfillmentLineItems(orderIds) {\n        var request = {\n            orderIds: orderIds\n        };\n\n        var deferred = $q.defer();\n        DSHttpAdapter.POST(DS.defaults.basePath + 'resellerorders/sales', request).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('resellerorder.api', [])\n    .factory('ResellerOrdersApiService', ResellerOrdersApiService);\n","var module = angular.module('main.resellerorder');\n\nmodule.component('caResellerOrder', {\n    templateUrl: 'main/resellerorder/resellerorderview/components/resellerordercontent.cmp.tpl.html',\n    bindings: {\n        orderId: '<',\n        productNumberToExpand: '<'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($translate, $state, loadSpinnerService, ToasterService, ResellerOrdersApiService, printLanguageConfirmationDialogService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n\n    //Properties\n    vm.resellerOrder = {};\n    vm.showOrderHead = true;\n    vm.tabSelection = {\n        lineItems: true,\n        fulfillments: false\n    };\n    vm.showOrderHead = true;\n    vm.isEditingOrderNumber = false;\n    vm.editedOrderNumber = '';\n\n\n    //Methods\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.changeToOrderRows = changeToOrderRows;\n    vm.changeToFulfillmentsTab = changeToFulfillmentsTab;\n    vm.toggleOrderHead = toggleOrderHead;\n    vm.canPrintOrderPdf = canPrintOrderPdf;\n    vm.getResellerOrderPdf = getResellerOrderPdf;\n    vm.canPrintOrderCsv = canPrintOrderCsv;\n    vm.getResellerOrderCsv = getResellerOrderCsv;\n\n    vm.shouldShowPrintCsvButton = shouldShowPrintCsvButton;\n    vm.getResellerOrderInvoicePdf = getResellerOrderInvoicePdf;\n    vm.getResellerOrderDeliveryOrderPdf = getResellerOrderDeliveryOrderPdf;\n    vm.getResellerOrderPickingList = getResellerOrderPickingList;\n    vm.getResellerOrderDeliveryNotePdf = getResellerOrderDeliveryNotePdf;\n    vm.DeliveryNoteAvailable = deliveryNoteAvailable;\n    vm.createNewOrder = createNewOrder;\n    vm.createNewReturnOrder = createNewReturnOrder;\n    vm.editOrderNumber = editOrderNumber;\n    vm.tryToSaveNewOrderNumber = tryToSaveNewOrderNumber;\n\n    function onInit() {\n    }\n\n    function onChanges(change) {\n        if (change.orderId && change.orderId.currentValue) {\n            ResellerOrdersApiService.getOrderById(change.orderId.currentValue)\n                .then(function (response) {\n                    vm.resellerOrder = response.order;\n                    vm.resellerOrder.links = response.links;\n                });\n        }\n    }\n    \n    function editOrderNumber() {\n        vm.isEditingOrderNumber = true;\n        vm.editedOrderNumber = vm.resellerOrder.orderNumber;\n    }\n\n    function tryToSaveNewOrderNumber() {\n        vm.isEditingOrderNumber = false;\n        if(vm.editedOrderNumber === vm.resellerOrder.orderNumber){\n            ToasterService.showError($translate.instant('productimport.noChangesToSave') + ' ' + angular.lowercase($translate.instant('common.in') + ' ' + $translate.instant('resellerorder.orderNumber') + '!'));\n            return;\n        }\n        \n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.changeOrderNumber(vm.editedOrderNumber, vm.resellerOrder.id).then(function () {\n            vm.resellerOrder.orderNumber = vm.editedOrderNumber;\n            ToasterService.showSuccess($translate.instant('common.new') + ' ' + angular.lowercase($translate.instant('resellerorder.orderNumber')) + ': \"' + vm.editedOrderNumber + '\" ' + angular.lowercase($translate.instant('common.wasSaved') + '!'));\n        }, function (error){\n            vm.isEditingOrderNumber = true;\n            ToasterService.showError(error.message);\n        }).finally(function(){\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function createNewOrder() {\n        $state.go('resellerorder.resellerordercreate');\n    }\n\n    function createNewReturnOrder() {\n        $state.go('resellerorder.resellerreturnordercreate');\n    }\n\n    function changeToOrderRows() {\n        setNoTabSelection();\n        vm.tabSelection.lineItems = true;\n    }\n\n    function changeToFulfillmentsTab() {\n        setNoTabSelection();\n        vm.tabSelection.fulfillments = true;\n    }\n\n    function setNoTabSelection() {\n        var keys = Object.keys(vm.tabSelection);\n        _.forEach(keys, function (key) {\n            vm.tabSelection[key] = false;\n        });\n    }\n\n    function toggleOrderHead() {\n        vm.showOrderHead = !vm.showOrderHead;\n    }\n\n    function getStatusTranslation(text) {\n        if (!text) {\n            return \"\";\n        }\n        var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n        return $translate.instant('resellerorder.status' + textCapital);\n    }\n\n    function canPrintOrderPdf() {\n        var hasLink = _.find(vm.resellerOrder.links, function (o) { return o.rel === 'canPrintPdf'; }) !== undefined;\n        return hasLink;\n    }\n    function getResellerOrderPdf() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + ' PDF?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getResellerOrderPdf(vm.orderId, result.locale).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n    function canPrintOrderCsv() {\n        var hasLink = _.find(vm.resellerOrder.links, function (o) { return o.rel === 'canPrintCsv'; }) !== undefined;\n        return hasLink;\n    }\n    function getResellerOrderCsv() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getResellerOrderCsv(vm.orderId, result.locale).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function getResellerOrderInvoicePdf() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                var request = {\n                    locale: result.locale\n                };\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getResellerOrderInvoice(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function getResellerOrderDeliveryOrderPdf() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                var request = {\n                    locale: result.locale\n                };\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getResellerOrderDeliveryOrder(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function getResellerOrderPickingList() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                var request = {\n                    resellerOrderIds: [vm.orderId],\n                    locale: result.locale\n                };\n                loadSpinnerService.start('mainSpinner');\n\n                ResellerOrdersApiService.getResellerOrderOrderPerspectivePickingList(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function getResellerOrderDeliveryNotePdf() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                var request = {\n                    resellerOrderIds: [vm.orderId],\n                    locale: result.locale\n                };\n                loadSpinnerService.start('mainSpinner');\n\n                ResellerOrdersApiService.getResellerOrderDeliveryNote(request).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function deliveryNoteAvailable(){\n        return (vm.resellerOrder.status === 'Open')\n    }\n\n    function shouldShowPrintCsvButton() {\n        return vm.resellerOrder.currencyCode === 'SEK';\n    }\n}\n","var module = angular.module('main.resellerorder');\n\nmodule.component('caResellerOrderRows', {\n    templateUrl: 'main/resellerorder/resellerorderview/components/resellerorderrows.cmp.tpl.html',\n    bindings: {\n        resellerOrder: '<',\n        productNumberToExpand: '<'\n    },\n    controllerAs: 'vm',\n    controller: componentController\n});\n\n// @ngInject\nfunction componentController($state, $window) {\n    var vm = this;\n\n    //Properties\n    vm.articleGroupedItemLines = [];\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.getArticleFulfillmentDateRangeString = getArticleFulfillmentDateRangeString;\n    vm.getOrderedQuantitySum = getOrderedQuantitySum;\n    vm.getFulfilledQuantity = getFulfilledQuantity;\n    vm.getLeftToBeFulfilledQuantity = getLeftToBeFulfilledQuantity;\n    vm.getTotalFulfillableQuantity = getTotalFulfillableQuantity;\n    vm.getTotalAmount = getTotalAmount;\n    vm.getOrderFulfilledQuantity = getOrderFulfilledQuantity;\n    vm.getOrderLeftToBeFulfilledQuantity = getOrderLeftToBeFulfilledQuantity;\n    vm.getOrderTotalFulfillableQuantity = getOrderTotalFulfillableQuantity;\n    vm.getOrderTotalAmount = getOrderTotalAmount;\n    vm.toggleExpandAll = toggleExpandAll;\n    vm.goToProduct = goToProduct;\n\n    function onInit() {\n\n    }\n\n    function onChanges(changes) {\n        vm.articleGroupedItemLines = [];\n        groupRowsByArticle();\n\n        if (vm.productNumberToExpand && vm.productNumberToExpand !== '') {\n            expandProduct(vm.productNumberToExpand);\n        }\n    }\n\n    function goToProduct(articleId) {\n        var url = $state.href('product.articles.article', {articleId: articleId});\n        $window.open(url,'_blank');\n    }\n\n    function toggleExpandAll() {\n        var allAreExpanded = true;\n        _.forEach(vm.articleGroupedItemLines, function (o) {\n            if (!o.showRows || o.showRows === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.articleGroupedItemLines, function(art) {\n            if (!allAreExpanded) {\n                art.showRows = true;\n            } else {\n                art.showRows = false;\n            }\n        });\n    }\n\n    function expandProduct(productNumber) {\n        _.forEach(vm.articleGroupedItemLines, function (art) {\n            if (productNumber && productNumber !== '' && art.AlternativeArticleNumber === productNumber) {\n                art.showRows = true;\n            }\n        });\n    }\n\n    function groupRowsByArticle() {\n        var lineItemGroups = _.groupBy(vm.resellerOrder.lineItems, function(item) { return item.articleId; });\n        _.forEach(lineItemGroups, function (group) {\n            var groupRow = {\n                AlternativeArticleNumber: group[0].alternativeArticleNumber,\n                ArticleName: group[0].articleName,\n                DisplayArticleNumber: group[0].displayArticleNumber,\n                FulfillmentDateRange: getArticleFulfillmentDateRangeString(group),\n                FulfilledQuantity: getFulfilledQuantity(group),\n                LeftToBeFulfilledQuantity: getLeftToBeFulfilledQuantity(group),\n                TotalFulfillableQuantity: getTotalFulfillableQuantity(group),\n                AveragePricePerPiece: getAveragePricePerPiece(group),\n                AveragePriceMinusDiscountPerPiece: getAveragePriceMinusDiscountPerPiece(group),\n                TotalAmount: getTotalAmount(group),\n                LineItems: _.orderBy(group, function(lineItem) { return [lineItem.variantDetailName, lineItem.variantDetail2SortOrder]; })\n            };\n\n            vm.articleGroupedItemLines.push(groupRow);\n        });\n    }\n\n    function getArticleFulfillmentDateRangeString(lineItems) {\n        var datesString = \"\";\n        var dates = [];\n        _.forEach(lineItems, function(lineItem) {\n            dates = dates.concat(lineItem.fullfillmentDates);\n            _.forEach(lineItem.fulfillmentDates, function(dateString) {\n                dates.add(Date.parse(dateString));\n            });\n        });\n\n        var minDate = _.min(dates);\n        var maxDate = _.max(dates);\n        if (minDate !== undefined && maxDate !== undefined) {\n            if (minDate !== maxDate) {\n                datesString = minDate.toString().substring(0,16) + \" - \" + maxDate.toString().substring(0,16);\n                datesString = datesString.replace(/T/g, ' ');\n            } else if (minDate === maxDate) {\n                datesString = minDate.toString().substring(0,16);\n                datesString = datesString.replace(/T/g, ' ');\n            }\n        }\n        return datesString;\n    }\n\n    function getOrderedQuantitySum(lineItems) {\n        var quantity = _.sumBy(lineItems, function(lineItem) {\n            return lineItem.quantity;\n        });\n        return quantity;\n    }\n\n    function getFulfilledQuantity(lineItems) {\n        return _.sumBy(lineItems, function(lineItem) {\n            return lineItem.fulfilledQuantity;\n        });\n    }\n\n    function getLeftToBeFulfilledQuantity(lineItems) {\n        var sum = _.sumBy(lineItems, function(lineItem) {\n            return lineItem.quantity - lineItem.fulfilledQuantity;\n        });\n        sum = Math.max(sum, 0);\n        return sum;\n    }\n\n    function getTotalFulfillableQuantity(lineItems) {\n        return _.sumBy(lineItems, function(lineItem) {\n            return lineItem.quantity;\n        });\n    }\n\n    function getAveragePricePerPiece(lineItems) {\n        var count = 0;\n        var totalAmount = 0;\n        var average = 0;\n        _.forEach(lineItems, function(lineItem) {\n            totalAmount += lineItem.amount;\n            count += 1;\n        });\n        average = totalAmount / count;\n        return average;\n    }\n    function getAveragePriceMinusDiscountPerPiece(lineItems) {\n        var count = 0;\n        var totalAmount = 0;\n        var average = 0;\n        _.forEach(lineItems, function(lineItem) {\n            totalAmount += lineItem.amount - lineItem.discountAmountPerItem;\n            count += 1;\n        });\n        average = totalAmount / count;\n        return average;\n    }\n\n    function getTotalAmount(lineItems) {\n        return _.sumBy(lineItems, function(lineItem) {\n            return (lineItem.amount - lineItem.discountAmountPerItem) * lineItem.quantity;\n        });\n    }\n\n    function getOrderFulfilledQuantity() {\n        var lineItems = vm.resellerOrder.lineItems;\n        return getFulfilledQuantity(lineItems);\n    }\n\n    function getOrderLeftToBeFulfilledQuantity() {\n        var lineItems = vm.resellerOrder.lineItems;\n        return getLeftToBeFulfilledQuantity(lineItems);\n    }\n\n    function getOrderTotalFulfillableQuantity() {\n        var lineItems = vm.resellerOrder.lineItems;\n        return getTotalFulfillableQuantity(lineItems);\n    }\n\n    function getOrderTotalAmount() {\n        var lineItems = vm.resellerOrder.lineItems;\n        return getTotalAmount(lineItems);\n    }\n\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.resellerorderview', {\n        url: '/{orderId}',\n        templateUrl: 'main/resellerorder/resellerorderview/resellerorderview.tpl.html',\n        controller: 'ResellerOrderViewController as vm',\n        resolve: {\n            resellerOrder: resellerOrderResolver\n        },\n        params: {\n            searchTerm: '',\n            productNumber: '',\n            shouldUseScannerNavigation: false\n        }\n    });\n}\n\n// @ngInject\nfunction resellerOrderResolver($stateParams, ResellerOrdersApiService) {\n    return ResellerOrdersApiService.getOrderHeaderById($stateParams.orderId);\n}\n\n// @ngInject\nfunction ResellerOrderViewController($rootScope, $state, $stateParams, $translate, resellerOrder) {\n    var vm = this;\n\n    //Properties\n    vm.selectedOrder = resellerOrder.order;\n    vm.selectedOrder.links = resellerOrder.links;\n    vm.canAccess = $rootScope.canAccess;\n    vm.showSearchFields = true;\n    vm.productNumberToExpand = $stateParams.productNumber;\n\n    //Public methods\n    vm.toggleSearchFields = toggleSearchFields;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getOrderTypeTranslation = getOrderTypeTranslation;\n    vm.showSearchToggle = showSearchToggle;\n\n    activate();\n\n    function activate() {\n        vm.showSearchFields = true;\n        if (vm.selectedOrder && vm.selectedOrder.id) {\n            vm.showSearchFields = false;\n        }\n    }\n\n    function toggleSearchFields() {\n        vm.showSearchFields = !vm.showSearchFields;\n    }\n\n    function showSearchToggle() {\n        return vm.selectedOrder && vm.selectedOrder.id;\n    }\n\n    function getStatusTranslation(text) {\n        var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n        return $translate.instant('resellerorder.status' + textCapital);\n    }\n\n    function getOrderTypeTranslation(text) {\n        var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n        return $translate.instant('resellerorder.type' + textCapital);\n    }\n}\n\nangular\n    .module('resellerorder.resellerorderview', [])\n    .config(stateConfig)\n    .controller('ResellerOrderViewController', ResellerOrderViewController);\n","var module = angular.module('main.resellerorder');\n\nmodule.component('createResellerReturnOrderHeader',{\n    templateUrl: 'main/resellerorder/resellerreturnordercreate/components/createreturnorderheader.cmp.tpl.html',\n    bindings: {\n        resellerOrder: '='\n    },\n    controllerAs: 'vm',\n    controller: ['$window','$scope','ResellerOrdersApiService','ToasterService',componentController]\n});\n\n// @ngInject\nfunction componentController($window, $scope, ResellerOrdersApiService, ToasterService) {\n    var vm = this;\n\n    //Properties\n    vm.stores = [];\n    vm.resellers = [];\n    vm.warehouses = [];\n    vm.collections = [];\n    vm.selectedReseller = {};\n    vm.selectedSaleLocation = {};\n    vm.selectedWarehouse = {};\n    vm.selectedCollection= {};\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function () { return vm.selectedReseller.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                vm.resellerOrder.resellerId = newValue;\n            }\n        });\n        $scope.$watch(function () { return vm.selectedSaleLocation.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                vm.resellerOrder.saleLocationId = newValue;\n                saveLastUsedSaleLocationId(newValue);\n            }\n        });\n        $scope.$watch(function () { return vm.selectedWarehouse.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                vm.resellerOrder.warehouseId = newValue;\n                saveLastUsedWarehouseId(newValue);\n            }\n        });\n        $scope.$watch(function () { return vm.selectedCollection.id; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                vm.resellerOrder.collectionId = newValue;\n                saveLastUsedCollectionId(newValue);\n            }\n        });\n    }\n\n    function onInit() {\n        ResellerOrdersApiService.getWarehouses().then(function(response) {\n            vm.warehouses = response.warehouses;\n            var lastUsedWarehouseId = getLastUsedWarehouseId();\n            vm.selectedWarehouse = _.find(vm.warehouses, function(o) { return o.id === lastUsedWarehouseId; });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        ResellerOrdersApiService.getStores().then(function(response) {\n            vm.stores = response.stores;\n            var lastUsedSaleLocationId = getLastUsedSaleLocationId();\n            vm.selectedSaleLocation = _.find(vm.stores, function(o) { return o.id === lastUsedSaleLocationId; });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        ResellerOrdersApiService.getResellers().then(function(response) {\n            vm.resellers = response.resellers;\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n\n        ResellerOrdersApiService.getOrderCollections().then(function(response) {\n            vm.collections = response;\n            var lastUsedCollectionId = getLastUsedCollectionId();\n            vm.selectedCollection = _.find(vm.collections, function(o) { return o.id === lastUsedCollectionId; });\n        }, function(error) {\n            ToasterService.showError(error.message);\n        });\n    }\n    function onChanges() {\n    }\n\n    function getLastUsedSaleLocationId() {\n        if ($window.localStorage.createorderheader_lastUsedSaleLocationId) {\n            var lastUsedSaleLocationId = parseInt($window.localStorage.getItem('createorderheader_lastUsedSaleLocationId'));\n            if (isNaN(lastUsedSaleLocationId)) { return undefined; }\n            return lastUsedSaleLocationId;\n        }\n        return undefined;\n    }\n    function getLastUsedWarehouseId() {\n        if ($window.localStorage.createorderheader_lastUsedWarehouseId) {\n            var lastUsedWarehouseId = parseInt($window.localStorage.getItem('createorderheader_lastUsedWarehouseId'));\n            if (isNaN(lastUsedWarehouseId)) { return undefined; }\n            return lastUsedWarehouseId;\n        }\n        return undefined;\n    }\n    function getLastUsedCollectionId() {\n        if ($window.localStorage.createorderheader_lastUsedCollectionId) {\n            var lastUsedCollectionId = parseInt($window.localStorage.getItem('createorderheader_lastUsedCollectionId'));\n            if (isNaN(lastUsedCollectionId)) { return undefined; }\n            return lastUsedCollectionId;\n        }\n        return undefined;\n    }\n    function saveLastUsedSaleLocationId(id) {\n        $window.localStorage.setItem('createorderheader_lastUsedSaleLocationId', id);\n    }\n    function saveLastUsedWarehouseId(id) {\n        $window.localStorage.setItem('createorderheader_lastUsedWarehouseId', id);\n    }\n    function saveLastUsedCollectionId(id) {\n        $window.localStorage.setItem('createorderheader_lastUsedCollectionId', id);\n    }\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.resellerreturnordercreate', {\n        url: '/newreturnorder/',\n        templateUrl: 'main/resellerorder/resellerreturnordercreate/resellerreturnordercreate.tpl.html',\n        controller: 'ResellerReturnOrderCreateController as vm',\n        resolve: {\n            resellerOrder: function() {\n                return {\n                    links: [],\n                    order: {\n                        externalOrderNumber: '',\n                        id: 0,\n                        // lineItems: [],\n                        resellerId: 0,\n                        saleLocationId: 0,\n                        status: 'Created',\n                        warehouseId: 0\n                    }\n                };\n            }\n        },\n        params: {\n        }\n    });\n}\n\n// @ngInject\nfunction ResellerReturnOrderCreateController($rootScope, $state, $translate, resellerOrder, ResellerOrdersApiService, confirmationDialogService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    //Properties\n    vm.resellerOrder = resellerOrder.order;\n    vm.resellerOrder.links = resellerOrder.links;\n    vm.links = resellerOrder.links;\n    vm.canAccess = $rootScope.canAccess;\n\n    //Public methods\n    vm.canCreateOrderHeader = canCreateOrderHeader;\n    vm.createOrderHeader = createOrderHeader;\n    vm.createNewOrder = createNewOrder;\n\n    activate();\n\n    function activate() {\n    }\n\n    function createNewOrder() {\n        $state.go('resellerorder.resellerordercreate');\n    }\n\n    function canCreateOrderHeader() {\n        var hasSetReseller = vm.resellerOrder.resellerId > 0;\n        var hasSetSaleLocation = vm.resellerOrder.saleLocationId > 0;\n        var hasSetWarehouse = vm.resellerOrder.warehouseId > 0;\n        var hasSetCollection = vm.resellerOrder.collectionId > 0;\n\n        return hasSetReseller && hasSetSaleLocation && hasSetWarehouse && hasSetCollection;\n    }\n\n    function createOrderHeader() {\n        //call backend, save order\n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.createReturnOrder(vm.resellerOrder).then(function (response) {\n            var orderId = response.data.id;\n            $state.go('resellerorder.resellerreturnordermodify', { orderId: orderId });\n        }, function (error) {\n            console.log(error);\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).then(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n}\n\nangular\n    .module('resellerorder.resellerreturnordercreate', [])\n    .config(stateConfig)\n    .controller('ResellerReturnOrderCreateController', ResellerReturnOrderCreateController);\n","var module = angular.module('main.resellerorder');\n\nmodule.component('createResellerReturnOrderAddLineItems',{\n    templateUrl: 'main/resellerorder/resellerreturnordermodify/components/addlineitems.cmp.tpl.html',\n    bindings: {\n        resellerOrder: '=',\n        onLineItemChanged: '&',\n        onVariantChanged: '&'\n    },\n    controllerAs: 'vm',\n    controller: ['$scope', componentController]\n});\n\n// @ngInject\nfunction componentController($scope) {\n    var vm = this;\n\n    //Properties\n    vm.excludedArticles = [];\n    vm.tabSelection = {\n        overview: false,\n        quantity: true,\n        amount: false\n    };\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.receiveArticles = receiveArticles;\n    vm.saveLineItem = saveLineItem;\n    vm.saveVariant = saveVariant;\n    vm.canModifyLineItems = canModifyLineItems;\n    vm.changeToTab = changeToTab;\n\n    function onInit() {\n        $scope.$watch(function () { return vm.resellerOrder.lineItems.length; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                updateArticlesToExclude();\n            }\n        });\n    }\n    function onChanges() {\n    }\n\n    function changeToTab(tab) {\n        switch (tab) {\n            default:\n            case 'overview': vm.tabSelection = {\n                    overview: true,\n                    quantity: false,\n                    amount: false\n                };\n                break;\n            case 'quantity': vm.tabSelection = {\n                    overview: false,\n                    quantity: true,\n                    amount: false\n                };\n                break;\n            case 'amount': vm.tabSelection = {\n                    overview: false,\n                    quantity: false,\n                    amount: true\n                };\n                break;\n        }\n    }\n\n    function updateArticlesToExclude() {\n        vm.excludedArticles = _.chain(vm.resellerOrder.lineItems)\n            .groupBy('articleId')\n            .map((value, key) => ({ articleId: parseInt(key) }))\n            .value();\n    }\n\n    function canModifyLineItems() {\n        var canModifyLineItems = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n\n        return canModifyLineItems;\n    }\n\n    function saveLineItem(lineItem) {\n        vm.onLineItemChanged({ lineItem: lineItem });\n    }\n    function saveVariant(variant) {\n        vm.onVariantChanged({ variant: variant });\n    }\n\n    function receiveArticles(articles) {\n        if (!vm.resellerOrder.lineItems) { vm.resellerOrder.lineItems = []; }\n\n        _.forEach(articles, function(art) {\n            _.forEach(art.variants, function(variant) {\n                var newListItem = {\n                    amount: variant.price,\n                    articleId: variant.articleId,\n                    articleName: variant.articleName,\n                    articleVariantId: variant.id,\n                    fulfilledQuantity: 0,\n                    id: 0,\n                    links: [{ rel: 'modify' }],\n                    orderId: vm.resellerOrder.id,\n                    plannedDeliveryDateUtc: new Date(variant.plannedDeliveryDate),\n                    quantity: 0,\n                    status: 'open',\n                    variantDetail1Name: variant.variantDetail1Name,\n                    variantDetail2Name: variant.variantDetail2Name,\n                    variantDetail2SortOrder: variant.variantDetail2SortOrder,\n                    vatAmount: variant.vatAmount,\n                    vatRate: variant.vatRate\n                };\n\n                vm.resellerOrder.lineItems.push(newListItem);\n            });\n        });\n    }\n}\n","angular.module('components.createResellerOrderArticlesAmount', [])\n    .component('createResellerOrderArticlesAmount', {\n        templateUrl: 'main/resellerorder/resellerordermodify/components/articlelist_amount.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            resellerOrder: '=',\n            disabled: '<',\n            onArticleSelected: '&',\n            onLineItemChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($scope, $translate, confirmationDialogService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    vm.lineItemsGroupedByArticle = [];\n\n    //Methods\n    vm.viewOrderArticle = viewOrderArticle;\n    vm.absolute = absolute;\n    vm.groupBy = groupBy;\n    vm.saveLineItem = saveLineItem;\n    vm.canModifyLineItem = canModifyLineItem;\n    vm.getVariant1s = getVariant1s;\n    vm.getVariant2s = getVariant2s;\n    vm.toggleExpandAll = toggleExpandAll;\n    vm.canClearRow = canClearRow;\n    vm.confirmClearRow = confirmClearRow;\n    vm.removeArticleFromOrder = removeArticleFromOrder;\n    vm.canDeleteArticleFromOrder = canDeleteArticleFromOrder;\n    vm.canUpdateWholeRow = canUpdateWholeRow;\n    vm.updateWholeRow = updateWholeRow;\n    vm.getProductGrossPriceSum = getProductGrossPriceSum;\n    vm.getVariantGrossPriceAverage = getVariantGrossPriceAverage;\n\n    function onInit() {\n        if (vm.resellerOrder.lineItems === undefined) {\n            vm.resellerOrder.lineItems = [];\n        } else {\n            regroupLineItemsOnArticle();\n        }\n\n        $scope.$watch(function () { return vm.resellerOrder.lineItems.length; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                regroupLineItemsOnArticle();\n            }\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    function getVariantGrossPriceAverage(variant) {\n        var sumPrice = 0, sumTotalQuantity = 0;\n        sumPrice += _.sumBy(variant.lineItems, function(li) {\n            sumTotalQuantity += li.quantity;\n            return li.amount * li.quantity;\n        });\n        return sumPrice / (sumTotalQuantity === 0 ? 1 : sumTotalQuantity);\n    }\n\n    function getProductGrossPriceSum(article) {\n        var sumPrice = 0;\n        _.forEach(article.lineItemsGroupedOnVariant1, function(liGrp) {\n            sumPrice += _.sumBy(liGrp.lineItems, function(li) {\n                return li.amount * li.quantity;\n            });\n        });\n        return sumPrice;\n    }\n\n    function removeArticleFromOrder(article) {\n        if (!article || !article.lineItemsGroupedOnVariant1) { return false; }\n\n        confirmationDialogService.showDialog($translate.instant(\"resellerorder.confirmRemoveArticle\"), 'warning').then(function (result) {\n            if (result === true) {\n                _.forEach(article.lineItemsGroupedOnVariant1, function(variant1) {\n                    _.forEach(variant1.lineItems, function(li) {\n                        if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                            li.amount = 0;\n                            vm.onLineItemChanged({ lineItem: li });\n                        }\n                    });\n                });\n                vm.resellerOrder.lineItems = _.filter(vm.resellerOrder.lineItems, function(o) {\n                    return o.articleId !== parseInt(article.article.id);\n                });\n            }\n        });\n    }\n    function canDeleteArticleFromOrder(lineItemsGroupedOnVariant1) {\n        if (!lineItemsGroupedOnVariant1) { return false; }\n\n        var canDelete = true;\n        _.forEach(lineItemsGroupedOnVariant1, function(variant1) {\n            _.forEach(variant1.lineItems, function(li) {\n                if (_.find(li.links, function(l) { return l.rel === 'delete'; }) === undefined) {\n                    canDelete = false;\n                }\n            });\n        });\n        return canDelete;\n    }\n\n    function canClearRow(variant1) {\n        var canUpdateWholeRow = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canUpdateWholeRow;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function confirmClearRow(lineItemsGroupedOnVariant1) {\n        confirmationDialogService.showDialog($translate.instant(\"resellerorder.confirmClearRow\"), 'warning').then(function (result) {\n            if (result === true) {\n                _.forEach(lineItemsGroupedOnVariant1.lineItems, function(li) {\n                    if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                        li.amount = 0;\n                        vm.onLineItemChanged({ lineItem: li });\n                    }\n                });\n                lineItemsGroupedOnVariant1.wholeRowAmount = '';\n            }\n        });\n    }\n\n    function canUpdateWholeRow(variant1) {\n        var canUpdateWholeRow = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canUpdateWholeRow;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function updateWholeRow(variant1, wholeRowAmount) {\n        if (!variant1) { return; }\n        if (!variant1.lineItems) { return; }\n        if (!wholeRowAmount || wholeRowAmount === '') { return; }\n\n        var lineItem = _.find(variant1.lineItems, function(o) { return o.amount > 0; });\n        if (lineItem !== undefined) {\n            confirmationDialogService.showDialog($translate.instant('resellerorder.confirmUpdateWholeRow'), $translate.instant('common.warning')).then(function (result) {\n                if (result === true) {\n                    _.forEach(variant1.lineItems, function(li) {\n                        if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                            li.amount = wholeRowAmount;\n                            vm.onLineItemChanged({ lineItem: li });\n                        }\n                    });\n                }\n                variant1.wholeRowAmount = '';\n            });\n        } else {\n            _.forEach(variant1.lineItems, function(li) {\n                if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                    li.amount = wholeRowAmount;\n                    vm.onLineItemChanged({ lineItem: li });\n                }\n            });\n            variant1.wholeRowAmount = '';\n        }\n    }\n\n    function toggleExpandAll() {\n        var allAreExpanded = true;\n        _.forEach(vm.lineItemsGroupedByArticle, function (o) {\n            if (!o.article.showRows || o.article.showRows === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.lineItemsGroupedByArticle, function(art) {\n            if (!allAreExpanded) {\n                art.article.showRows = true;\n            } else {\n                art.article.showRows = false;\n            }\n        });\n    }\n\n    function getVariant1s(lineItems) {\n        var variants = _.chain(lineItems)\n            .groupBy('variantDetail1Name')\n            .map((value, key) => ({ variantDetail1Name: key, lineItems: value }))\n            .value();\n\n        return variants;\n    }\n    function getVariant2s(lineItems) {\n        var variants = _.map(lineItems, 'variantDetail2Name');\n\n        return variants;\n    }\n\n    function canModifyLineItem(lineItem) {\n        var canModifyLineItems = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canModifyLineItems;\n\n        //TODO look on each lineitem if able to upsert\n        // if (lineItem === undefined) { return false; }\n        // if (!lineItem.links) { lineItem.links = []; }\n        // var canModifyLineItem = _.find(lineItem.links, function(o) { return o.rel === 'modify'; }) !== undefined;\n\n        // return canModifyLineItem;\n    }\n\n    function regroupLineItemsOnArticle() {\n        vm.resellerOrder.lineItems = _.sortBy(vm.resellerOrder.lineItems, ['variantDetail1Name', 'variantDetail2SortOrder']);\n        vm.lineItemsGroupedByArticle = _.chain(vm.resellerOrder.lineItems)\n            // Group the elements of Array based on `color` property\n            .groupBy('articleId')\n            // `key` is group's name (color), `value` is the array of objects\n            .map((value, key) => ({\n                article: {\n                    displayArticleNumber: value.length > 0 ? value[0].displayArticleNumber : '',\n                    articleName: value.length > 0 ? value[0].articleName : '',\n                    id: key,\n                    showRows: false\n                }, lineItemsGroupedOnVariant1: regroupLineItemsOnVariant1(value) }))\n            .value();\n    }\n    function regroupLineItemsOnVariant1(lineItems) {\n        var lineItemsGroupedByVariant1 = _.chain(lineItems)\n            .groupBy('variantDetail1Name')\n            .map((value, key) => ({\n                variantDetail1Name: key,\n                lineItems: value\n            }))\n            .value();\n        return lineItemsGroupedByVariant1;\n    }\n\n    function groupBy(array, field) {\n        return _.groupBy(array, field);\n    }\n\n    function saveLineItem(lineItem) {\n        vm.onLineItemChanged({ lineItem: lineItem });\n    }\n\n    function viewOrderArticle(article) {\n        vm.onArticleSelected({ article: article });\n    }\n\n    function absolute(number) {\n        if (_.isNumber(number)) {\n            return Math.abs(number);\n        }\n        return 0;\n    }\n}\n","angular.module('components.createResellerReturnOrderArticlesOverview', [])\n    .component('createResellerReturnOrderArticlesOverview', {\n        templateUrl: 'main/resellerorder/resellerreturnordermodify/components/articlelist_overview.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            resellerOrder: '=',\n            disabled: '<',\n            onArticleSelected: '&',\n            onLineItemChanged: '&'\n        },\n        controller: ['$scope', '$state', '$window', '$translate', 'confirmationDialogService', controller]\n    });\n\n// @ngInject\nfunction controller($scope, $state, $window, $translate, confirmationDialogService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    vm.lineItemsGroupedByArticle = [];\n\n    //Methods\n    vm.viewOrderArticle = viewOrderArticle;\n    vm.absolute = absolute;\n    vm.groupBy = groupBy;\n    vm.saveLineItem = saveLineItem;\n    vm.canModifyLineItem = canModifyLineItem;\n    vm.toggleExpandAll = toggleExpandAll;\n    vm.removeArticleFromOrder = removeArticleFromOrder;\n    vm.canDeleteArticleFromOrder = canDeleteArticleFromOrder;\n    vm.getStatusTranslation = getStatusTranslation;\n    vm.getProductGrossPriceSum = getProductGrossPriceSum;\n    vm.getTotalGrossPriceSum = getTotalGrossPriceSum;\n    vm.getProductGrossPrice = getProductGrossPrice;\n    vm.getProductQuantitySum = getProductQuantitySum;\n    vm.getTotalQuantitySum = getTotalQuantitySum;\n    vm.getProductUnfulfilledQuantitySum = getProductUnfulfilledQuantitySum;\n    vm.getFinalAmount = getFinalAmount;\n    vm.goToProduct = goToProduct;\n\n    function onInit() {\n        if (vm.resellerOrder.lineItems === undefined) {\n            vm.resellerOrder.lineItems = [];\n        } else {\n            regroupLineItems();\n        }\n\n        $scope.$watch(function () { return vm.resellerOrder.lineItems.length; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                regroupLineItems();\n            }\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    function goToProduct(articleId) {\n        var url = $state.href('product.articles.article', {articleId: articleId});\n        $window.open(url,'_blank');\n    }\n\n    function getFinalAmount(lineItem) {\n        var discountPercent = lineItem.discountPercent ? lineItem.discountPercent : 0;\n        return lineItem.amount * (1 - discountPercent);\n    }\n\n    function getProductUnfulfilledQuantitySum(article) {\n        var sumQty = 0;\n        sumQty += _.sumBy(article.lineItems, function(li) {\n            return li.fulfilledQuantity;\n        });\n        return sumQty;\n    }\n\n    function getProductGrossPriceSum(article) {\n        var sumPrice = 0;\n        sumPrice += _.sumBy(article.lineItems, function(li) {\n            return li.amount * li.quantity;\n        });\n        return sumPrice;\n    }\n\n    function getTotalGrossPriceSum() {\n        var sumPrice = 0;\n        _.forEach(vm.lineItemsGroupedByArticle, function(o) {\n            sumPrice += getProductGrossPriceSum(o);\n        });\n        return sumPrice;\n    }\n\n    function getProductGrossPrice(article) {\n        var sumPrice = 0, sumTotalQuantity = 0;\n        sumPrice += _.sumBy(article.lineItems, function(li) {\n            sumTotalQuantity += li.quantity;\n            return li.amount * li.quantity;\n        });\n        return sumPrice / (sumTotalQuantity === 0 ? 1 : sumTotalQuantity);\n    }\n\n    function getProductQuantitySum(article) {\n        var sumQty = 0;\n        sumQty += _.sumBy(article.lineItems, function(li) {\n            return li.quantity;\n        });\n        return sumQty;\n    }\n\n    function getTotalQuantitySum() {\n        var sumQty = 0;\n        _.forEach(vm.lineItemsGroupedByArticle, function(o) {\n            sumQty += getProductQuantitySum(o);\n        });\n        return sumQty;\n    }\n\n    function getStatusTranslation(text) {\n        if (text) {\n            var textCapital = text.substr(0, 1).toUpperCase() + text.substr(1, text.length - 1);\n            return $translate.instant('resellerorder.status' + textCapital);\n        }\n    }\n\n    function removeArticleFromOrder(article) {\n        if (!article) { return false; }\n\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmRemoveArticle'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                _.forEach(article.lineItems, function(li) {\n                    if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                        li.quantity = 0;\n                        vm.onLineItemChanged({ lineItem: li });\n                    }\n                });\n                vm.resellerOrder.lineItems = _.filter(vm.resellerOrder.lineItems, function(o) {\n                    return o.articleId !== parseInt(article.article.id);\n                });\n            }\n        });\n    }\n    function canDeleteArticleFromOrder(lineItemsGroupedOnArticle) {\n        if (!lineItemsGroupedOnArticle) { return false; }\n\n        var canDelete = true;\n        _.forEach(lineItemsGroupedOnArticle.lineItems, function(li) {\n            if (_.find(li.links, function(l) { return l.rel === 'delete'; }) === undefined) {\n                canDelete = false;\n            }\n        });\n        return canDelete;\n    }\n\n    function toggleExpandAll() {\n        var allAreExpanded = true;\n        _.forEach(vm.lineItemsGroupedByArticle, function (o) {\n            if (!o.article.showRows || o.article.showRows === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.lineItemsGroupedByArticle, function(art) {\n            if (!allAreExpanded) {\n                art.article.showRows = true;\n            } else {\n                art.article.showRows = false;\n            }\n        });\n    }\n\n    function canModifyLineItem(lineItem) {\n        var canModifyLineItems = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canModifyLineItems;\n    }\n\n    function regroupLineItems() {\n        vm.resellerOrder.lineItems = _.sortBy(vm.resellerOrder.lineItems, ['variantDetail1Name', 'variantDetail2SortOrder']);\n        vm.lineItemsGroupedByArticle = _.chain(vm.resellerOrder.lineItems)\n            // Group the elements of Array based on `color` property\n            .groupBy('articleId')\n            // `key` is group's name (color), `value` is the array of objects\n            .map((value, key) => ({\n                article: {\n                    displayArticleNumber: value.length > 0 ? value[0].displayArticleNumber : '',\n                    articleName: value.length > 0 ? value[0].articleName : '',\n                    id: key,\n                    showRows: false\n                }, lineItems: value }))\n            .value();\n\n        _.forEach(vm.lineItemsGroupedByArticle, function(lineItemArticle) {\n            _.forEach(lineItemArticle.lineItems, function(lineItem) {\n                lineItem.discountDisplayPercent = lineItem.discountPercent * 100 + '%';\n            });\n        });\n    }\n\n    function groupBy(array, field) {\n        return _.groupBy(array, field);\n    }\n\n    function saveLineItem(lineItem) {\n        vm.onLineItemChanged({ lineItem: lineItem });\n    }\n\n    function viewOrderArticle(article) {\n        vm.onArticleSelected({ article: article });\n    }\n\n    function absolute(number) {\n        if (_.isNumber(number)) {\n            return Math.abs(number);\n        }\n        return 0;\n    }\n}\n","angular.module('components.createResellerReturnOrderArticlesQuantity', [])\n    .component('createResellerReturnOrderArticlesQuantity', {\n        templateUrl: 'main/resellerorder/resellerreturnordermodify/components/articlelist_quantity.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            resellerOrder: '=',\n            disabled: '<',\n            onArticleSelected: '&',\n            onLineItemChanged: '&',\n            onVariantChanged: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($rootScope, $scope, $state, $window, $translate, ResellerOrdersApiService, confirmationDialogService) {\n    var vm = this;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    //Properties\n    vm.lineItemsGroupedByArticle = [];\n\n    //Methods\n    vm.viewOrderArticle = viewOrderArticle;\n    vm.absolute = absolute;\n    vm.groupBy = groupBy;\n    vm.saveLineItem = saveLineItem;\n    vm.saveVariant = saveVariant;\n    vm.canModifyLineItem = canModifyLineItem;\n    vm.getVariant1s = getVariant1s;\n    vm.getVariant2s = getVariant2s;\n    vm.toggleExpandAll = toggleExpandAll;\n    vm.canClearRow = canClearRow;\n    vm.confirmClearRow = confirmClearRow;\n    vm.removeArticleFromOrder = removeArticleFromOrder;\n    vm.canDeleteArticleFromOrder = canDeleteArticleFromOrder;\n    vm.canUpdateWholeRow = canUpdateWholeRow;\n    vm.updateWholeRow = updateWholeRow;\n    vm.getProductQuantitySum = getProductQuantitySum;\n    vm.getTotalQuantitySum = getTotalQuantitySum;\n    vm.getVariantQuantitySum = getVariantQuantitySum;\n    vm.getProductGrossPrice = getProductGrossPrice;\n    vm.canModifyLineItemDeliveryDate = canModifyLineItemDeliveryDate;\n    vm.deliveryDateChanged = deliveryDateChanged;\n    vm.setWholeRowPrice = setWholeRowPrice;\n    vm.setWholeRowDiscountPercent = setWholeRowDiscountPercent;\n    vm.getFinalAmount = getFinalAmount;\n    vm.goToProduct = goToProduct;\n\n    function onInit() {\n        if (vm.resellerOrder.lineItems === undefined) {\n            vm.resellerOrder.lineItems = [];\n        } else {\n            regroupLineItemsOnArticle();\n        }\n\n        $scope.$watch(function () { return vm.resellerOrder.lineItems.length; }, function (newValue, oldValue) {\n            if (newValue !== oldValue) {\n                regroupLineItemsOnArticle();\n            }\n        });\n        $rootScope.$on('ResellerOrder.hideLineSpinner', function() {\n            vm.showSpinner = false;\n        });\n    }\n    function onChanges() {\n    }\n    function onDestroy() {\n    }\n\n    function goToProduct(articleId) {\n        var url = $state.href('product.articles.article', {articleId: articleId});\n        $window.open(url,'_blank');\n    }\n\n    function getFinalAmount(lineItemArticle, variant) {\n        var avgPrice = parseFloat(vm.getProductGrossPrice(lineItemArticle).toFixed(2));\n        if (!variant.wholeRowPrice) { variant.wholeRowPrice = avgPrice; }\n        if (!variant.wholeRowDiscountPercent) { variant.wholeRowDiscountPercent = 0; }\n\n        var temp = parseFloat((variant.wholeRowPrice * (1 - variant.wholeRowDiscountPercent)).toFixed(2));\n        return temp;\n    }\n\n    function setWholeRowPrice(lineItemArticle, variant) {\n        var avgPrice = parseFloat(vm.getProductGrossPrice(lineItemArticle).toFixed(2));\n        if (!variant.wholeRowPrice) { variant.wholeRowPrice = avgPrice; }\n        variant.wholeRowFinalPrice = parseFloat((variant.wholeRowPrice * (1 - variant.wholeRowDiscount / 100)).toFixed(2));\n\n        _.forEach(variant.lineItems, function(li) {\n            if (!li.amount || li.amount === 0) {\n                li.amount = variant.wholeRowPrice;\n                li.finalAmount = parseFloat((parseFloat(variant.wholeRowPrice) * (1 - parseFloat(variant.wholeRowDiscount) / 100)).toFixed(2));\n            }\n        });\n\n        saveVariant(variant);\n    }\n\n    function setWholeRowDiscountPercent(lineItemArticle, variant) {\n        var avgPrice = parseFloat(vm.getProductGrossPrice(lineItemArticle).toFixed(2));\n        if (!variant.wholeRowPrice) { variant.wholeRowPrice = avgPrice; }\n        if (!variant.wholeRowDiscount) { variant.wholeRowDiscount = 0; }\n        variant.wholeRowFinalPrice = parseFloat((variant.wholeRowPrice * (1 - variant.wholeRowDiscountPercent)).toFixed(2));\n\n        _.forEach(variant.lineItems, function(li) {\n            if (!li.amount || li.amount === 0) {\n                li.amount = variant.wholeRowPrice;\n                li.finalAmount = parseFloat((parseFloat(variant.wholeRowPrice) * (1 - variant.wholeRowDiscountPercent)).toFixed(2));\n            }\n            li.discountPercent = variant.wholeRowDiscountPercent;\n        });\n\n        saveVariant(variant);\n    }\n\n    function getProductGrossPrice(article) {\n        var sumPrice = 0, sumTotalQuantity = 0;\n        _.forEach(article.lineItemsGroupedOnVariant1, function(liGrp) {\n            sumPrice += _.sumBy(liGrp.lineItems, function(li) {\n                sumTotalQuantity += li.quantity;\n                return li.amount * li.quantity;\n            });\n        });\n        return sumPrice / (sumTotalQuantity === 0 ? 1 : sumTotalQuantity);\n    }\n\n    function getVariantQuantitySum(variant) {\n        var sumQty = 0;\n        sumQty += _.sumBy(variant.lineItems, function(li) {\n            return li.quantity;\n        });\n        return sumQty;\n    }\n\n    function getProductQuantitySum(article) {\n        var sumQty = 0;\n        _.forEach(article.lineItemsGroupedOnVariant1, function(liGrp) {\n            sumQty += _.sumBy(liGrp.lineItems, function(li) {\n                return li.quantity;\n            });\n        });\n        return sumQty;\n    }\n\n    function getTotalQuantitySum() {\n        var sumQty = 0;\n        _.forEach(vm.lineItemsGroupedByArticle, function(o) {\n            sumQty += getProductQuantitySum(o);\n        });\n        return sumQty;\n    }\n\n    function removeArticleFromOrder(article) {\n        if (!article || !article.lineItemsGroupedOnVariant1) { return false; }\n\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmRemoveArticle'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                _.forEach(article.lineItemsGroupedOnVariant1, function(variant1) {\n                    _.forEach(variant1.lineItems, function(li) {\n                        if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                            li.quantity = 0;\n                            vm.onLineItemChanged({ lineItem: li });\n                        }\n                    });\n                });\n                vm.resellerOrder.lineItems = _.filter(vm.resellerOrder.lineItems, function(o) {\n                    return o.articleId !== parseInt(article.article.id);\n                });\n            }\n        });\n    }\n    function canDeleteArticleFromOrder(lineItemsGroupedOnVariant1) {\n        if (!lineItemsGroupedOnVariant1) { return false; }\n\n        var canDelete = true;\n        _.forEach(lineItemsGroupedOnVariant1, function(variant1) {\n            _.forEach(variant1.lineItems, function(li) {\n                if (_.find(li.links, function(l) { return l.rel === 'delete'; }) === undefined) {\n                    canDelete = false;\n                }\n            });\n        });\n        return canDelete;\n    }\n\n    function canClearRow() {\n        var canUpdateWholeRow = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canUpdateWholeRow;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function confirmClearRow(lineItemsGroupedOnVariant1) {\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmClearRow'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                _.forEach(lineItemsGroupedOnVariant1.lineItems, function(li) {\n                    if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                        li.quantity = 0;\n                        vm.onLineItemChanged({ lineItem: li });\n                    }\n                });\n                lineItemsGroupedOnVariant1.wholeRowQuantity = '';\n            }\n        });\n    }\n\n    function canUpdateWholeRow() {\n        var canUpdateWholeRow = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canUpdateWholeRow;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function updateWholeRow(variant1, wholeRowQuantity) {\n        if (!variant1) { return; }\n        if (!variant1.lineItems) { return; }\n        if (!wholeRowQuantity || wholeRowQuantity === '') { return; }\n\n        var lineItem = _.find(variant1.lineItems, function(o) { return o.quantity > 0; });\n        if (lineItem !== undefined) {\n            confirmationDialogService.showDialog($translate.instant('resellerorder.confirmUpdateWholeRow'), $translate.instant('common.warning')).then(function (result) {\n                if (result === true) {\n                    _.forEach(variant1.lineItems, function(li) {\n                        if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                            li.quantity = wholeRowQuantity;\n                            vm.onLineItemChanged({ lineItem: li });\n                        }\n                    });\n                }\n                variant1.wholeRowQuantity = '';\n            });\n        } else {\n            _.forEach(variant1.lineItems, function(li) {\n                if (_.find(li.links, function(l) { return l.rel === 'modify'; }) !== undefined) {\n                    li.quantity = wholeRowQuantity;\n                    vm.onLineItemChanged({ lineItem: li });\n                }\n            });\n            variant1.wholeRowQuantity = '';\n        }\n    }\n\n    function toggleExpandAll() {\n        var allAreExpanded = true;\n        _.forEach(vm.lineItemsGroupedByArticle, function (o) {\n            if (!o.article.showRows || o.article.showRows === false) {\n                allAreExpanded = false;\n            }\n        });\n\n        _.forEach(vm.lineItemsGroupedByArticle, function(art) {\n            if (!allAreExpanded) {\n                art.article.showRows = true;\n            } else {\n                art.article.showRows = false;\n            }\n        });\n    }\n\n    function getVariant1s(lineItems) {\n        var variants = _.chain(lineItems)\n            .groupBy('variantDetail1Name')\n            .map((value, key) => ({ variantDetail1Name: key, lineItems: value }))\n            .value();\n\n        return variants;\n    }\n    function getVariant2s(lineItems) {\n        var variants = _.map(lineItems, 'variantDetail2Name');\n\n        return variants;\n    }\n\n    function canModifyLineItem() {\n        var canModifyLineItems = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'upsertLineItems'; }) !== undefined;\n        return canModifyLineItems;\n\n        //TODO look on each lineitem if able to upsert\n    }\n\n    function regroupLineItemsOnArticle() {\n        vm.resellerOrder.lineItems = _.sortBy(vm.resellerOrder.lineItems, ['variantDetail1Name', 'variantDetail2SortOrder']);\n        vm.lineItemsGroupedByArticle = _.chain(vm.resellerOrder.lineItems)\n            // Group the elements of Array based on `color` property\n            .groupBy('articleId')\n            // `key` is group's name (color), `value` is the array of objects\n            .map((value, key) => ({\n                article: {\n                    displayArticleNumber: value.length > 0 ? value[0].displayArticleNumber : '',\n                    articleName: value.length > 0 ? value[0].articleName : '',\n                    id: key,\n                    showRows: false,\n                    plannedDeliveryDate: (_.find(value, function(v) { return v.quantity > 0; }) || value[0]).plannedDeliveryDateUtc\n                },\n                lineItemsGroupedOnVariant1: regroupLineItemsOnVariant1(value)\n            }))\n            .value();\n        _.forEach(vm.lineItemsGroupedByArticle, function(lineItemArticle) {\n            var avgPrice = vm.getProductGrossPrice(lineItemArticle);\n            _.forEach(lineItemArticle.lineItemsGroupedOnVariant1, function(variant) {\n                variant.initialProductGrossPrice = avgPrice;\n                _.forEach(variant.lineItems, function(lineItem) {\n                    lineItem.discountDisplayPercent = lineItem.discountPercent * 100 + '%';\n                    lineItem.plannedDeliveryDateUtc = !lineItem.plannedDeliveryDateUtc ? lineItemArticle.article.plannedDeliveryDate : lineItem.plannedDeliveryDateUtc;\n                });\n            });\n        });\n    }\n    function regroupLineItemsOnVariant1(lineItems) {\n        var lineItemsGroupedByVariant1 = _.chain(lineItems)\n            .groupBy('variantDetail1Name')\n            .map((value, key) => ({\n                variantDetail1Name: key,\n                lineItems: value\n            }))\n            .value();\n        return lineItemsGroupedByVariant1;\n    }\n\n    function groupBy(array, field) {\n        return _.groupBy(array, field);\n    }\n\n    function saveVariant(variant) {\n        var v = variant;\n        _.forEach(v.lineItems, function(l) { \n            var d = new Date(l.plannedDeliveryDateUtc);\n            l.plannedDeliveryDateUtc = dateToUtc(d);\n        });\n        vm.onVariantChanged({ variant: variant });\n    }\n\n    function saveLineItem(lineItem) {\n        vm.onLineItemChanged({ lineItem: lineItem });\n    }\n\n    function viewOrderArticle(article) {\n        vm.onArticleSelected({ article: article });\n    }\n\n    function absolute(number) {\n        if (_.isNumber(number)) {\n            return Math.abs(number);\n        }\n        return 0;\n    }\n\n    function canModifyLineItemDeliveryDate(lineItemArticle) {\n        // Planned delivery date can change at any moment (?)\n        return true;\n    }\n\n    function dateToUtc(date) {\n        var milliseconds = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n        var d = new Date(milliseconds);\n        return d;\n    }\n\n    function deliveryDateChanged(lineItemArticle) {\n        var newDate = new Date(\n            lineItemArticle.article.plannedDeliveryDate.getFullYear(),\n            lineItemArticle.article.plannedDeliveryDate.getMonth(),\n            lineItemArticle.article.plannedDeliveryDate.getDate(),\n            0, 0, 0, 0);\n\n        _.forEach(lineItemArticle.lineItemsGroupedOnVariant1, function(group) {\n            _.forEach(group.lineItems, function(lineItem) {\n                lineItem.plannedDeliveryDateUtc = newDate;\n            });\n            saveVariant(group);\n        });\n    }\n}\n","angular.module('components.caResellerReturnOrderProductSearchMultiSelect', [])\n    .component('caResellerReturnOrderProductSearchMultiSelect', {\n        templateUrl: 'main/resellerorder/resellerreturnordermodify/components/resellerorderproductsearchmultiselect.component.tpl.html',\n        controllerAs: 'vm',\n        bindings: {\n            orderId: '<',\n            selectSameTwiceAllowed: '<',\n            articlesToExclude: '<',\n            disabled: '<',\n            onArticlesRetrieved: '&'\n        },\n        controller: controller\n    });\n\n// @ngInject\nfunction controller($q, $scope, ResellerOrdersApiService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.searchResultArticles = [];\n    vm.articlesToAdd = [];\n    vm.result = [];\n    vm.currentPage = 1;\n\n    vm.refreshArticles = refreshArticles;\n    vm.addArticles = addArticles;\n\n    function onInit() {\n        if (!vm.selectSameTwiceAllowed) {\n            vm.selectSameTwiceAllowed = false;\n        }\n\n        if (!vm.pageSize) {\n            vm.pageSize = 20;\n        }\n\n        $scope.$watch(function() { return (vm.company !== undefined) ?  vm.company.id : undefined; }, function() {\n            vm.articlesToAdd = [];\n            refreshArticles();\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n\n    // Refreshes the contents of the drop-down-list of selectable articles.\n    function refreshArticles(filter) {\n        ResellerOrdersApiService.getProducts(vm.orderId, filter).then(function(response) {\n            vm.searchResultArticles = [];\n            var excludeList = [];\n            if (vm.articlesToExclude !== undefined) {\n                excludeList = vm.articlesToExclude.map(function(oa) {\n                    return { id: oa.articleId };\n                });\n            }\n\n            var products = response.data.products;\n\n            for (var i = 0; i < products.length; i++) {\n                var article = products[i];\n                if (!_.find(excludeList, {'id': article.id})) {\n                    vm.searchResultArticles.push(article);\n                }\n            }\n        }, function(error) {\n            ToasterService.showError(error.errors);\n        });\n    }\n\n    function addArticles() {\n        vm.result = [];\n        var promises = [];\n        loadSpinnerService.start(\"mainSpinner\");\n        _.forEach(vm.articlesToAdd, function(article) {\n            var articleFetchPromise = ResellerOrdersApiService.getVariantsForProduct(vm.orderId, article.id);\n            promises.push(articleFetchPromise);\n        });\n\n        $q.all(promises).then(function(responses) {\n            _.forEach(responses, function(response) {\n                vm.result.push(response.data);\n            });\n            vm.onArticlesRetrieved({articles: vm.result});\n            vm.articlesToAdd = [];\n            refreshArticles();\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n}\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('resellerorder.resellerreturnordermodify', {\n        url: '/modifyreturn/{orderId:int}',\n        templateUrl: 'main/resellerorder/resellerreturnordermodify/resellerreturnordermodify.tpl.html',\n        controller: 'ResellerReturnOrderModifyController as vm',\n        resolve: {\n            resellerOrder: resellerOrderResolver\n        },\n        params: {\n        }\n    });\n}\n\n// @ngInject\nfunction resellerOrderResolver($stateParams, ResellerOrdersApiService) {\n    return ResellerOrdersApiService.getOrderById($stateParams.orderId);\n}\n\n// @ngInject\nfunction ResellerReturnOrderModifyController($window, $rootScope, $state, $translate, resellerOrder,\n    ResellerOrdersApiService, confirmationDialogService, setFieldConfirmationDialogService,invoiceConfirmationDialogService,\n    loadSpinnerService, ToasterService, printLanguageConfirmationDialogService) {\n    var vm = this;\n\n    //Properties\n    vm.resellerOrder = resellerOrder.order;\n    vm.resellerOrder.links = resellerOrder.links;\n    vm.links = resellerOrder.links;\n    vm.canAccess = $rootScope.canAccess;\n    vm.showSearchFields = false;\n    vm.synchronizationStatus = '';\n    vm.isSaving = false;\n    vm.isEditingOrderNumber = false;\n    vm.editedOrderNumber = '';\n    \n\n    //Public methods\n    vm.invoiceConfirmation = invoiceConfirmation;\n    vm.canCreateInvoice = canCreateInvoice;\n    vm.canCancelOrder = canCancelOrder;\n    vm.cancelOrder = cancelOrder;\n    vm.canConfirmOrder = canConfirmOrder;\n    vm.confirmOrder = confirmOrder;\n    vm.canPrintOrder = canPrintOrder;\n    vm.printOrder = printOrder;\n    vm.saveLineItem = saveLineItem;\n    vm.saveVariant = saveVariant;\n    vm.createNewOrder = createNewOrder;\n    vm.createNewReturnOrder = createNewReturnOrder;\n    vm.getResellerOrderCsv = getResellerOrderCsv;\n    vm.toggleSearchFields = toggleSearchFields;\n    vm.canSetWholeOrderDeliveryDate = canSetWholeOrderDeliveryDate;\n    vm.canSetWholeOrderDiscountPercent = canSetWholeOrderDiscountPercent;\n    vm.setWholeOrderDeliveryDate = setWholeOrderDeliveryDate;\n    vm.setWholeOrderDiscountPercent = setWholeOrderDiscountPercent;\n    vm.editOrderNumber = editOrderNumber;\n    vm.tryToSaveNewOrderNumber = tryToSaveNewOrderNumber;\n\n    activate();\n\n    function activate() {\n        if (vm.resellerOrder.id !== 0) {\n            //get product variants\n            var lineItemsGroupedByArticle = _.chain(vm.resellerOrder.lineItems)\n                // Group the elements of Array based on `color` property\n                .groupBy('articleId')\n                // `key` is group's name (color), `value` is the array of objects\n                .map((value, key) => ({ article: { id: parseInt(key), showRows: false }, lineItems: value }))\n                .value();\n\n            loadSpinnerService.start('mainSpinner');\n            _.forEach(lineItemsGroupedByArticle, function(li) {\n                ResellerOrdersApiService.getVariantsForProduct(li.article.id).then(function (response) {\n                    fillOutArticle(response.data.variants);\n                });\n            });\n            loadSpinnerService.stop('mainSpinner');\n        }\n\n\n        vm.synchronizationStatus = '(' + $translate.instant('common.allChangesSaved') + ')';\n        $rootScope.$on('ResellerOrder.savingChanges', function() {\n            vm.synchronizationStatus = '(' + $translate.instant('common.savingChanges') + ')';\n            vm.isSaving = true;\n        });\n        $rootScope.$on('ResellerOrder.allChangesSaved', function() {\n            vm.synchronizationStatus = '(' + $translate.instant('common.allChangesSaved') + ')';\n            vm.isSaving = false;\n        });\n    }\n\n    function editOrderNumber() {\n        vm.isEditingOrderNumber = true;\n        vm.editedOrderNumber = vm.resellerOrder.orderNumber;\n    }\n\n    function tryToSaveNewOrderNumber() {\n        vm.isEditingOrderNumber = false;\n        if(vm.editedOrderNumber === vm.resellerOrder.orderNumber){\n            ToasterService.showError($translate.instant('productimport.noChangesToSave') + ' ' + angular.lowercase($translate.instant('common.in') + ' ' + $translate.instant('resellerorder.orderNumber') + '!'));\n            return;\n        }\n        \n        loadSpinnerService.start('mainSpinner');\n        ResellerOrdersApiService.changeOrderNumber(vm.editedOrderNumber, vm.resellerOrder.id).then(function () {\n            vm.resellerOrder.orderNumber = vm.editedOrderNumber;\n            ToasterService.showSuccess($translate.instant('common.new') + ' ' + angular.lowercase($translate.instant('resellerorder.orderNumber')) + ': \"' + vm.editedOrderNumber + '\" ' + angular.lowercase($translate.instant('common.wasSaved') + '!'));\n        }, function (error){\n            vm.isEditingOrderNumber = true;\n            ToasterService.showError(error.message);\n        }).finally(function(){\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function createNewOrder() {\n        $state.go('resellerorder.resellerordercreate');\n    }\n\n    function createNewReturnOrder() {\n        $state.go('resellerorder.resellerreturnordercreate');\n    }\n\n    function getResellerOrderCsv() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + '?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getResellerOrderCsv(vm.orderId, result.locale).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    } \n\n    function invoiceConfirmation() {\n        var deliveryDate = new Date();\n         //Needs fetch the most recent date from stock table, LastInventoriedDate\n            invoiceConfirmationDialogService.showDialog(\n                \"Bekräfta Faktureringsdatum\",\n                deliveryDate,\n                new Date(2015,1,1)\n            ).then(function (result) {\n            if (result.isCompleted === true) {\n                var request = {\n                    orderId: vm.resellerOrder.id,\n                    accountingDate: result.deliveryDate\n                };\n                loadSpinnerService.start('mainSpinner');\n                //Skapa försäljning\n                ResellerOrdersApiService.setResellerReturnOrderSaleDate(request).then(function(response) {\n                        ToasterService.showSuccess($translate.instant(\"order.delivered\"), $translate.instant(\"common.deliver\"));\n                        $state.go('resellerorder.resellerorderview', { orderId: vm.resellerOrder.id });\n                    },\n                    function(error) {\n                        handleError(error);\n                    }\n                ).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n             }\n        });\n    }\n\n    function canPrintOrder() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n        return hasLineItems;\n    } \n    function canCreateInvoice() {\n        \n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n\n        if(hasLineItems && vm.resellerOrder.status !== 'closed'){\n             return true;\n        } \n        else{\n            return false;\n        }\n        \n    }\n    function printOrder() {\n        printLanguageConfirmationDialogService.showDialog($translate.instant('order.printdisplayed') + ' PDF?').then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.getResellerOrderPdf(vm.resellerOrder.id, result.locale).then(function (response) {\n                }, function (error) {\n                    ToasterService.showError(error.message);\n                }).finally(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function canSetWholeOrderDeliveryDate() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'updateDeliveryDate'; }) !== undefined;\n\n        return hasLineItems && hasLink;\n    }\n    function canSetWholeOrderDiscountPercent() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'updateDiscountPercent'; }) !== undefined;\n\n        return hasLineItems && hasLink;\n    }\n\n    function canCreateInvoice() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'updateDiscountPercent'; }) !== undefined;\n\n        return hasLineItems && hasLink;\n    }\n\n    function setWholeOrderDeliveryDate() {\n        setFieldConfirmationDialogService.showDialog($translate.instant('resellerorder.confirmationSetWholeOrderDeliveryDate'), '', 'date', null, null).then(function (result) {\n            if (result.isCompleted === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                var request = {\n                    orderId: vm.resellerOrder.id,\n                    deliveryDateUtc: result.dateValue\n                };\n                ResellerOrdersApiService.setWholeOrderDeliverDate(request).then(function(response) {\n                    //reload page\n                    $window.location.reload();\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, error.message);\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    function setWholeOrderDiscountPercent() {\n        setFieldConfirmationDialogService.showDialog($translate.instant('resellerorder.confirmSetWholeOrderDiscountPercent'), '', 'number', 0, 100).then(function (result) {\n            if (result.isCompleted === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                var request = {\n                    orderId: vm.resellerOrder.id,\n                    discountPercent: result.numberValue / 100\n                };\n                ResellerOrdersApiService.setWholeOrderDiscountPercent(request).then(function(response) {\n                    //reload page\n                    $window.location.reload();\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, error.message);\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n\n\n    function toggleSearchFields() {\n        vm.showSearchFields = !vm.showSearchFields;\n    }\n\n    function fillOutArticle(variants) {\n        _.forEach(variants, function(v) {\n            var existingLineItem = _.find(vm.resellerOrder.lineItems, function(li) { return li.articleVariantId === v.id; });\n            if (existingLineItem === undefined) {\n                var newLineItem = {\n                    amount: 0,\n                    articleId: v.articleId,\n                    articleName: v.articleName,\n                    articleVariantId: v.id,\n                    fulfilledQuantity: 0,\n                    id: 0,\n                    links: [{ rel: 'modify' }],\n                    orderId: vm.resellerOrder.id,\n                    quantity: 0,\n                    status: 'open',\n                    variantDetail1Name: v.variantDetail1Name,\n                    variantDetail2Name: v.variantDetail2Name,\n                    variantDetail2SortOrder: v.variantDetail2SortOrder,\n                    vatAmount: 0,\n                    vatRate: 0\n                };\n                vm.resellerOrder.lineItems.push(newLineItem);\n            }\n        });\n    }\n\n    function saveLineItem(lineItem) {\n        var request = {\n            orderId: lineItem.orderId,\n            lineItems: [{\n                articleVariantId: lineItem.articleVariantId,\n                discountPercent: lineItem.discountPercent,\n                plannedDeliveryDateUtc: lineItem.plannedDeliveryDateUtc,\n                price: lineItem.amount,\n                quantity: lineItem.quantity\n            }]\n        };\n\n        $rootScope.$emit('ResellerOrder.savingChanges', '');\n        ResellerOrdersApiService.upsertLineItems(request).then(function (response) {\n            vm.resellerOrder.links = response.data.links;\n            $rootScope.$emit('ResellerOrder.allChangesSaved', '');\n        }, function (error) {\n            console.log(error);\n        }).then(function () {\n        });\n    }\n\n    function saveVariant(variant) {\n        var request = {\n            orderId: variant.lineItems[0].orderId,\n            lineItems: []\n        };\n        _.forEach(variant.lineItems, function(lineItem) {\n            request.lineItems.push({\n                articleVariantId: lineItem.articleVariantId,\n                discountPercent: lineItem.discountPercent,\n                plannedDeliveryDateUtc: lineItem.plannedDeliveryDateUtc,\n                price: lineItem.amount,\n                quantity: lineItem.quantity\n            });\n        });\n\n        $rootScope.$emit('ResellerOrder.savingChanges', '');\n        ResellerOrdersApiService.upsertLineItems(request).then(function (response) {\n            vm.resellerOrder.links = response.data.links;\n            $rootScope.$emit('ResellerOrder.allChangesSaved', '');\n        }, function (error) {\n            console.log(error);\n        }).finally(function () {\n        });\n    }\n\n    function canConfirmOrder() {\n        var hasLineItems = vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0;\n        var hasLink = _.find(vm.resellerOrder.links, function(o) { return o.rel === 'confirm'; }) !== undefined;\n\n        return hasLineItems && hasLink;\n    }\n\n    function canCancelOrder() {\n        var hasDeleteLink = _.find(vm.links, function(o) { return o.rel === 'delete'; }) !== undefined;\n\n        return hasDeleteLink;\n    }\n\n    function cancelOrder() {\n        //confirm scrap order\n        confirmationDialogService.showDialog($translate.instant('resellerorder.confirmCancelOrder'), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                //clear line items and order head\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.deleteOrder(vm.resellerOrder.id).then(function () {\n                    ToasterService.showInfo($translate.instant('resellerorder.orderDeleted'), $translate.instant('common.information'));\n                    $state.go('resellerorder.resellerordersearch');\n                }, function (error) {\n                    console.log(error);\n                    ToasterService.showError(error.error, $translate.instant('common.error'));\n                }).then(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function confirmOrder() {\n        confirmationDialogService.showDialog($translate.instant(\"resellerorder.confirmConfirmOrder\"), $translate.instant('common.warning')).then(function (result) {\n            if (result === true) {\n                //call backend, confirm order\n                loadSpinnerService.start('mainSpinner');\n                ResellerOrdersApiService.confirm(vm.resellerOrder.id).then(function () {\n                    ToasterService.showInfo($translate.instant('resellerorder.orderConfirmed'), $translate.instant('common.information'));\n\n                    $state.go('resellerorder.resellerorderview', { orderId: vm.resellerOrder.id });\n                }, function (error) {\n                    console.log(error);\n                    ToasterService.showError(error.error, $translate.instant('common.error'));\n                }).then(function () {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n}\n\nangular\n    .module('resellerorder.resellerreturnordermodify', [])\n    .config(stateConfig)\n    .controller('ResellerReturnOrderModifyController', ResellerReturnOrderModifyController);\n","// @ngInject\nfunction SalesApiService($q, $window, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'sales';\n\n    return {\n        getAllSalesTotals: getAllSalesTotals,\n        approveSalesTotal: approveSalesTotal\n    };\n\n    function getAllSalesTotals(searchTerms) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (!searchTerms) { searchTerms = {}; }\n\n        if (searchTerms.currentPage && searchTerms.currentPage > 1) {\n            params.page = searchTerms.currentPage;\n        } else {\n            params.page = 1;\n        }\n\n        if (searchTerms.itemsPerPage && searchTerms.itemsPerPage > 0) {\n            params.limit = searchTerms.itemsPerPage;\n        } else {\n            params.limit = 20;\n        }\n\n        if (searchTerms.status && searchTerms.status.length > 0) {\n            params.status = searchTerms.status;\n        }\n\n        if (searchTerms.locationId && searchTerms.locationId > 0) {\n            params.locationId = searchTerms.locationId;\n        }\n\n        if (searchTerms.periodStart) {\n            params.periodStart = searchTerms.periodStart;\n        }\n        if (searchTerms.periodEnd) {\n            params.periodEnd = searchTerms.periodEnd;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + '/totals', { params: params }).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function approveSalesTotal(id) {\n        var deferred = $q.defer();\n\n        var params = { id: id, approvalBy: '' };\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + endpoint + '/totals/' + id + '/approval', { params: params }).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('sales.api', [])\n    .factory('SalesApiService', SalesApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('sales', {\n        url: '/sales',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/sales/sales.tpl.html',\n        controller: 'MainSalesController as vm'\n    });\n}\n\n// @ngInject\nfunction MainSalesController() {\n    var vm = this;\n}\n\nangular\n    .module('main.sales', ['sales.api','sales.salestotal'])\n    .config(stateConfig)\n    .controller('MainSalesController', MainSalesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('sales.salestotal',{\n        url: '/salestotal?{ps}&{pe}&{l}',\n        views: {'wideColumnView@sales': {\n            templateUrl: 'main/sales/salestotal/salestotal.tpl.html',\n            controller: 'SalesTotalController as vm'\n        }},\n        resolve: {\n            salesTotalsPagination: salesTotalPaginationResolver,\n            locations: locationsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction salesTotalPaginationResolver(SalesApiService, $stateParams) {\n    if (!$stateParams.ps) {\n        $stateParams.ps = new Date().addDays(-30).getDatum();\n    }\n    if (!$stateParams.pe) {\n        $stateParams.pe = new Date().getDatum();\n    }\n    if ($stateParams.l && $stateParams.l === '-1') {\n        $stateParams.l = undefined;\n    }\n    return SalesApiService.getAllSalesTotals(\n        {\n            currentPage: 1,\n            periodStart: $stateParams.ps,\n            periodEnd: $stateParams.pe,\n            itemsPerPage: 20,\n            status: ['forReview']\n        });\n}\n\n// @ngInject\nfunction locationsResolver(LocationsApiService) {\n    return LocationsApiService.listAll({ locationTypes: ['onlinestore','store'], isActive: true });\n}\n\nDate.prototype.addDays = function(days) {\n    var dat = new Date(this.valueOf());\n    dat.setDate(dat.getDate() + days);\n    return dat;\n};\nDate.prototype.getDatum = function() {\n    var dat = new Date(this.valueOf());\n    var month = dat.getMonth() + 1;\n    if (month < 10) { month = '0' + month; }\n    var date = dat.getDate();\n    if (date < 10) { date = '0' + date; }\n    var str = dat.getFullYear() + '-' + month + '-' + date;\n    return str;\n};\n\n// @ngInject\nfunction SalesTotalController($state, $stateParams, $scope, $translate, salesTotalsPagination, locations,\n    SalesApiService, loadSpinnerService, ToasterService, salesTotalFilterDialogService) {\n    var vm = this;\n\n    //Properties\n    vm.salesTotals = salesTotalsPagination !== undefined &&\n        salesTotalsPagination.data !== undefined &&\n        salesTotalsPagination.data.saleTotals.results !== undefined ?\n        salesTotalsPagination.data.saleTotals.results :\n        {};\n    _.forEach(vm.salesTotals, function(s) { s.showRows = false; });\n    vm.pageSize = salesTotalsPagination !== undefined &&\n        salesTotalsPagination.data !== undefined ?\n        salesTotalsPagination.data.saleTotals.limit :\n        20;\n    vm.currentPage = salesTotalsPagination !== undefined &&\n        salesTotalsPagination.data !== undefined ?\n        salesTotalsPagination.data.saleTotals.page :\n        1;\n    vm.totalItems = salesTotalsPagination !== undefined &&\n        salesTotalsPagination.data !== undefined ?\n        salesTotalsPagination.data.saleTotals.total :\n        0;\n    vm.locations = locations;\n    _.forEach(vm.locations, function(l) {\n        return l.locationName = l.locationNumber + ' ' + l.locationName;\n    });\n    vm.selectedLocation = {};\n\n    vm.periodStartDate = $stateParams.ps ? new Date($stateParams.ps) : new Date().addDays(-30);\n    vm.periodEndDate = $stateParams.pe ? new Date($stateParams.pe) : new Date();\n    vm.shownStatuses = ['forReview'];\n    vm.includeApproved = false;\n    vm.includeForProcessing = false;\n    vm.includeForReview = true;\n\n    //Methods\n    vm.toggleApproved = toggleApproved;\n    vm.toggleForProcessing = toggleForProcessing;\n    vm.toggleForReview = toggleForReview;\n    vm.getSaleTotals = getSaleTotals;\n    vm.getPaymentTotals = getPaymentTotals;\n    vm.toggleRows = toggleRows;\n    vm.approveSalesTotal = approveSalesTotal;\n    vm.getPeriodPaymentSum = getPeriodPaymentSum;\n    vm.getCalculatedPaymentSum = getCalculatedPaymentSum;\n    vm.getSaleVatAmountSum = getSaleVatAmountSum;\n    vm.getCalculatedVatAmountSum = getCalculatedVatAmountSum;\n    vm.getTotalNetAmountSum = getTotalNetAmountSum;\n    vm.getTotalVatAmountSum = getTotalVatAmountSum;\n    vm.approveSalesTotal = approveSalesTotal;\n    vm.viewApprovedButton = viewApprovedButton;\n    vm.getStatusString = getStatusString;\n    vm.getSaleNetAmountSum = getSaleNetAmountSum;\n    vm.getCalculatedNetAmountSum = getCalculatedNetAmountSum;\n    vm.showConfirmButton = showConfirmButton;\n    vm.showRedSaleDiff = showRedSaleDiff;\n    vm.showRedCalculatedDiff = showRedCalculatedDiff;\n    vm.totalSaleDiff = totalSaleDiff;\n    vm.totalCalculatedDiff = totalCalculatedDiff;\n    vm.roundToTwo = roundToTwo;\n    vm.showTotalDiffTable = showTotalDiffTable;\n    vm.getSalesNumberSum = getSalesNumberSum;\n    vm.getNetAmount = getNetAmount;\n    vm.abs = Math.abs;\n    vm.showFilterDialog = showFilterDialog;\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return vm.currentPage; }, function(newValue, oldValue) {\n            if (newValue !== null && newValue !== oldValue) {\n                loadSaleTotals();\n            }\n        });\n        compileShownStatuses();\n\n        if ($stateParams.l) {\n            vm.selectedLocation = _.find(vm.locations, function (o) { return '' + o.id === $stateParams.l; });\n            if (!vm.selectedLocation) { vm.selectedLocation = {}; }\n            if (vm.selectedLocation.id) {\n                loadSaleTotals();\n            }\n        }\n    }\n\n    function showFilterDialog() {\n        salesTotalFilterDialogService\n            .showDialog(\n                vm.periodStartDate,\n                vm.periodEndDate,\n                vm.locations,\n                vm.selectedLocation,\n                vm.includeApproved,\n                vm.includeForProcessing\n            )\n            .then(function(response) {\n                if (response.confirmation) {\n                    var reloadRows = false;\n                    var refilter = false;\n\n                    if (!isSameDate(vm.periodStartDate, response.periodStartDate)) {\n                        vm.periodStartDate = response.periodStartDate;\n                        reloadRows = true;\n                    }\n\n                    if (!isSameDate(vm.periodEndDate, response.periodEndDate)) {\n                        vm.periodEndDate = response.periodEndDate;\n                        reloadRows = true;\n                    }\n                    if (vm.selectedLocation === undefined || vm.selectedLocation.id === undefined || vm.selectedLocation.id !== response.selectedLocation) {\n                        vm.selectedLocation = _.find(vm.locations, function(o) { return o.id === response.selectedLocation; });\n                        reloadRows = true;\n                    }\n                    if (vm.includeApproved !== response.includeApproved) {\n                        vm.includeApproved = response.includeApproved;\n                        refilter = true;\n                    }\n                    if (vm.includeForProcessing !== response.includeForProcessing) {\n                        vm.includeForProcessing = response.includeForProcessing;\n                        refilter = true;\n                    }\n\n                    if (reloadRows) {\n                        $state.go('sales.salestotal', {\n                            ps: new Date(vm.periodStartDate).getDatum(),\n                            pe: new Date(vm.periodEndDate).getDatum(),\n                            page: vm.currentPage,\n                            l: vm.selectedLocation ? vm.selectedLocation.id : undefined\n                        });\n                    }\n                    if (refilter === true) {\n                        compileShownStatuses();\n                        loadSaleTotals();\n                    }\n                }\n            });\n    }\n\n    function isSameDate(newValue, oldValue) {\n        if (newValue === undefined || newValue === null) { return false; }\n        if (oldValue === undefined || oldValue === null) { return false; }\n\n        newValue = new Date(newValue);\n        oldValue = new Date(oldValue);\n        var newYear = newValue.getFullYear();\n        var newMonth = newValue.getMonth();\n        var newDay = newValue.getDate();\n        var oldYear = oldValue.getFullYear();\n        var oldMonth = oldValue.getMonth();\n        var oldDay = oldValue.getDate();\n\n        if (newYear !== oldYear) { return false; }\n        if (newMonth !== oldMonth) { return false; }\n        if (newDay !== oldDay) { return false; }\n\n        return true;\n    }\n\n    function toggleApproved() {\n        vm.includeApproved = !vm.includeApproved;\n        compileShownStatuses();\n        loadSaleTotals();\n    }\n    function toggleForProcessing() {\n        vm.includeForProcessing = !vm.includeForProcessing;\n        compileShownStatuses();\n        loadSaleTotals();\n    }\n    function toggleForReview() {\n        vm.includeForReview = !vm.includeForReview;\n        compileShownStatuses();\n        loadSaleTotals();\n    }\n    function compileShownStatuses() {\n        vm.shownStatuses = [];\n        if (vm.includeApproved) {\n            vm.shownStatuses.push('approved');\n            vm.shownStatuses.push('autoApproved');\n        }\n        if (vm.includeForProcessing) {\n            vm.shownStatuses.push('forProcessing');\n        }\n        if (vm.includeForReview) {\n            vm.shownStatuses.push('forReview');\n        }\n    }\n\n    function loadSaleTotals() {\n        //ForProcessing, Approved, ForReview\n        loadSpinnerService.start('mainSpinner');\n        SalesApiService.getAllSalesTotals({ currentPage: vm.currentPage, itemsPerPage: vm.pageSize, periodStart: vm.periodStartDate, periodEnd: vm.periodEndDate, locationId: vm.selectedLocation.id, status: vm.shownStatuses }).then(function(response) {\n            vm.salesTotals = response !== undefined &&\n                response.data !== undefined &&\n                response.data.saleTotals.results !== undefined ?\n                response.data.saleTotals.results :\n                {};\n            vm.pageSize = response !== undefined &&\n                response.data !== undefined ?\n                response.data.saleTotals.limit :\n                20;\n            vm.currentPage = response !== undefined &&\n                response.data !== undefined ?\n                response.data.saleTotals.page :\n                1;\n            vm.totalItems = response !== undefined &&\n                response.data !== undefined ?\n                response.data.saleTotals.total :\n                0;\n            _.forEach(vm.salesTotals, function(s) { s.showRows = false; });\n        }, function (error) {\n            //console.log(error);\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getStatusString(status) {\n        switch (status.toLowerCase()) {\n            case 'approved':\n                return $translate.instant('salestotal.statusApproved');\n            case 'autoapproved':\n                return $translate.instant('salestotal.statusAutoApproved');\n            case 'forprocessing':\n                return $translate.instant('salestotal.statusForProcessing');\n            default:\n                return '';\n        }\n    }\n\n    function getSaleTotals(currentSaleTotal) {\n        var totalSales = _.sumBy(currentSaleTotal.saleTotals, function(s) { return s.calculatedNetAmount - s.calculatedVatAmount; });\n        var withdrawals = currentSaleTotal.withdrawalAmount;\n        var deposits = currentSaleTotal.depositAmount;\n        var total = totalSales + (withdrawals - deposits);\n        return total;\n    }\n\n    function getPaymentTotals(currentSaleTotal) {\n        var totalPayments = _.sumBy(currentSaleTotal.paymentTotals, function(s) { return s.calculatedAmount; });\n        return totalPayments;\n    }\n\n    function toggleRows(salesTotal) {\n        if (salesTotal.showRows === undefined) { salesTotal.showRows = false; return false; }\n        salesTotal.showRows = !salesTotal.showRows;\n    }\n\n    function approveSalesTotal(salesTotal) {\n        loadSpinnerService.start('mainSpinner');\n        SalesApiService.approveSalesTotal(salesTotal.id).then(function(response) {\n            loadSaleTotals();\n        }, function (error) {\n            //console.log(error);\n            ToasterService.showError(error, $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function viewApprovedButton() {\n        return true;\n    }\n\n    function getSalesNumberSum(saleTotals) {\n        var sum = 0;\n\n        if (saleTotals && saleTotals.length > 0) { sum = saleTotals[0].calculatedNumberOfSales; }\n\n        return sum;\n    }\n    function getPeriodPaymentSum(paymentTotals) {\n        var sum = _.sumBy(paymentTotals, function(s) { return s.amount - s.negativeAmount; });\n        return sum;\n    }\n    function getCalculatedPaymentSum(paymentTotals) {\n        var sum = _.sumBy(paymentTotals, function(s) { return s.calculatedAmount; });\n        return sum;\n    }\n\n    function getSaleVatAmountSum(saleTotals) {\n        var sum = _.sumBy(saleTotals, function(s) { return s.vatAmount - s.negativeVatAmount; });\n        return sum;\n    }\n    function getCalculatedVatAmountSum(saleTotals) {\n        var sum = _.sumBy(saleTotals, function(s) { return s.calculatedVatAmount; });\n        return sum;\n    }\n\n    function getTotalNetAmountSum(saleTotals) {\n        var sum = _.sumBy(saleTotals, function(s) { return (s.netAmount - s.negativeNetAmount) + (s.vatAmount - s.negativeVatAmount); });\n        return sum;\n    }\n    function getTotalVatAmountSum(saleTotals) {\n        var sum = _.sumBy(saleTotals, function(s) { return (s.calculatedNetAmount - s.calculatedVatAmount); });\n        return sum;\n    }\n\n    function getSaleNetAmountSum(salesTotal) {\n        var saleTotals = salesTotal.saleTotals;\n        var sum = _.sumBy(saleTotals, function(s) { return getNetAmount(salesTotal, s); });\n        return sum;\n    }\n    function getCalculatedNetAmountSum(saleTotals) {\n        var sum = _.sumBy(saleTotals, function(s) { return s.calculatedNetAmount; });\n        return sum;\n    }\n    function showConfirmButton(salesTotal) {\n        if (!salesTotal || !salesTotal.links || salesTotal.links.length === 0) {\n            return false;\n        }\n\n        var link = _.find(salesTotal.links, function (o) { return o.rel === 'approve'; });\n        if (link) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    function showRedSaleDiff(salesTotal) {\n        var temp1 = vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals);\n        var temp2 = vm.getPeriodPaymentSum(salesTotal.paymentTotals);\n\n        if (Math.abs(roundToTwo(temp2)) === 0.00) { return true; }\n        if (Math.abs(roundToTwo(temp1 - temp2)) !== 0.00) { return true; }\n        return false;\n    }\n    function showRedCalculatedDiff(salesTotal) {\n        var temp1 = vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals);\n        var temp2 = vm.getCalculatedPaymentSum(salesTotal.paymentTotals);\n\n        if (Math.abs(roundToTwo(temp2)) === 0.00) { return true; }\n        if (Math.abs(roundToTwo(temp1 - temp2)) !== 0.00) { return true; }\n        return false;\n    }\n\n    function roundToTwo(number) {\n        var precision = 2;\n        var shift = function (number, precision, reverseShift) {\n          if (reverseShift) {\n            precision = -precision;\n          }\n          var numArray = ('' + number).split(\"e\");\n          return +(numArray[0] + \"e\" + (numArray[1] ? (+numArray[1] + precision) : precision));\n        };\n\n        var result = shift(Math.round(shift(number, precision, false)), precision, true);\n        if (result === 0) { return '0.00'; }\n        return result.toFixed(2);\n    }\n\n    function showTotalDiffTable(salesTotal) {\n        var temp1 = (vm.getSaleNetAmountSum(salesTotal.saleTotals) + vm.getSaleVatAmountSum(salesTotal.saleTotals));\n        var temp2 = vm.getPeriodPaymentSum(salesTotal.paymentTotals);\n        var temp3 = (vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals));\n        var temp4 = vm.getCalculatedPaymentSum(salesTotal.paymentTotals);\n\n        if (roundToTwo(temp1 - temp2) !== '0.00' ||\n            roundToTwo(temp3 - temp4) !== '0.00') {\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    function totalSaleDiff(salesTotal) {\n        var temp1 = (vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals));\n        var temp2 = vm.getPeriodPaymentSum(salesTotal.paymentTotals);\n\n        return (temp2 - temp1);\n    }\n    function totalCalculatedDiff(salesTotal) {\n        var temp1 = (vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals));\n        var temp2 = vm.getCalculatedPaymentSum(salesTotal.paymentTotals);\n\n        return (temp2 - temp1);\n    }\n\n    function getNetAmount(salesTotal, saleTotal) {\n        if (saleTotal.vatRate === 0) {\n            return saleTotal.netAmount - saleTotal.negativeNetAmount + salesTotal.withdrawalAmount;\n        }\n\n        return saleTotal.netAmount - saleTotal.negativeNetAmount;\n    }\n}\n\nangular\n    .module('sales.salestotal', [])\n    .config(stateConfig)\n    .controller('SalesTotalController', SalesTotalController);\n","angular.module('stock.articles.caArticleStocksHistory', [])\n.component('caArticleStocksHistory',{\n    templateUrl: 'main/stock/articles/articleStocksHistory/articleStocksHistory.component.tpl.html',\n    bindings: {\n        articleId: '<',\n        locationId: '<',\n        articleVariantId: '<',\n        showSum: '<',\n        navigated: '&',\n        disabled: '<'\n    },\n    controllerAs: 'vm',\n    controller: controller\n});\n\n// @ngInject\nfunction controller($state, $window, $translate, StockApiService, loadSpinnerService) {\n    var vm = this;\n\n    //Properties\n    var previousArticleId, previousLocationId, previousArticleVariantId;\n    vm.rowData = [];\n    vm.displayedRows = [];\n    vm.transGrid = {};\n    vm.transGrid.columns = [];\n    vm.transGrid.rows = [];\n    vm.stockTransactions = [];\n    vm.elementsPerPage = 15;\n    vm.currentPage = 1;\n\n    //Methods\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.goToReference = goToReference;\n    vm.showLink = showLink;\n    vm.pageChanged = pageChanged;\n\n    function onInit() {\n\n    }\n\n    function onChanges() {\n        if (!vm.disabled) {\n            if (vm.articleId && vm.locationId && vm.articleVariantId &&\n                (previousArticleId !== vm.articleId || previousLocationId !== vm.locationId || previousArticleVariantId !== vm.articleVariantId)) {\n                previousArticleId = vm.articleId;\n                previousLocationId = vm.locationId;\n                previousArticleVariantId = vm.articleVariantId;\n\n                loadSpinnerService.start('mainSpinner');\n                StockApiService\n                    .getStockTransactionsForArticleAndLocation(\n                        {\n                            articleId: vm.articleId,\n                            locationId: vm.locationId,\n                            variantDetailId: vm.articleVariantId\n                        }\n                    )\n                    .then(function(data) {\n                        vm.stockTransactions = data;\n                        setUpGridData();\n                        loadGridData();\n                    }).finally(function() {\n                        loadSpinnerService.stop('mainSpinner');\n                    });\n            }\n        }\n    }\n\n    function setUpGridData() {\n        vm.transGrid.columns = [];\n\n        vm.transGrid.columns.push({ id: 'accountingDate', name: $translate.instant('common.date') });\n        vm.transGrid.columns.push({ id: 'transactionType', name: $translate.instant('stocktransaction.transactionType') });\n        vm.transGrid.columns.push({ id: 'referenceDescription', name: $translate.instant('stocktransaction.referenceDescription') });\n\n        var columns = getDataColumns();\n\n        // Add dynamic columns\n        _.forEach(columns, function(variantDetail) {\n            vm.transGrid.columns.push({ id: variantDetail.variantDetailName, name: variantDetail.variantDetailName });\n        });\n    }\n\n    function showLink(referenceType) {\n        //NoReference, Order, Sale, BalanceChange, Delivery\n        if (referenceType === 'noReference') {\n            return false;\n        } else if (referenceType === 'order') {\n            return true;\n        } else if (referenceType === 'sale') {\n            return false;\n        } else if (referenceType === 'balanceChange') {\n            return false;\n        } else if (referenceType === 'delivery') {\n            return false;\n        }\n    }\n\n    function goToReference(e, stockTransaction) {\n        e.preventDefault();\n\n        if (stockTransaction.referenceType === 'order') {\n            // Go directly to the order\n            if(stockTransaction.referenceId && stockTransaction.referenceId !== 0){\n                $window.open($state.href('order.ordersearch', { orderId: stockTransaction.referenceId }), '_blank');\n            }\n            // Go to search for the order\n            else\n            {\n                $window.open($state.href('order.ordersearch', {\n                    searchTerm: '' + stockTransaction.referenceDescription,\n                    showOnlyUndeliveredOrders: false,\n                    orderTypes: [] //Has the same effect as setting 'All'\n                }), '_blank');\n            }\n\n            if (vm.navigated) {\n                vm.navigated();\n            }\n        }\n\n        return false;\n    }\n\n    function getDataColumns() {\n        var columns = [];\n        var articleVariants = [];\n\n        _.forEach(vm.stockTransactions, function(stockTransaction) {\n            articleVariants.push(stockTransaction.articleVariant);\n        });\n\n        // Group by nested variantDetail2 in the current articleVariants\n        columns = _.groupBy(articleVariants, function(variant) {\n            return variant.variantDetail2.variantDetailName;\n        });\n        // Get the variantDetail2 from each group in an array\n        columns = _.reduce(columns, function(newArray, val, key) {\n            newArray.push(val[0].variantDetail2);\n            return newArray;\n        }, []);\n\n        return _.sortBy(columns, 'sortOrder');\n    }\n\n    function loadGridData() {\n\n        var rows = [];\n\n        _.forEach(vm.stockTransactions, function (stockTransaction) {\n            var r = {};\n\n            r.accountingDate = moment(stockTransaction.accountingDate).format('YYYY-MM-DD');\n            r.comment = stockTransaction.comment;\n            r.transactionType = stockTransaction.stockTransactionType.stockTransactionTypeName;\n            r.systemTransactionType = stockTransaction.stockTransactionType.systemTransactionType.toLowerCase();\n            r.referenceId = stockTransaction.referenceId;\n            r.referenceDescription = stockTransaction.referenceDescription;\n            r.referenceType = stockTransaction.referenceType;\n            r.variantName = stockTransaction.articleVariant.variantDetail2.variantDetailName;\n            r.groupKey = r.accountingDate + ' ' + r.transactionType + ' ' + r.referenceId + ' ' + r.referenceDescription;\n            r.columns = vm.transGrid.columns;\n            r.fullDateTime = stockTransaction.accountingDate;\n\n            if (stockTransaction.stockTransactionType.systemTransactionType.toLowerCase() === \"salereservation\") {\n                r[r.variantName] = stockTransaction.reservedQuantity;\n            } else if (stockTransaction.stockTransactionType.systemTransactionType.toLowerCase() === \"purchasereservation\") {\n                r[r.variantName] = stockTransaction.orderedQuantity;\n            } else {\n                r[r.variantName] = stockTransaction.quantity;\n            }\n\n            rows.push(r);\n        });\n\n        var oldRow = {};\n\n        vm.rowData.splice(0,vm.rowData.length); // Clears array\n\n        _.forEach(_.sortBy(rows, 'groupKey'), function (row) {\n            if (oldRow.groupKey !== row.groupKey) {\n                vm.rowData.push(row);\n                oldRow = row;\n            } else {\n                if (oldRow[row.variantName]) {\n                    oldRow[row.variantName] += row[row.variantName];\n                } else {\n                    oldRow[row.variantName] = row[row.variantName];\n                }\n            }\n        });\n\n        vm.rowData = _.orderBy(vm.rowData, 'fullDateTime', 'desc');\n\n        vm.displayedRows = vm.rowData.slice(0, vm.elementsPerPage);\n\n        //Compile summaries of each row\n        _.forEach(vm.displayedRows, function(dr) {\n            var sum = _.sumBy(dr.columns, function(c) {\n                if (c.id === 'accountingDate' || c.id === 'transactionType' || c.id === 'referenceDescription') { return 0; }\n                return dr[c.id];\n            });\n            dr.sum = sum;\n        });\n\n        //Compile summaries of each column\n        var summaryRow = { columns: [], sum: 0 };\n        _.forEach(vm.displayedRows, function(dr) {\n            _.forEach(dr.columns, function(c) {\n                if (!_.find(summaryRow.columns, function(o) { return o.id === c.id; })) { summaryRow.columns.push(c); }\n\n                if (!summaryRow[c.id]) { summaryRow[c.id] = 0; }\n                if (c.id === 'accountingDate' || c.id === 'transactionType' || c.id === 'referenceDescription') {\n                    summaryRow[c.id] = '';\n                } else {\n                    summaryRow[c.id] += dr[c.id] ? dr[c.id] : 0;\n                }\n            });\n            summaryRow.sum += dr.sum;\n        });\n        vm.displayedRows.push(summaryRow);\n    }\n\n    function pageChanged() {\n        vm.displayedRows.length = 0;\n        var numberOfItems = Math.min(vm.elementsPerPage, vm.rowData.length);\n        var startPosition = vm.elementsPerPage * (vm.currentPage - 1);\n        var endPosition = Math.min(((startPosition + numberOfItems) - 1), vm.rowData.length);\n        for (var i = startPosition; i <= endPosition; i++) {\n            vm.displayedRows.push(vm.rowData[i]);\n        }\n    }\n}\n\n\n","// @ngInject\nfunction ArticleStocksHistoryDialogService($uibModal, StockApiService) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(articleId, locationId, articleVariantId) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'ArticleStocksHistoryDialogController as vm',\n            templateUrl: 'main/stock/articles/articleStocksHistory/articleStocksHistory.dialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            articleId: function() {\n                return articleId;\n            },\n            locationId: function() {\n                return locationId;\n            },\n            articleVariantId: function() {\n                return articleVariantId;\n            },\n            article: function() {\n                return StockApiService.getProduct(articleId);\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction ArticleStocksHistoryDialogController($uibModalInstance, article, articleId, locationId, articleVariantId) {\n    var vm = this;\n    vm.article = article;\n\n    vm.articleId = articleId;\n    vm.locationId = locationId;\n    vm.articleVariantId = articleVariantId;\n    vm.close = close;\n    vm.articleVariant = {};\n\n    var colorvariants = _.filter(vm.article.articleVariants, { 'variantDetail1': { 'id': articleVariantId}});\n\n    if (colorvariants.length > 0) {\n        vm.articleVariant = colorvariants[0];\n    }\n\n    function close() {\n        $uibModalInstance.close();\n    }\n}\n\nangular.module('stock.articles.articleStocksHistory', [])\n.service('ArticleStocksHistoryDialogService', ArticleStocksHistoryDialogService)\n.controller('ArticleStocksHistoryDialogController', ArticleStocksHistoryDialogController);\n\n\n\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock.articlesearch.article', {\n        url: '/{articleId}',\n        views: {\n            \"articleView@stock\": {\n                templateUrl: 'main/stock/articles/article/article.tpl.html',\n                controller: 'StockArticleController as vm'\n            }\n        },\n        resolve: {\n            article: articleResolver,\n            stocks: stocksResolver\n        }\n    });\n}\n\n// @ngInject\nfunction articleResolver($stateParams, StockApiService) {\n    return StockApiService.getProduct($stateParams.articleId);\n}\n\n// @ngInject\nfunction stocksResolver($stateParams, StockApiService) {\n    return StockApiService.getProductStock($stateParams.articleId);\n}\n\n// @ngInject\nfunction StockArticleController($state, $window, $translate, article, stocks, AuthService, ArticleLabelsPrintDialogService) {\n    var vm = this;\n    console.log(article);\n    //Properties\n    vm.selectedArticle = article;\n    vm.selectedArticleStocks = stocks;\n    var variantsGrid = {};\n    variantsGrid.columns = [];\n    vm.rowData = [];\n    vm.variantsGrid = [];\n    vm.variantsGrid.columns = [];\n    vm.selectedLocation = {};\n    vm.selectedVariantDetail1 = {};\n    vm.validationErrors = [];\n    vm.lastVariant1RowClicked = {};\n    vm.selectedFilter = {};\n    vm.stocksLocations = pickOutUniqueLocations(stocks);\n    vm.stocksVariant1s = _.sortBy(pickOutUniqueVarDetail1s(article.articleVariants), function(variant) { return variant.variantDetailName; });\n    vm.locationFilter = angular.copy(vm.stocksLocations);\n    vm.locationFilter.unshift({ id: -1, locationName: $translate.instant('common.all') });\n    vm.selectedFilter.location = vm.locationFilter[0];\n    vm.variantFilters = angular.copy(vm.stocksVariant1s);\n    vm.variantFilters.unshift({ id: -1, variantDetailName: $translate.instant('common.all') });\n    vm.selectedFilter.variant = vm.variantFilters[0];\n    vm.shouldDisplayDetails = false;\n\n    //Properties\n    vm.selectedVariantDetailChanged = selectedVariantDetailChanged;\n    vm.setSelectedLocationAndVariant1 = setSelectedLocationAndVariant1;\n    vm.filterRowData = filterRowData;\n    vm.shouldShowDetails = shouldShowDetails;\n    vm.getColumnSum = getColumnSum;\n    vm.getTotalSum = getTotalSum;\n\n    vm.shouldHaveIsCurrentStyle = shouldHaveIsCurrentStyle;\n    vm.shouldNotHaveIsCurrentStyle = shouldNotHaveIsCurrentStyle;\n\n    vm.openLabelsModal = openLabelsModal;\n    \n    vm.canAccess = AuthService.canAccess;\n    vm.mayReadStockLogistics = AuthService.canAccess('stockLogistics', 'read');\n    \n    vm.productStateGo = productStateGo;\n\n    updateVariantsGridData();\n\n    function openLabelsModal() {\n        ArticleLabelsPrintDialogService.showDialog(vm.selectedArticle.id);\n    }\n\n    function selectedVariantDetailChanged(sender) {\n        vm.selectedVariantDetail1 = sender.selectedItem;\n    }\n\n    function setSelectedLocationAndVariant1(row) {\n        if (!row.showHistory) {\n            vm.lastVariant1RowClicked = {\n                selectedVariantDetail1id: row.variantDetails1Id,\n                selectedLocationId: row.location.id\n            };\n            vm.selectedVariantDetail1.id = row.variantDetails1Id;\n            vm.selectedLocation.id = row.location.id;\n            row.showHistory = true;\n        } else if (row.showHistory &&\n            vm.lastVariant1RowClicked.selectedVariantDetail1id === row.variantDetails1Id &&\n            vm.lastVariant1RowClicked.selectedLocationId === row.location.id) {\n            vm.lastVariant1RowClicked = {\n                selectedVariantDetail1id: row.variantDetails1Id,\n                selectedLocationId: row.location.id\n            };\n            row.showHistory = false;\n        } else {\n            vm.selectedVariantDetail1.id = row.variantDetails1Id;\n            vm.selectedLocation.id = row.location.id;\n        }\n    }\n\n    function updateVariantsGridData() {\n        var variantDetail1s = [];\n        var variantDetail2s = [];\n\n        _.each(vm.selectedArticle.articleVariants, function(articleVariant) {\n            variantDetail1s.push(articleVariant.variantDetail1);\n            variantDetail2s.push(articleVariant.variantDetail2);\n        });\n\n       variantDetail1s = _.uniqBy(variantDetail1s, function(detail) {\n            return detail.id; // Compare by ID\n        });\n        variantDetail2s = _.uniqBy(variantDetail2s, function(detail) {\n            return detail.id; // Compare by ID\n        });\n\n        variantDetail1s = _.sortBy(variantDetail1s, function(detail) { return detail.variantDetailName; });\n        variantDetail2s = _.sortBy(variantDetail2s, function(detail) { return detail.sortOrder; });\n\n        vm.variantsGrid.columns = [];\n\n        // Add first row header column\n        // vm.variantsGrid.columns.push({ id: \"locationName\", name: $translate.instant('location.location') });\n        // vm.variantsGrid.columns.push({ id: \"variantDetails1Name\", name: $translate.instant('article.variant') });\n\n        _.each(variantDetail2s, function(varDetail2) {\n            vm.variantsGrid.columns.push({ id: varDetail2.variantDetailName, name: varDetail2.variantDetailName });\n        });\n\n        // vm.variantsGrid.columns.push({ id: \"sum\", name: $translate.instant('stock.sumQuantity') });\n\n        loadVariantsGridData();\n    }\n\n    function loadVariantsGridData() {\n        vm.rowData = [];\n        var currentLocationStocks = vm.selectedArticleStocks;\n\n        var variantRows = _.groupBy(vm.selectedArticle.articleVariants, function(variant) {\n            return variant.variantDetail1.id;\n        });\n        var locations = vm.stocksLocations;\n        locations = _.sortBy(locations, function(location) { return location.locationNumber; });\n\n        _.each(locations, function(location) {\n            _.each(variantRows, function(variantRowValues) {\n                var r = {};\n                r.sum = 0;\n                r.orderedSum = 0;\n                r.reservedSum = 0;\n                r.showHistory = false;\n\n                //Get variant stock quantities\n                _.each(variantRowValues, function(variantRowValue) {\n                    var relatedStock = _.find(currentLocationStocks, function(stock) { return stock.articleVariant.id === variantRowValue.id && stock.location.id === location.id; });\n                    r.variantDetails1Name = variantRowValue.variantDetail1.variantDetailName;\n                    r.variantDetails1Id = variantRowValue.variantDetail1.id;\n                    r.IsCurrent = variantRowValue.isCurrent; \n                    r.currentRank = variantRowValue.articleCollection.currentRank;\n                    if (relatedStock !== undefined) {\n                        if (!r[variantRowValue.variantDetail2.variantDetailName]) {\n                            r[variantRowValue.variantDetail2.variantDetailName] = {};\n                            r[variantRowValue.variantDetail2.variantDetailName].quantity = 0;\n                            r[variantRowValue.variantDetail2.variantDetailName].orderedQuantity = 0;\n                            r[variantRowValue.variantDetail2.variantDetailName].reservedQuantity = 0;\n                        }\n                        r[variantRowValue.variantDetail2.variantDetailName].quantity += relatedStock.quantity;\n                        r[variantRowValue.variantDetail2.variantDetailName].orderedQuantity += relatedStock.orderedQuantity;\n                        r[variantRowValue.variantDetail2.variantDetailName].reservedQuantity += relatedStock.reservedQuantity;\n                        r.sum += relatedStock.quantity;\n                        r.orderedSum += relatedStock.orderedQuantity;\n                        r.reservedSum += relatedStock.reservedQuantity;\n                    }\n                });\n\n                //Get variant location names\n                r.locationName = location.locationName;\n                r.location = location;\n\n                vm.rowData.push(r);\n                console.log(r);\n            });\n        });\n    }\n\n\n    function pickOutUniqueLocations(stocks) {\n       var locations = [];\n        _.each(stocks, function(stock) {\n            var unique = true;\n            _.each(locations, function(location) {\n                if (sameLocation(location, stock.location)) {\n                    unique = false;\n                }\n            });\n            if (unique) {\n                locations.push(stock.location);\n            }\n        });\n        return locations;\n    }\n\n    function pickOutUniqueVarDetail1s(articleVariants) {\n        var varDetail1s = [];\n        _.forEach(articleVariants, function(artVar) {\n            varDetail1s.push(artVar.variantDetail1);\n        });\n        varDetail1s = _.uniqBy(varDetail1s, function(detail) {\n            return detail.id;\n        });\n        return varDetail1s;\n    }\n\n    function sameLocation(location1, location2) {\n        if (location1.id === location2.id) {\n            return true;\n        }\n        return false;\n    }\n\n    function filterRowData(row) {\n        return (vm.selectedFilter.location.id === -1 ||\n                    row.location.locationName === vm.selectedFilter.location.locationName) &&\n               (vm.selectedFilter.variant.id === -1 ||\n                    row.variantDetails1Name === vm.selectedFilter.variant.variantDetailName);\n    }\n\n    function shouldShowDetails(row) {\n        return row.showHistory && vm.selectedVariantDetail1.id === row.variantDetails1Id && vm.selectedLocation.id === row.location.id;\n    }\n\n    function getColumnSum(col) {\n        var sum = _.sumBy(vm.rowData, function(o) {\n            if (vm.filterRowData(o) && o[col.id]) {\n                return o[col.id].quantity;\n            } else {\n                return 0;\n            }\n        });\n\n        return sum;\n    }\n\n    function getTotalSum() \n    {\n        var sum = 0;\n        _.forEach(vm.rowData, function(r) {\n            sum += r.sum;\n        });\n        return sum;\n    }\n\n    function shouldHaveIsCurrentStyle(row) \n    {\n        if (!row) { return false; }\n        return row.IsCurrent === true;\n    }\n\n    function shouldNotHaveIsCurrentStyle(row) {\n        if (!row) { return false; }\n        return row.IsCurrent === false && (row.currentRank < 0);\n    }\n\n    function productStateGo(stringState){\n        $state.go(stringState, \n            {\n                articleId: vm.selectedArticle.id,\n                filter: $state.params.filter,\n                currentPage:  $state.params.currentPage,\n                pageSize:  $state.params.pageSize,\n                inactive:  $state.params.inactive,\n                match:  $state.params.match\n            }\n        );\n    }\n}\n\nangular.module('stock.articles.article', [])\n    .config(stateConfig)\n    .controller('StockArticleController', StockArticleController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock.articlesearch', {\n        url: '/stockarticles?currentPage&filter&pageSize&inactive&match',\n        views: {\n            'articleList@stock': {\n                templateUrl: 'main/stock/articles/articles.tpl.html',\n                controller: 'StockArticlesController as vm'\n            }\n        },\n        resolve: {\n            articles: articlesResolver,\n            isModelInventory: function() { return false; },\n            isOrderingPoints: function() { return false; },\n            searchTerms: searchTermResolver\n        }\n    });\n\n    $stateProvider.state('stock.modelinventorysearch', {\n        url: '/modelinventory?currentPage&filter&pageSize&inactive&match',\n        views: {\n            'articleList@stock': {\n                templateUrl: 'main/stock/articles/articles.tpl.html',\n                controller: 'StockArticlesController as vm'\n            }\n        },\n        resolve: {\n            articles: articlesResolver,\n            isModelInventory: function() { return true; },\n            isOrderingPoints: function() { return false; },\n            searchTerms: searchTermResolver\n        }\n    });\n\n    $stateProvider.state('stock.orderingpointssearch', {\n        url: '/orderingpoints?currentPage&filter&pageSize&inactive&match',\n        views: {\n            'articleList@stock': {\n                templateUrl: 'main/stock/articles/articles.tpl.html',\n                controller: 'StockArticlesController as vm'\n            }\n        },\n        resolve: {\n            articles: articlesResolver,\n            isModelInventory: function() { return false; },\n            isOrderingPoints: function() { return true; },\n            searchTerms: searchTermResolver\n        }\n    });\n}\n\n// @ngInject\nfunction articlesResolver(StockApiService, $stateParams) {\n    if (!$stateParams.currentPage || $stateParams.currentPage < 1) { $stateParams.currentPage = 1; }\n    if (!$stateParams.filter) { $stateParams.filter = ''; }\n    if (!$stateParams.pageSize || $stateParams.pageSize < 20) { $stateParams.pageSize = 20; }\n    if (!$stateParams.inactive === undefined) { $stateParams.inactive = false; }\n    if (!$stateParams.match === undefined) { $stateParams.match = false; }\n    return StockApiService.getProducts($stateParams.currentPage, $stateParams.filter, $stateParams.pageSize, $stateParams.inactive, $stateParams.match);\n}\n// @ngInject\nfunction searchTermResolver($stateParams) {\n    return {\n        filter: $stateParams.filter,\n        currentPage: $stateParams.currentPage,\n        pageSize: $stateParams.pageSize,\n        inactive: $stateParams.inactive,\n        match: $stateParams.match\n    };\n}\n// @ngInject\nfunction StockArticlesController($scope, $state, $stateParams, StockApiService, loadSpinnerService, articles, isModelInventory, isOrderingPoints, searchTerms) {\n    var vm = this;\n\n    //Properties\n    vm.articles = articles.data.results;\n    vm.filter = '';\n    vm.currentPage = 1;\n    vm.selectedArticleId = 0;\n    vm.pageSize = 20;\n    vm.pageSize = articles.data.total;\n    vm.selectedArticleId = 0;\n    vm.useElasticProductSearch = false;\n    vm.match = false;\n    vm.inactive = false;\n\n    //Methods\n    vm.selectArticle = selectArticle;\n    vm.getSearchTooltipText = getSearchTooltipText;\n\n    activate();\n\n    function activate() {\n        vm.filter = searchTerms.filter ? searchTerms.filter : '';\n        vm.currentPage = searchTerms.currentPage > 1 ? searchTerms.currentPage : 1;\n        vm.pageSize = searchTerms.pageSize >= 20 ? searchTerms.pageSize : 20;\n        vm.match = searchTerms.match ? searchTerms.match == 'true' ? true : false : false;\n        vm.inactive = searchTerms.inactive ? searchTerms.inactive == 'true' ? true : false : false;\n\n        $scope.$watch(function onArticleIdWatch() {\n        return $state.params.articleId;\n    }, function onArticleIdChanged() {\n        vm.selectedArticleId = parseInt($state.params.articleId, 10);\n    });\n    }\n\n    function getSearchTooltipText() {\n        var tooltipString = 'Sökning med partiella ord görs med en stjärna, ex. \"Ja*\" för \"Jacka\"';\n        if (!vm.useElasticProductSearch) { tooltipString = ''; }\n\n        return tooltipString;\n    }\n\n    function selectArticle(article) {\n        if (isModelInventory) {\n            $state.go('stock.modelinventorysearch.modelinventory', {\n                articleId: article.articleId,\n                filter: article.searchTerms.filter,\n                currentPage: article.searchTerms.currentPage,\n                pageSize: article.searchTerms.pageSize,\n                inactive: article.searchTerms.inactive,\n                match: article.searchTerms.match\n            });\n        } else if (isOrderingPoints) {\n            $state.go('stock.orderingpointssearch.orderingpoints', {\n                articleId: article.articleId,\n                filter: article.searchTerms.filter,\n                currentPage: article.searchTerms.currentPage,\n                pageSize: article.searchTerms.pageSize,\n                inactive: article.searchTerms.inactive,\n                match: article.searchTerms.match\n            });\n        } else {\n            $state.go('stock.articlesearch.article', {\n                articleId: article.articleId,\n                filter: article.searchTerms.filter,\n                currentPage: article.searchTerms.currentPage,\n                pageSize: article.searchTerms.pageSize,\n                inactive: article.searchTerms.inactive,\n                match: article.searchTerms.match\n            });\n        }\n    }\n}\n\nangular\n    .module('stock.articles', ['stock.articles.article', 'stock.articles.modelinventory', 'stock.articles.caArticleStocksHistory', 'stock.articles.articleStocksHistory'])\n    .config(stateConfig)\n    .controller('StockArticlesController', StockArticlesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n  $stateProvider.state(\"stock.modelinventorysearch.modelinventory\", {\n    url: \"/{articleId}\",\n    views: {\n      \"articleView@stock\": {\n        templateUrl:\n          \"main/stock/articles/modelinventory/modelinventory.tpl.html\",\n        controller: \"StockModelInventoryController as vm\",\n      },\n    },\n\n    resolve: {\n      article: articleResolver,\n      stocks: stocksResolver,\n      inventoriesCount: getPendingInventoryCountResolver,\n    },\n  });\n}\n\n// @ngInject\nfunction articleResolver($stateParams, StockApiService) {\n  return StockApiService.getProduct($stateParams.articleId);\n}\n\n// @ngInject\nfunction stocksResolver($stateParams, StockApiService) {\n  return StockApiService.getProductStock($stateParams.articleId);\n}\n\n// @ngInject\nfunction getPendingInventoryCountResolver(\n  $stateParams,\n  InventoryingApiService\n) {\n  return InventoryingApiService.getPendingInventoryCount(\n    $stateParams.articleId\n  );\n}\n\n// @ngInject\nfunction StockModelInventoryController(\n  $window,\n  $state,\n  $translate,\n  $timeout,\n  $scope,\n  AuthService,\n  article,\n  stocks,\n  inventoriesCount,\n  StockApiService,\n  ToasterService,\n  loadSpinnerService,\n  ArticleLabelsPrintDialogService,\n  InventoryingApiService\n) {\n  var vm = this;\n  var rowData = [];\n  var rowCollection = new wijmo.collections.CollectionView(rowData);\n  var flexGrid = {};\n  var flexGridCurrentlySelectedItem = {};\n  var originalCellValue = \"\";\n\n  var totalsGrid = {};\n\n  vm.selectedArticle = article;\n  vm.stocksData = stocks;\n  vm.inventoriesPending = inventoriesCount.data;\n  vm.saveButtonDisable = vm.inventoriesPending.count > 0;\n  vm.stocksLocations = pickOutUniqueLocations(vm.stocksData);\n  vm.selectedLocation = {};\n  vm.totals = [\n    {\n      sumName: \"Total\",\n      theoreticalTotal: 0,\n      inventoriedTotal: 0,\n      difference: 0,\n    },\n  ];\n\n  vm.inventory = {\n    inventoryDescription: \"\",\n    deliverImmediately: true,\n    location: vm.selectedLocation,\n    article: vm.selectedArticle,\n    inventoryDate: new Date(),\n    inventoryRows: [],\n  };\n\n  vm.canAccess = AuthService.canAccess;\n  vm.mayReadStockLogistics = AuthService.canAccess(\"stockLogistics\", \"read\");\n  vm.captureVariantsGrid = captureVariantsGrid;\n  vm.beginEditing = beginEditing;\n  vm.editEnded = editEnded;\n  vm.selectedLocationChanged = selectedLocationChanged;\n  vm.zeroAllQuantities = zeroAllQuantities;\n  vm.captureTotalsGrid = captureTotalsGrid;\n  vm.contextMenuZeroRow = contextMenuZeroRow;\n  vm.saveChanges = saveChanges;\n  vm.openLabelsModal = openLabelsModal;\n  vm.productStateGo = productStateGo;\n\n  activate();\n\n  function activate() {\n    $window.addEventListener(\"click\", hideContextMenuListener);\n\n    StockApiService.getFilteredLocations().then(\n      function (response) {\n        vm.stocksLocations = response;\n      },\n      function (error) {\n        console.log(error);\n      }\n    );\n  }\n\n  function pollPendingInventoryCount(isNewInventory) {\n    var loadTime = 5000, //Load the data every 5 second\n      loadPromise;\n\n    var getData = function () {\n      InventoryingApiService.getPendingInventoryCount(\n        vm.selectedArticle.id\n      ).then(\n        function (response) {\n          vm.inventoriesPending = response.data;\n          if (response.data.count === 0) {\n            cancelNextLoad();\n            $state.reload();\n            ToasterService.showInfo(\n              $translate.instant(\"common.done\"),\n              $translate.instant(\"stock.inventorymodel\")\n            );\n\n            return;\n          }\n          nextLoad();\n        },\n        function (error) {\n          console.log(error);\n        }\n      );\n    };\n\n    var cancelNextLoad = function () {\n      $timeout.cancel(loadPromise);\n    };\n\n    var nextLoad = function () {\n      //Clear timeout\n      cancelNextLoad();\n      loadPromise = $timeout(getData, loadTime);\n    };\n\n    //Start polling the data from the server\n    getData();\n\n    $scope.$on(\"$destroy\", function () {\n      cancelNextLoad();\n    });\n  }\n\n  function captureTotalsGrid(sender) {\n    totalsGrid = sender;\n\n    // Setting the item formatter, coloring the first line (total sum) differently.\n    totalsGrid.itemFormatter = function (panel, r, c, cell) {\n      var style = cell.style;\n      var regularCellType = wijmo.grid.CellType.Cell;\n\n      if (r === 0 && panel.cellType === regularCellType) {\n        style.color = \"#000000\";\n        style.backgroundColor = \"#dddddd\";\n      }\n    };\n  }\n\n  function openLabelsModal() {\n    ArticleLabelsPrintDialogService.showDialog(vm.selectedArticle.id);\n  }\n\n  function saveChanges() {\n    vm.inventory.inventoryRows = [];\n\n    _.forEach(rowData, function (data) {\n      var keys = Object.keys(data);\n      var variant1Name = data[\"variantDetails1Name\"];\n      _.forEach(keys, function (key) {\n        if (key !== \"variantDetails1Name\") {\n          var relatedArticleVariant = _.find(\n            vm.selectedArticle.articleVariants,\n            function (articleVariant) {\n              return (\n                articleVariant.variantDetail1.variantDetailName ===\n                  variant1Name &&\n                articleVariant.variantDetail2.variantDetailName === key\n              );\n            }\n          );\n\n          var specifiedQuantity = data[key].split(\"(\")[0].trim();\n\n          var inventoryRow = {\n            articleVariant: relatedArticleVariant,\n            quantity: parseInt(specifiedQuantity),\n          };\n\n          vm.inventory.inventoryRows.push(inventoryRow);\n        }\n      });\n    });\n\n    loadSpinnerService.start(\"mainSpinner\");\n    StockApiService.saveProductInventory(vm.inventory)\n      .then(\n        function (response) {\n          ToasterService.showInfo(\n            $translate.instant(\"stock.inventorybeingprocessed\"),\n            $translate.instant(\"stock.inventorymodel\")\n          );\n          //$state.reload();\n        },\n        function (error) {\n          console.log(error);\n          ToasterService.showError(\n            $translate.instant(error.message),\n            $translate.instant(\"common.error\")\n          );\n        }\n      )\n      .finally(function () {\n        // $state.reload();\n        pollPendingInventoryCount(true);\n        loadSpinnerService.stop(\"mainSpinner\");\n      });\n  }\n\n  function zeroAllQuantities() {\n    _.forEach(rowData, function (data) {\n      var keys = Object.keys(data);\n      _.forEach(keys, function (key) {\n        if (key !== \"variantDetails1Name\") {\n          var dataContents = data[key].split(\"(\");\n          data[key] = 0 + \" (\" + dataContents[1];\n        }\n      });\n    });\n\n    flexGrid.invalidate();\n    calculateNewTotals();\n  }\n\n  function calculateNewTotals() {\n    var totalsObject = _.find(vm.totals, function (totalsEntry) {\n      return totalsEntry.sumName === \"Total\";\n    });\n\n    totalsObject.theoreticalTotal = 0;\n    totalsObject.inventoriedTotal = 0;\n    totalsObject.difference = 0;\n\n    _.forEach(rowData, function (data) {\n      var keys = Object.keys(data);\n      var variant1TotalsObject = _.find(vm.totals, function (variant1Entry) {\n        return variant1Entry.sumName === data[\"variantDetails1Name\"];\n      });\n      if (variant1TotalsObject === undefined) {\n        variant1TotalsObject = {\n          sumName: data[\"variantDetails1Name\"],\n          theoreticalTotal: 0,\n          inventoriedTotal: 0,\n          difference: 0,\n        };\n        vm.totals.push(variant1TotalsObject);\n      }\n\n      variant1TotalsObject.theoreticalTotal = 0;\n      variant1TotalsObject.inventoriedTotal = 0;\n      variant1TotalsObject.difference = 0;\n\n      _.forEach(keys, function (key) {\n        if (key !== \"variantDetails1Name\") {\n          var currentData = data[key].split(\"(\");\n          currentData[1] = currentData[1].substring(\n            0,\n            currentData[1].length - 1\n          );\n\n          totalsObject.theoreticalTotal += parseInt(currentData[1]);\n          totalsObject.inventoriedTotal += parseInt(currentData[0]);\n\n          variant1TotalsObject.theoreticalTotal += parseInt(currentData[1]);\n          variant1TotalsObject.inventoriedTotal += parseInt(currentData[0]);\n\n          variant1TotalsObject.difference =\n            variant1TotalsObject.inventoriedTotal -\n            variant1TotalsObject.theoreticalTotal;\n        }\n      });\n    });\n\n    totalsObject.difference =\n      totalsObject.inventoriedTotal - totalsObject.theoreticalTotal;\n    if (totalsGrid.collectionView) {\n      totalsGrid.collectionView.refresh();\n    }\n  }\n\n  function beginEditing(sender, e) {\n    var rowNumber = flexGrid.selection.row;\n    var columnNumber = flexGrid.selection.col;\n\n    var columnHeader = flexGrid.columns[columnNumber].binding;\n\n    originalCellValue = angular.copy(rowData[rowNumber][columnHeader]);\n\n    rowData[rowNumber][columnHeader] = rowData[rowNumber][columnHeader]\n      .split(\"(\")[0]\n      .trim();\n    rowCollection.refresh();\n  }\n\n  function editEnded(sender, e) {\n    var rowNumber = flexGrid.selection.row;\n    var columnNumber = flexGrid.selection.col;\n\n    var columnHeader = flexGrid.columns[columnNumber].binding;\n\n    // Reinserting the parenthesis value.\n    rowData[rowNumber][columnHeader] =\n      rowData[rowNumber][columnHeader] + \" (\" + originalCellValue.split(\"(\")[1];\n    rowCollection.refresh();\n    calculateNewTotals();\n  }\n\n  function selectedLocationChanged(sender) {\n    if (!sender.selectedItem) {\n      return;\n    }\n\n    vm.selectedLocation = _.find(vm.stocksLocations, function (location) {\n      return location.id === sender.selectedItem.id;\n    });\n\n    vm.inventory.location = vm.selectedLocation;\n    initializeGridColumns();\n  }\n\n  function initializeGridColumns() {\n    // Need to wait for the grid to be initialized\n    if (!flexGrid.columns) {\n      setTimeout(initializeGridColumns, 100);\n      return;\n    }\n\n    rowData.length = 0;\n    flexGrid.columns.clear();\n    rowCollection.refresh();\n\n    // Add first row header column\n    var rowHeader = new wijmo.grid.Column();\n    rowHeader.binding = \"variantDetails1Name\";\n    rowHeader.header = \" \";\n    rowHeader.allowSorting = false;\n    rowHeader.width = 100;\n    rowHeader.isReadOnly = true;\n    flexGrid.columns.push(rowHeader);\n\n    var columns = getDataColumns();\n\n    // Add dynamic columns\n    _.forEach(columns, function (variantDetail) {\n      var c = new wijmo.grid.Column();\n      c.binding = variantDetail.variantDetailName;\n      c.header = variantDetail.variantDetailName;\n      c.width = \"*\";\n      c.allowSorting = false;\n      c.inputType = \"text\";\n      c.isReadOnly = false;\n      c.align = \"right\";\n      flexGrid.columns.push(c);\n    });\n\n    loadGridData();\n  }\n\n  function captureVariantsGrid(sender) {\n    flexGrid = sender;\n\n    flexGrid.initialize({\n      autoGenerateColumns: false,\n      selectionMode: wijmo.grid.SelectionMode.Cell,\n      allowDragging: wijmo.grid.AllowDragging.None,\n      allowResizing: wijmo.grid.AllowResizing.None,\n      headersVisibility: wijmo.grid.HeadersVisibility.Column,\n      isReadOnly: false,\n      itemsSource: rowCollection,\n    });\n\n    initializeGridColumns();\n\n    var host = flexGrid.hostElement;\n    host.addEventListener(\"contextmenu\", contextMenuListener);\n  }\n\n  function getDataColumns() {\n    var columns = [];\n\n    // Group by nested variantDetail2 in the current articleVariants\n    columns = _.groupBy(vm.selectedArticle.articleVariants, function (variant) {\n      return variant.variantDetail2.variantDetailName;\n    });\n    // Get the variantDetail2 from each group in an array\n    columns = _.reduce(\n      columns,\n      function (newArray, val, key) {\n        newArray.push(val[0].variantDetail2);\n        return newArray;\n      },\n      []\n    );\n\n    return _.sortBy(columns, \"sortOrder\");\n  }\n\n  function loadGridData() {\n    var articleVariants = _.groupBy(\n      vm.selectedArticle.articleVariants,\n      function (articleVariant) {\n        return articleVariant.variantDetail1.variantDetailName;\n      }\n    );\n\n    _.forEach(articleVariants, function (variantRowValues) {\n      var r = {};\n      _.forEach(variantRowValues, function (variantRowValue) {\n        r.variantDetails1Name =\n          variantRowValue.variantDetail1.variantDetailName;\n\n        var relatedStock = getStockFor(\n          r.variantDetails1Name,\n          variantRowValue.variantDetail2.variantDetailName\n        );\n\n        if (\n          relatedStock === undefined ||\n          relatedStock.location.id !== vm.selectedLocation.id\n        ) {\n          relatedStock = {};\n          relatedStock[\"quantity\"] = 0;\n        }\n\n        r[variantRowValue.variantDetail2.variantDetailName] =\n          relatedStock.quantity + \" (\" + relatedStock.quantity + \")\";\n      });\n      rowData.push(r);\n    });\n    rowCollection.refresh();\n\n    calculateNewTotals();\n  }\n\n  function getStockFor(variantDetail1Name, variantDetail2Name) {\n    return _.find(vm.stocksData, function (stock) {\n      return (\n        stock.articleVariant.variantDetail1.variantDetailName ===\n          variantDetail1Name &&\n        stock.articleVariant.variantDetail2.variantDetailName ===\n          variantDetail2Name &&\n        stock.location.id === vm.selectedLocation.id\n      );\n    });\n  }\n\n  function pickOutUniqueLocations(stocks) {\n    var locations = [];\n    _.each(stocks, function (stock) {\n      var unique = true;\n      _.each(locations, function (location) {\n        if (location.id === stock.location.id) {\n          unique = false;\n        }\n      });\n      if (unique) {\n        locations.push(stock.location);\n      }\n    });\n    return locations;\n  }\n\n  function contextMenuZeroRow() {\n    console.log(flexGridCurrentlySelectedItem);\n    var keys = Object.keys(flexGridCurrentlySelectedItem);\n\n    _.forEach(keys, function (key) {\n      if (key !== \"variantDetails1Name\") {\n        console.log(\"Current key: \" + key);\n        console.log(flexGridCurrentlySelectedItem[key]);\n        var oldValue = flexGridCurrentlySelectedItem[key].split(\"(\");\n\n        flexGridCurrentlySelectedItem[key] = 0 + \" (\" + oldValue[1];\n      }\n    });\n\n    flexGrid.invalidate();\n    calculateNewTotals();\n  }\n\n  function hideContextMenuListener(e) {\n    var jqContextMenu = $(\"#inventoryContextMenu\");\n    jqContextMenu.css(\"visibility\", \"hidden\");\n  }\n\n  function contextMenuListener(event) {\n    var sel = flexGrid.selection;\n    var clickedRowNumber = sel.row;\n    var jqContextMenu = $(\"#inventoryContextMenu\");\n\n    event.preventDefault();\n    flexGridCurrentlySelectedItem = rowData[clickedRowNumber];\n\n    jqContextMenu.css(\"left\", event.clientX);\n    jqContextMenu.css(\"top\", event.clientY);\n    jqContextMenu.css(\"visibility\", \"visible\");\n  }\n\n  function productStateGo(stringState) {\n    if(typeof cancelNextLoad === 'function'){\n      cancelNextLoad();\n    }\n    $state.go(stringState, {\n      articleId: vm.selectedArticle.id,\n      filter: $state.params.filter,\n      currentPage: $state.params.currentPage,\n      pageSize: $state.params.pageSize,\n      inactive: $state.params.inactive,\n      match: $state.params.match,\n    },\n    {reload:true});\n  }\n}\n\nangular\n  .module(\"stock.articles.modelinventory\", [])\n  .config(stateConfig)\n  .controller(\"StockModelInventoryController\", StockModelInventoryController);\n","// @ngInject\nfunction InventoryingApiService($q, DS, DSHttpAdapter, ResourcesService, $cookies, $window) {\n    return {\n        getAll: getAll,\n        getById: getById,\n        getHeadInfoById: getHeadInfoById,\n        getInventoryItemGroups: getInventoryItemGroups,\n        getInventoryTypes: getInventoryTypes,\n        createInventory: createInventory,\n        updateInventory: updateInventory,\n        getInventoryDataForArticle: getInventoryDataForArticle,\n        uploadParseFile: uploadParseFile,\n        getInventoryRowsRelatedToItemGroup: getInventoryRowsRelatedToItemGroup,\n        getInventoryRowsRelatedToArticle: getInventoryRowsRelatedToArticle,\n        getInventoryRows: getInventoryRows,\n        approveItemGroupRelatedRows: approveItemGroupRelatedRows,\n        approveInventoryRow: approveInventoryRow,\n        approveInventoryRows: approveInventoryRows,\n        getInventoryReport: getInventoryReport,\n        getInventoryMainGroups: getInventoryMainGroups,\n        getInventoryFileErrors: getInventoryFileErrors,\n        getInventoryBrands: getInventoryBrands,\n        getMainGroupInventoryRows: getMainGroupInventoryRows,\n        getBrandInventoryRows: getBrandInventoryRows,\n        uploadInventoryFile: uploadInventoryFile,\n        queueInventoryForFinalization: queueInventoryForFinalization,\n        getPendingInventoryCount: getPendingInventoryCount\n    };\n\n    function getAll(page, filter, pageSize) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories', {params: params}).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getById(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getPendingInventoryCount(articleId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/pendingcount/' + articleId ).then(function(response) {\n            console.log(\"response\", response)\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryMainGroups(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/maingroups').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryBrands(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/brands').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getMainGroupInventoryRows(inventoryId, mainGroupId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/maingroups/' + mainGroupId + '/inventoryrows').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getBrandInventoryRows(inventoryId, brandId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/brands/' + brandId + '/inventoryrows').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getHeadInfoById(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/head').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function uploadParseFile(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'inventories/' + inventoryId + '/inventoryfile').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateInventory(data) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'inventories/', data).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryRowsRelatedToItemGroup(inventoryId, itemGroupId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/itemgroups/' + itemGroupId + '/inventoryrows').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryRowsRelatedToArticle(inventoryId, articleId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/articles/' + articleId + '/inventoryrows').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryRows(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/inventoryrows').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryFileErrors(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/file/errors').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryItemGroups(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/itemgroups').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryDataForArticle(inventoryId, articleId) {\n        var deferred = $.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'inventories/' + inventoryId + '/articles/' + articleId).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryTypes() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'types/inventory').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function createInventory(data) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'inventories', data).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function approveItemGroupRelatedRows(inventoryId, itemGroupId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'inventories/' + inventoryId + '/itemgroups/' + itemGroupId + '/approve').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function approveInventoryRow(inventoryId, inventoryRowId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'inventories/' + inventoryId + '/inventoryrows/' + inventoryRowId + '/approve').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function approveInventoryRows(inventoryId, inventoryRows) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'inventories/' + inventoryId + '/inventoryrows/approve', inventoryRows).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function uploadInventoryFile(inventoryId, fileData) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'inventories/' + inventoryId + '/uploadfile', fileData).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function queueInventoryForFinalization(inventoryId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'inventories/' + inventoryId + '/queueforfinalization').then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getInventoryReport(inventoryId, language, format) {\n        var deferred = $q.defer();\n\n        //eg. inventoryId = '1', language = 'se', format = 'xls' => 'inventories/1/report/se/asxls'\n        var url = DS.defaults.basePath + 'inventories/' + inventoryId + '/report/' + language + '/as' + format;\n        DSHttpAdapter.GET(url, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob;\n            if (format === 'pdf') {\n                blob = new Blob([response.data], {type: 'application/pdf'});\n            } else if (format === 'csv') {\n                blob = new Blob([response.data], {type: 'application/csv'});\n            } else if (format === 'xls') {\n                blob = new Blob([response.data], {type: 'application/vnd.ms-excel'});\n            }\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'report.' + format);\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s]){1,}(.pdf|.csv|.xls)/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular.module('inventorying.api', [])\n    .factory('InventoryingApiService', InventoryingApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock.stockpickinglist', {\n        url: \"/stockpickinglist\",\n        views: {\n            'articleView@stock': {\n                templateUrl: 'main/stock/pickinglist/stockPickingList.tpl.html',\n                controller: 'StockPickingListController as vm'\n            }\n        },\n        resolve: {\n            locations: locationResolver\n        }\n    });\n}\n\n// @ngInject\nfunction locationResolver(AnalysisApiService) {\n    return AnalysisApiService.getLocations();\n}\n\n// @ngInject\nfunction StockPickingListController($window, $translate, $scope, loadSpinnerService, StockApiService, ToasterService, locations) {\n    var vm = this;\n\n    //Properties\n    vm.startDate = new Date();\n    vm.endDate = new Date();\n    vm.location = undefined;\n    vm.locations = locations;\n    vm.sortorders = [];\n    vm.sortOrder2 = undefined;\n    vm.sortOrder3 = undefined;\n    vm.showCollection = false;\n    vm.showDepartment = false;\n    vm.selectedGrouping = {};\n    vm.includeArticleNumber = false;\n    vm.includeStorageItems = false;\n    vm.includeIsPhotographed = false;\n    vm.includeZeroAndNegativeQuantity = false;\n    vm.showRestOfLocations = false;\n\n    vm.portraitOrientation = false;\n    vm.groupings = [];\n\n    //Methods\n    vm.getStockPickingList = getStockPickingList;\n    vm.canPrintStockPickingList = canPrintStockPickingList;\n\n    activate();\n\n    function activate() {\n        vm.startDate.setDate(vm.startDate.getDate() - 1);\n        vm.startDate.setHours(0);\n        vm.startDate.setMinutes(0);\n        vm.sortorders = [\n            { id: 1, description: $translate.instant('article.brand'), code: 'Brand' }, //'Varumärke'\n            { id: 2, description: $translate.instant('article.maingroup'), code: 'MainGroup' }, //'Huvudgrupp'\n            { id: 3, description: $translate.instant('article.articlename'), code: 'ArticleName' }, //'Produktnamn'\n            { id: 4, description: $translate.instant('article.articlenumber'), code: 'ArticleNumber' }, //'Produktnummer'\n            { id: 5, description: $translate.instant('article.alternativearticlenumber'), code: 'AlternativeArticleNumber' }, //'Lev. produktnummer'\n            { id: 6, description: $translate.instant('article.department'), code: 'Department' }, //'Avdelning'\n            { id: 7, description: $translate.instant('common.variant1s'), code: 'Variant1Name' }, //'Variant 1 (färg)'\n            { id: 8, description: $translate.instant('common.variant2s'), code: 'Variant2Name' }, //'Variant 2 (storlek)'\n            { id: 9, description: $translate.instant('article.storageLocation'), code: 'StorageLocation' } //'Lagerplats'\n        ];\n        vm.sortOrder1 = vm.sortorders[0];\n        vm.groupings = [\n            { id: 1, name: $translate.instant('stock.print.noGrouping'), value: 'none' }, //'Ingen'\n            { id: 2, name: $translate.instant('stock.print.groupOnCollection'), value: 'groupOnCollection' }, //'Gruppera på säsong'\n            { id: 3, name: $translate.instant('stock.print.groupOnDepartment'), value: 'groupOnDepartment' }, //'Gruppera på avdelning'\n            { id: 4, name: $translate.instant('stock.print.groupOnCollectionAndSubcategory'), value: 'groupOnCollectionAndSubcategory' }, //'Gruppera på säsong och produktkategori'\n            { id: 5, name: $translate.instant('stock.print.groupOnDepartmentAndSubcategory'), value: 'groupOnDepartmentAndSubcategory' } //'Gruppera på avdelning och produktkategori'\n        ];\n        vm.selectedGrouping = vm.groupings[0];\n        readSettingsFromLocalStorage();\n\n        $scope.$watch(function() { return vm.portraitOrientation; }, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                vm.showCollection = false;\n                vm.showDepartment = false;\n                vm.includeArticleNumber = false;\n                vm.includeStorageItems = false;\n                vm.includeIsPhotographed = false;\n                vm.includeZeroAndNegativeQuantity = false;\n                vm.showRestOfLocations = false;\n\n            }\n        });\n    }\n\n    function getStockPickingList() {\n        loadSpinnerService.start('mainSpinner');\n\n        saveSettingsToLocalStorage();\n\n        var request = {\n            startDate: vm.startDate,\n            endDate: vm.endDate,\n            locationId: vm.location.id,\n            sortOrder1: vm.sortOrder1.code,\n            sortOrder2: vm.sortOrder2 ? vm.sortOrder2.code : undefined,\n            sortOrder3: vm.sortOrder3 ? vm.sortOrder3.code : undefined,\n            showCollection: vm.showCollection,\n            showDepartment: vm.showDepartment,\n            grouping: vm.selectedGrouping.value,\n            includeArticleNumber: vm.includeArticleNumber,\n            includeStorageItems: vm.includeStorageItems,\n            includeIsPhotographed: vm.includeIsPhotographed,\n            includeZeroAndNegativeQuantity: vm.includeZeroAndNegativeQuantity,\n            portraitOrientation: vm.portraitOrientation,\n            showRestOfLocations: vm.showRestOfLocations\n        };\n\n        StockApiService.downloadStockPickingList(request).then(function(response) {\n            if (response && response.status === 204) {\n                ToasterService.showWarning(\n                    $translate.instant('pickinglist.timespan') + ' ' + formatDate(vm.startDate) + ' - ' + formatDate(vm.endDate) + ' ' + $translate.instant('common.noResults'),\n                    $translate.instant('stock.stockpickinglist')\n                );\n            }\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function formatDate(date) {\n        if (!date) { return ''; }\n        return date.getFullYear() + '-' + (date.getMonth() + 1).toString().padStart(2, '0') + '-' + date.getDate().toString().padStart(2, '0') + ' ' + date.getHours().toString().padStart(2, '0') + ':' + date.getMinutes().toString().padStart(2, '0');\n    }\n\n    function canPrintStockPickingList() {\n        return !vm.location || vm.location.id <= 0;\n    }\n\n    function saveSettingsToLocalStorage() {\n        var request = {\n            sortOrder1: angular.copy(vm.sortOrder1.code),\n            sortOrder2: vm.sortOrder2 ? angular.copy(vm.sortOrder2.code) : null,\n            sortOrder3: vm.sortOrder3 ? angular.copy(vm.sortOrder3.code) : null,\n            showCollection: vm.showCollection,\n            showDepartment: vm.showDepartment,\n            grouping: vm.selectedGrouping.value,\n            includeArticleNumber: vm.includeArticleNumber,\n            includeStorageItems: vm.includeStorageItems,\n            includeIsPhotographed: vm.includeIsPhotographed,\n            includeZeroAndNegativeQuantity: vm.includeZeroAndNegativeQuantity,\n            portraitOrientation: vm.portraitOrientation,\n            showRestOfLocations: vm.showRestOfLocations\n        };\n\n        $window.localStorage.setItem('printStockPickingListSettings', JSON.stringify(request));\n    }\n\n    function readSettingsFromLocalStorage() {\n        if ($window.localStorage.printStockPickingListSettings) {\n            if (!isJsonString($window.localStorage.getItem('printStockPickingListSettings'))) {\n                $window.localStorage.removeItem('printStockPickingListSettings');\n            }\n\n            var settingsStr = $window.localStorage.getItem('printStockPickingListSettings');\n            if (settingsStr !== null) {\n                var json = JSON.parse(settingsStr);\n                if (json.portraitOrientation) { vm.portraitOrientation = json.portraitOrientation; }\n                if (json.showCollection) { vm.showCollection = json.showCollection; }\n                if (json.showDepartment) { vm.showDepartment = json.showDepartment; }\n                if (json.grouping) { vm.selectedGrouping = _.find(vm.groupings, function (o) { return o.value === json.grouping; }); }\n                if (json.includeArticleNumber) { vm.includeArticleNumber = json.includeArticleNumber; }\n                if (json.includeStorageItems) { vm.includeStorageItems = json.includeStorageItems; }\n                if (json.includeIsPhotographed) { vm.includeIsPhotographed = json.includeIsPhotographed; }\n                if (json.includeZeroAndNegativeQuantity) { vm.includeZeroAndNegativeQuantity = json.includeZeroAndNegativeQuantity; }\n                if (json.showRestOfLocations) { vm.showRestOfLocations = json.showRestOfLocations; }\n                if (json.sortOrder1 && _.indexOf(vm.sortorders, function(so) { return so.code === json.sortOrder1; })) { vm.sortOrder1 = _.find(vm.sortorders, function(so) { return so.code === json.sortOrder1; }); }\n                if (json.sortOrder2 && _.indexOf(vm.sortorders, function(so) { return so.code === json.sortOrder2; })) { vm.sortOrder2 = _.find(vm.sortorders, function(so) { return so.code === json.sortOrder2; }); }\n                if (json.sortOrder3 && _.indexOf(vm.sortorders, function(so) { return so.code === json.sortOrder3; })) { vm.sortOrder3 = _.find(vm.sortorders, function(so) { return so.code === json.sortOrder3; }); }\n            }\n        }\n    }\n    function isJsonString(str) {\n        try {\n            JSON.parse(str);\n        } catch (e) {\n            return false;\n        }\n        return true;\n    }\n}\n\nangular.module('stock.stockpickinglist', [])\n    .config(stateConfig)\n    .controller('StockPickingListController', StockPickingListController);\n","// @ngInject\r\nfunction stateConfig($stateProvider) {\r\n    $stateProvider.state('stock.saleThroughputReports', {\r\n        url: '/salethroughputreports',\r\n        views: {\r\n            \"wideColumnView@stock\": {\r\n                templateUrl: 'main/stock/reports/saleThroughputReports.tpl.html',\r\n                controller: 'SaleThroughputReportsController as vm'\r\n            }\r\n        },\r\n        resolve: {\r\n            brands: brandsResolver,\r\n            collections: collectionsResolver,\r\n            locations: locationsResolver,\r\n            departments: departmentsResolver\r\n        }\r\n    });\r\n}\r\n\r\n// @ngInject\r\nfunction brandsResolver(StockApiService) {\r\n    return StockApiService.getFilteredBrands();\r\n}\r\n\r\n// @ngInject\r\nfunction collectionsResolver(StockApiService) {\r\n    return StockApiService.getCollections();\r\n}\r\n\r\n// @ngInject\r\nfunction locationsResolver(StockApiService) {\r\n    return StockApiService.getFilteredLocations();\r\n}\r\n\r\n// @ngInject\r\nfunction departmentsResolver(StockApiService) {\r\n    return StockApiService.getDepartments();\r\n}\r\n\r\n\r\n// @ngInject\r\nfunction SaleThroughputReportsController($translate, StockApiService, brands, loadSpinnerService, collections, locations, ToasterService, departments) {\r\n    var vm = this;\r\n\r\n    vm.reportParameters = {\r\n        startDate: new Date(1970, 1, 1, 0, 0, 0),\r\n        endDate: new Date(),\r\n        brandId: undefined,\r\n        collectionId: undefined,\r\n        includeIsCurrent: false\r\n    };\r\n\r\n    vm.brands = brands;\r\n    vm.collections = collections;\r\n    vm.locations = locations;\r\n    vm.departments = departments;\r\n    vm.groupings = [\r\n        { id: 0, label: $translate.instant('reports.groupingNone'), grouping: 'None' },\r\n        { id: 1, label: $translate.instant('reports.groupingProduct'), grouping: 'Product' },\r\n        { id: 2, label: $translate.instant('reports.groupingProductLocation'), grouping: 'ProductLocation' },\r\n        { id: 3, label: $translate.instant('reports.groupingVariantDetail1'), grouping: 'VariantDetail1' },\r\n        { id: 4, label: $translate.instant('reports.groupingVariantDetail1Location'), grouping: 'VariantDetail1Location' },\r\n        { id: 5, label: $translate.instant('reports.groupingVariantDetail1VariantDetail2'), grouping: 'VariantDetail1VariantDetail2' },\r\n        { id: 6, label: $translate.instant('reports.groupingVariantDetail1VariantDetail2Location'), grouping: 'VariantDetail1VariantDetail2Location'},\r\n        { id: 7, label: $translate.instant('reports.groupingBrand'), grouping: 'Brand'}\r\n    ];\r\n    vm.selectedGrouping = vm.groupings[0];\r\n\r\n    vm.selectedCollections = [];\r\n    vm.selectedBrands = [];\r\n    vm.selectedLocations = [];\r\n    vm.selectedDepartments = [];\r\n\r\n    vm.switchToCsv = switchToCsv;\r\n    vm.switchToPdf = switchToPdf;\r\n \r\n    vm.fileFormatChoice = {\r\n        csv: true,\r\n        pdf: false\r\n    };\r\n\r\n    //Methods\r\n    vm.getSaleThroughputReport = getSaleThroughputReport;\r\n    \r\n    activate();\r\n\r\n    function activate() {\r\n        _.forEach(vm.locations, function(location) {\r\n            vm.selectedLocations.push(location);\r\n        });\r\n        _.forEach(vm.departments, function(department) {\r\n            vm.selectedDepartments.push(department);\r\n        });\r\n    }\r\n\r\n    function getSaleThroughputReport() {\r\n        if (!validateRequest()) {\r\n            return;\r\n        }\r\n\r\n        var request = {\r\n            endDate: vm.reportParameters.endDate,\r\n            brandIds: [],\r\n            collectionIds: [],\r\n            locationIds: [],\r\n            departmentIds: [],\r\n            grouping: vm.selectedGrouping.grouping,\r\n            includeIsCurrent: vm.reportParameters.includeIsCurrent,\r\n            startDate: vm.reportParameters.startDate\r\n        };\r\n\r\n        _.forEach(vm.selectedBrands, function(brand) { request.brandIds.push(brand.id); });\r\n        _.forEach(vm.selectedCollections, function (collection) { request.collectionIds.push(collection.id); });\r\n        _.forEach(vm.selectedLocations, function(location) { request.locationIds.push(location.id); });\r\n        _.forEach(vm.selectedDepartments, function(department) { request.departmentIds.push(department.id); });\r\n\r\n        loadSpinnerService.start(\"mainSpinner\");\r\n        if (vm.fileFormatChoice.csv) {\r\n            StockApiService.downloadSaleThroughputReport(request).finally(function () {\r\n                loadSpinnerService.stop(\"mainSpinner\");\r\n            });\r\n        } else if (vm.fileFormatChoice.pdf) {\r\n            StockApiService.downloadSaleThroughputReportPdf(request).finally(function () {\r\n                loadSpinnerService.stop(\"mainSpinner\");\r\n            });\r\n        }\r\n\r\n    }\r\n\r\n    function validateRequest() {\r\n        if (vm.selectedBrands.length === 0) {\r\n            ToasterService.showWarning($translate.instant('reports.error.needToSelectBrands'));\r\n            return false;\r\n        }\r\n        if (vm.selectedCollections.length === 0) {\r\n            ToasterService.showWarning($translate.instant('reports.error.needToSelectCollections'));\r\n            return false;\r\n        }\r\n        if (vm.selectedLocations.length === 0) {\r\n            ToasterService.showWarning($translate.instant('reports.error.needToSelectLocations'));\r\n            return false;\r\n        }\r\n        // if (vm.selectedDepartments.length === 0) {\r\n        //     ToasterService.showWarning($translate.instant('reports.error.needToSelectDepartments'));\r\n        //     return false;\r\n        // }\r\n        return true;\r\n    }\r\n\r\n    function switchToCsv() {\r\n        var keys = Object.keys(vm.fileFormatChoice);\r\n        _.forEach(keys, function(key) { vm.fileFormatChoice[key] = false; });\r\n        vm.fileFormatChoice.csv = true;\r\n    }\r\n\r\n    function switchToPdf() {\r\n        var keys = Object.keys(vm.fileFormatChoice);\r\n        _.forEach(keys, function(key) { vm.fileFormatChoice[key] = false; });\r\n        vm.fileFormatChoice.pdf = true;\r\n    }\r\n\r\n}\r\n\r\nangular.module('stock.saleThroughputReports', [])\r\n    .config(stateConfig)\r\n    .controller('SaleThroughputReportsController', SaleThroughputReportsController);\r\n","// @ngInject\r\nfunction stateConfig($stateProvider) {\r\n    $stateProvider.state('stock.soldStockReports', {\r\n        url: '/soldstockreports',\r\n        views: {\r\n            \"wideColumnView@stock\": {\r\n                templateUrl: 'main/stock/reports/soldStockReports.tpl.html',\r\n                controller: 'SoldStockReportsController as vm'\r\n            }\r\n        },\r\n        resolve: {\r\n            locations: locationsResolver,\r\n            companies: companiesResolver\r\n        }\r\n    });\r\n}\r\n\r\n// @ngInject\r\nfunction locationsResolver(StockApiService) {\r\n    return StockApiService.getLocations();\r\n}\r\n\r\n// @ngInject\r\nfunction companiesResolver(StockApiService) {\r\n    return StockApiService.getCompaniesBrief();\r\n}\r\n\r\n// @ngInject\r\nfunction SoldStockReportsController($translate, StockApiService, locations, loadSpinnerService, companies) {\r\n    var vm = this;\r\n\r\n    //Properties\r\n    vm.reportParameters = {\r\n        startDate: new Date(),\r\n        endDate: new Date(),\r\n        locationIds: [],\r\n        companyIds: [],\r\n        sortOrder1: undefined,\r\n        sortOrder2: undefined,\r\n        sortOrder3: undefined\r\n    };\r\n    vm.selectedLocations = [];\r\n    vm.selectedCompanies = [];\r\n    vm.sortorders = [];\r\n    vm.sortOrder2 = undefined;\r\n    vm.sortOrder3 = undefined;\r\n    vm.printLanguage = 'se';\r\n    vm.locations = locations;\r\n    vm.companies = companies;\r\n    vm.selectedLocations = angular.copy(locations);\r\n    vm.includeStorageItems = false;\r\n    vm.includeIsPhotographed = false;\r\n\r\n    //Methods\r\n    vm.getSoldStockReport = getSoldStockReport;\r\n\r\n    activate();\r\n\r\n    function activate() {\r\n        vm.sortorders = [\r\n            { id: 1, description: $translate.instant('article.brand'), code: 'BrandCode' }, //'Varumärke'\r\n            { id: 2, description: $translate.instant('article.maingroup'), code: 'MainGroupCode' }, //'Huvudgrupp'\r\n            { id: 3, description: $translate.instant('article.articlename'), code: 'ArticleName' }, //'Produktnamn'\r\n            { id: 4, description: $translate.instant('article.alternativearticlenumber'), code: 'AlternativeArticleNumber' }, //'Lev. produktnummer'\r\n            { id: 5, description: $translate.instant('article.department'), code: 'Department' }, //'Avdelning'\r\n            { id: 6, description: $translate.instant('common.variant1s'), code: 'VariantDetail1Name' }, //'Variant 1 (färg)'\r\n            { id: 7, description: $translate.instant('common.variant2s'), code: 'VariantDetail2Name' }, //'Variant 2 (storlek)'\r\n            { id: 8, description: $translate.instant('article.storageLocation'), code: 'StorageLocation' } //'Lagerplats'\r\n        ];\r\n        vm.sortOrder1 = vm.sortorders[0];\r\n    }\r\n\r\n    function getSoldStockReport() {\r\n        var request = {\r\n            startDate: vm.reportParameters.startDate,\r\n            endDate: vm.reportParameters.endDate,\r\n            locationIds: [],\r\n            companyIds: [],\r\n            languageCode: vm.printLanguage,\r\n            sortOrder1: vm.sortOrder1 ? vm.sortOrder1.code : undefined,\r\n            sortOrder2: vm.sortOrder2 ? vm.sortOrder2.code : undefined,\r\n            sortOrder3: vm.sortOrder3 ? vm.sortOrder3.code : undefined\r\n        };\r\n\r\n        vm.selectedLocations.forEach(function(location) { request.locationIds.push(location.id); });\r\n        vm.selectedCompanies.forEach(function(company) { request.companyIds.push(company.id); });\r\n\r\n        loadSpinnerService.start(\"mainSpinner\");\r\n        StockApiService.downloadSoldStockReport(request).finally(function () {\r\n            loadSpinnerService.stop(\"mainSpinner\");\r\n        });\r\n    }\r\n}\r\n\r\nangular.module('stock.soldStockReports', [])\r\n    .config(stateConfig)\r\n    .controller('SoldStockReportsController', SoldStockReportsController);\r\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock.stockValueReports', {\n        url: '/stockvaluereports',\n        views: {\n            \"wideColumnView@stock\": {\n                templateUrl: 'main/stock/reports/stockValueReports.tpl.html',\n                controller: 'ReportsController as vm'\n            }\n        },\n        resolve: {\n            locations: locationsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction locationsResolver(StockApiService) {\n    return StockApiService.getLocations();\n}\n\n\n\n// @ngInject\nfunction ReportsController(StockApiService, $window, locations, loadSpinnerService, ToasterService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.reportParameters = {\n        stockEndDate: new Date(),\n        inventoryDays: 0,\n        locations: []\n    };\n    vm.locations = locations;\n    vm.selectedInventoryDays = { name: 0, value: 0 };\n    vm.inventoryDayList = [];\n    vm.printLanguage = 'se';\n    vm.includeExternalId = false;\n    vm.includeBarcode = false;\n    vm.groupingLevels = [\n        //{ name: 'article.itemgroup', value: 'itemGroupLevel' },\n        { name: 'grouping.variant1', value: 'articleVariant1Level' },\n        { name: 'grouping.variant2', value: 'articleVariant1Variant2Level' }\n    ];\n\n    for (var i = 0; i < 15; i++) {\n        vm.inventoryDayList.push({ name: i, value: i });\n    }\n\n    //Methods\n    vm.getStockValueReport = getStockValueReport;\n\n    activate();\n\n    function activate() {\n        vm.reportParameters.locations = angular.copy(locations);\n        vm.selectedGroupingLevel = _.find(vm.groupingLevels, function(o) { return o.value === 'articleVariant1Level';});\n        readSettingsFromLocalStorage();\n    }\n\n    function getStockValueReport() {\n        var request = {\n            stockDate: vm.reportParameters.stockEndDate,\n            inventoryDays: vm.selectedInventoryDays.value,\n            locationIds: _.map(vm.reportParameters.locations, 'id'),\n            languageCode: vm.printLanguage,\n            level: vm.selectedGroupingLevel.value,\n            includeExternalId: vm.includeExternalId,\n            includeBarcode: vm.includeBarcode\n        };\n\n        loadSpinnerService.start(\"mainSpinner\");\n        saveSettingsToLocalStorage();\n\n        StockApiService.downloadStockValueReport(request).then(function () {\n            //Display CSV file\n            ToasterService.showSuccess($translate.instant('analysis.reportName') + ' ' + $translate.instant('common.created'), $translate.instant('common.stock'));\n        }, function (error) {\n            if (error.errors) {\n                vm.validationErrors = error.errors;\n            }\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function saveSettingsToLocalStorage() {\n        var request = {\n            languageCode: vm.printLanguage,\n            groupingLevel: vm.selectedGroupingLevel.value,\n            includeExternalId: vm.includeExternalId,\n            includeBarcode: vm.includeBarcode\n        };\n\n        $window.localStorage.setItem('printStockValueReportSettings', JSON.stringify(request));\n    }\n    function readSettingsFromLocalStorage() {\n        if ($window.localStorage.printStockValueReportSettings) {\n            if (!isJsonString($window.localStorage.getItem('printStockValueReportSettings'))) {\n                $window.localStorage.removeItem('printStockValueReportSettings');\n            }\n\n            var settingsStr = $window.localStorage.getItem('printStockValueReportSettings');\n            if (settingsStr !== null) {\n                var json = JSON.parse(settingsStr);\n                if (json.languageCode) { vm.printLanguage = json.languageCode; }\n                if (json.groupingLevel) { vm.selectedGroupingLevel = _.find(vm.groupingLevels, function(o) { return o.value === json.groupingLevel; }); }\n                if (json.includeExternalId) { vm.includeExternalId = json.includeExternalId; }\n                if (json.includeBarcode) { vm.includeBarcode = json.includeBarcode; }\n            }\n        }\n    }\n    function isJsonString(str) {\n        try {\n            JSON.parse(str);\n        } catch (e) {\n            return false;\n        }\n        return true;\n    }\n}\n\nangular.module('stock.stockValueReports', [])\n    .config(stateConfig)\n    .controller('ReportsController', ReportsController);\n\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock.scannerinventorying.inventory.articledetails', {\n        url: '/article/{articleId}/location/{locationId}/variantdetail/{variantDetailId}',\n        templateUrl: 'main/stock/scannerinventorying/inventory/articledetails/articledetails.tpl.html',\n        controller: 'ArticleDetailsController as vm',\n        resolve: {\n            stockTransactions: stockTransactionsResolver,\n            article: articleResolver\n        }\n\n    });\n}\n\n// @ngInject\nfunction stockTransactionsResolver($stateParams, StockApiService) {\n    return StockApiService.getStockTransactionsForArticleAndLocation(\n        {\n            articleId: $stateParams.articleId,\n            locationId: $stateParams.locationId,\n            variantDetailId: $stateParams.variantDetailId\n        }\n        );\n}\n\n// @ngInject\nfunction articleResolver($stateParams, StockApiService) {\n    return StockApiService.getProduct($stateParams.articleId);\n}\n\n// @ngInject\nfunction ArticleDetailsController(stockTransactions, article) {\n    var vm = this;\n\n    var transactionsGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n\n    vm.stockTransactions = stockTransactions;\n    vm.currentVariantDetail1 = {};\n    vm.article = article;\n\n    vm.initGrid = initGrid;\n\n    activate();\n\n    function activate() {\n        if (vm.stockTransactions.length !== 0) {\n            vm.currentVariantDetail1 = vm.stockTransactions[0].articleVariant.variantDetail1;\n        }\n    }\n\n    function initGrid(sender) {\n        transactionsGrid = sender;\n\n        transactionsGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.None,\n            itemsSource: rowCollection\n        });\n\n        updateTransactionGridGroupings();\n\n        transactionsGrid.collapseGroupsToLevel(0);\n\n        setUpGridData();\n        loadGridData();\n\n        transactionsGrid.collapseGroupsToLevel(0);\n    }\n\n    function updateTransactionGridGroupings() {\n        transactionsGrid.groupHeaderFormat = '{value}';\n\n        var timeTypeGrouping = new wijmo.collections.PropertyGroupDescription('', function(item, prop) {\n            return item.accountingDate.toString().split(\" \")[0] + \" \" + item.transactionType;\n        });\n\n        transactionsGrid.collectionView.groupDescriptions.push(timeTypeGrouping);\n\n        transactionsGrid.invalidate();\n        transactionsGrid.collectionView.refresh();\n    }\n\n    function setUpGridData() {\n\n        var rowHeader = new wijmo.grid.Column();\n        rowHeader.binding = \"accountingDate\";\n        rowHeader.header = \" \";\n        rowHeader.allowSorting = false;\n        rowHeader.width = 150;\n        rowHeader.isReadOnly = true;\n        transactionsGrid.columns.push(rowHeader);\n\n        rowHeader = new wijmo.grid.Column();\n        rowHeader.binding = \"transactionType\";\n        rowHeader.header = \" \";\n        rowHeader.allowSorting = false;\n        rowHeader.width = 150;\n        rowHeader.isReadOnly = true;\n        transactionsGrid.columns.push(rowHeader);\n\n        var columns = getDataColumns();\n\n        // Add dynamic columns\n        _.forEach(columns, function(variantDetail) {\n            var c = new wijmo.grid.Column();\n            c.binding = variantDetail.variantDetailName;\n            c.header = variantDetail.variantDetailName;\n            c.width = \"*\";\n            c.allowSorting = false;\n            c.inputType = 'text';\n            c.isReadOnly = true;\n            c.align = 'Right';\n            c.aggregate = 'Sum';\n            transactionsGrid.columns.push(c);\n        });\n    }\n\n    function getDataColumns() {\n        var columns = [];\n        var articleVariants = [];\n\n        _.forEach(vm.stockTransactions, function(stockTransaction) {\n            articleVariants.push(stockTransaction.articleVariant);\n        });\n\n        // Group by nested variantDetail2 in the current articleVariants\n        columns = _.groupBy(articleVariants, function(variant) {\n            return variant.variantDetail2.variantDetailName;\n        });\n        // Get the variantDetail2 from each group in an array\n        columns = _.reduce(columns, function(newArray, val, key) {\n            newArray.push(val[0].variantDetail2);\n            return newArray;\n        }, []);\n\n        return _.sortBy(columns, 'sortOrder');\n    }\n\n    function loadGridData() {\n        var variantRows = _.groupBy(vm.stockTransactions, function(stockTransaction) {\n            return stockTransaction.articleVariant.variantDetail1.id;\n        });\n\n        var stockTransactions = _.sortBy(vm.stockTransactions, 'accountingDate');\n\n        _.forEach(stockTransactions, function (stockTransaction) {\n            var r = {};\n\n            r.transactionDate = stockTransaction.transactionDate.toString().replace('T', ' ');\n            r.accountingDate = stockTransaction.accountingDate.toString().replace('T', ' ');\n            r.transactionType = stockTransaction.stockTransactionType.stockTransactionTypeName;\n            r[stockTransaction.articleVariant.variantDetail2.variantDetailName] = stockTransaction.quantity;\n\n            rowData.push(r);\n        });\n\n        rowCollection.refresh();\n    }\n}\n\nangular\n    .module('scannerinventorying.inventory.articledetails', [])\n    .config(stateConfig)\n    .controller('ArticleDetailsController', ArticleDetailsController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock.scannerinventorying.inventory', {\n        url: '/{inventoryId}',\n        templateUrl: 'main/stock/scannerinventorying/inventory/inventory.tpl.html',\n        controller: 'InventoryController as vm',\n        resolve: {\n            inventoryHead: inventoryHeadResolver\n        }\n    });\n}\n\n// @ngInject\nfunction inventoryHeadResolver($stateParams, InventoryingApiService) {\n    return InventoryingApiService.getHeadInfoById($stateParams.inventoryId);\n}\n\n// @ngInject\nfunction InventoryController($stateParams, $state, inventoryHead, InventoryingApiService, inventoryCorrectionsDialogService, ResourcesService,\n     loadSpinnerService, ArticleStocksHistoryDialogService, confirmationDialogService, printInventoryReportDialogService, ToasterService, $translate, $rootScope) {\n    var vm = this;\n\n    //Properties\n    var inventoryId = $stateParams.inventoryId; \n    var totalsGrid = {};\n    var detailsGrid = {};\n    var summarizationGrid = {};\n    var currentItemGroupId = 0;\n    var inventoryRowsGrid = {};\n    var inventoryOverviewGrid = {};\n    var inventoryFileErrorGrid = {};\n    var currentlyChosenMainGroupId = 0;\n    var currentlyChosenBrandId = 0;\n    vm.currentUserClaims = $rootScope.currentUser.claims;\n    vm.hasClaim = havePurchaseCostClaim();\n    vm.uploadErrors = [];\n    vm.inventoryFileErrors = [];\n    vm.inventoryRows = [];\n    vm.inventoryRowsAll = [];\n    vm.autoAcceptLevel = 2;\n    vm.displayLevel = 0;\n    vm.totalValueThreshold = 500;\n    vm.numberOfErrors = 0;\n    vm.showAllErrors = false;\n    vm.inventoryHead = inventoryHead.data;\n    vm.inventoryHead.inventoryDate = vm.inventoryHead.inventoryDate.split(\"T\")[0];\n    vm.itemGroupInventoryRows = {};\n    vm.isShowingUploadForm = false;\n    vm.filterChoice = {\n        showUnapproved: false,\n        showAll: true,\n        showApproved: false\n    };\n    vm.itemGroupTotals = {\n        theoreticalBalance: 0,\n        inventoried: 0,\n        difference: 0,\n        differenceValue: 0\n    };\n    vm.inventoryRowTotals = {\n        theoreticalBalance: 0,\n        inventoried: 0,\n        difference: 0,\n        totalValue: 0\n    };\n    vm.overViewGridFilter = {\n        mainGroups: false,\n        brands: false\n    };\n    vm.totalsGridItems = [\n        vm.inventoryRowTotals\n    ];\n\n    //Methods\n    vm.showInventoryErrors = showInventoryErrors;\n    vm.captureTotalsGrid = captureTotalsGrid;\n    vm.captureDetailsGrid = captureDetailsGrid;\n    vm.setCurrentItemGroup = setCurrentItemGroup;\n    vm.approveItemGroup = approveItemGroup;\n    vm.approveInventoryRow = approveInventoryRow;\n    vm.expandArticlesGroups = expandArticlesGroups;\n    vm.contractArticlesGroups = contractArticlesGroups;\n    vm.openAnalyzeModal = openAnalyzeModal;\n    vm.showUnApprovedItemGroups = showUnApprovedItemGroups;\n    vm.showApprovedItemGroups = showApprovedItemGroups;\n    vm.resetItemGroupsFiltering = resetItemGroupsFiltering;\n    vm.showUnApprovedInventoryRows = showUnApprovedInventoryRows;\n    vm.showApprovedInventoryRows = showApprovedInventoryRows;\n    vm.resetInventoryRowsFiltering = resetInventoryRowsFiltering;\n    vm.hasFileErrors = hasFileErrors;\n    vm.captureInventoryRowsGrid = captureInventoryRowsGrid;\n    vm.displayLevelChanged = displayLevelChanged;\n    vm.autoAccept = autoAccept;\n    vm.sendInventoryRowsForApproval = sendInventoryRowsForApproval;\n    vm.captureSummarizationGrid = captureSummarizationGrid;\n    vm.captureInventoryOverviewGrid = captureInventoryOverviewGrid;\n    vm.captureInventoryFileErrorGrid = captureInventoryFileErrorGrid;\n    vm.inventoryFileErrorGrid = inventoryFileErrorGrid;\n    vm.fetchMainGroups = fetchMainGroups;\n    vm.fetchBrands = fetchBrands;\n    vm.getMainGroupInventoryRows = getMainGroupInventoryRows;\n    vm.getBrandInventoryRows = getBrandInventoryRows;\n    vm.uploadAndParseFile = uploadAndParseFile;\n    vm.toggleUploadFormVisibility = toggleUploadFormVisibility;\n    vm.acceptInventory = acceptInventory;\n    vm.printInventoryReport = printInventoryReport;\n    vm.loadItemGroupsInventoryRows = loadItemGroupsInventoryRows;\n    vm.openCorrectionsModal = openCorrectionsModal;\n    vm.loadInventoryFileErrors = loadInventoryFileErrors;\n\n    activate();\n\n    function activate() {\n        fetchMainGroups();\n        loadInventoryFileErrors();\n    }\n\n    function getMainGroupInventoryRows(mainGroupId) {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.getMainGroupInventoryRows(inventoryId, mainGroupId).then(function(response) {\n\n            vm.inventoryRows = response.data;\n            vm.inventoryRowsAll = vm.inventoryRows;\n\n            inventoryRowsGrid.itemsSource = vm.inventoryRows;\n            inventoryRowsGrid.invalidate();\n            recalculateInventoryRowsTotals();\n            inventoryRowsGrid.collapseGroupsToLevel(vm.displayLevel);\n            resetInventoryRowsFiltering();\n            currentlyChosenMainGroupId = mainGroupId;\n        }, function(error) {\n            handleError(error);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getBrandInventoryRows(brandId) {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.getBrandInventoryRows(inventoryId, brandId).then(function(response) {\n\n            vm.inventoryRows = response.data;\n            vm.inventoryRowsAll = response.data;\n\n            inventoryRowsGrid.itemsSource = vm.inventoryRows;\n            inventoryRowsGrid.invalidate();\n            recalculateInventoryRowsTotals();\n            inventoryRowsGrid.collapseGroupsToLevel(vm.displayLevel);\n            resetInventoryRowsFiltering();\n            currentlyChosenBrandId = brandId;\n        }, function(error) {\n            handleError(error);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function fetchMainGroups() {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.getInventoryMainGroups(inventoryId).then(function(response) {\n            inventoryOverviewGrid.itemsSource = _.sortBy(response.data, function(mainGroup) {\n                return mainGroup.mainGroupCode;\n            });\n\n            _.forEach(inventoryOverviewGrid.columns, function(column) {\n                if (column.binding === \"mainGroupDescription\") {\n                    column.width = \"2*\";\n                } else if (column.binding === \"brandDescription\") {\n                    column.width = 0;\n                }\n            });\n\n            inventoryOverviewGrid.invalidate();\n\n            vm.overViewGridFilter.mainGroups = true;\n            vm.overViewGridFilter.brands = false;\n        }, function(error) {\n            handleError(error);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function fetchBrands() {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.getInventoryBrands(inventoryId).then(function(response) {\n            inventoryOverviewGrid.itemsSource = _.sortBy(response.data, function(brand) {\n                return brand.brandCode;\n            });\n\n            _.forEach(inventoryOverviewGrid.columns, function(column) {\n                if (column.binding === \"mainGroupDescription\") {\n                    column.width = 0;\n                } else if (column.binding === \"brandDescription\") {\n                    column.width = \"2*\";\n                }\n            });\n\n            inventoryOverviewGrid.invalidate();\n\n            vm.overViewGridFilter.mainGroups = false;\n            vm.overViewGridFilter.brands = true;\n        }, function(error) {\n            handleError(error);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function reFetchOverViewGridData() {\n        if (vm.overViewGridFilter.mainGroups) {\n            fetchMainGroups();\n        } else if (vm.overViewGridFilter.brands) {\n            fetchBrands();\n        }\n    }\n\n    function reFetchInventoryRowsGridData() {\n        if (vm.overViewGridFilter.mainGroups) {\n            getMainGroupInventoryRows(currentlyChosenMainGroupId);\n        } else if (vm.overViewGridFilter.brands) {\n            getBrandInventoryRows(currentlyChosenBrandId);\n        }\n    }\n\n    function showUnApprovedInventoryRows() {\n        resetInventoryRowsFiltering();\n\n        vm.inventoryRows = _.filter(vm.inventoryRows, function(inventoryRow) {\n            return !inventoryRow.isApproved;\n        });\n\n        vm.filterChoice.showUnapproved = true;\n        vm.filterChoice.showAll = false;\n\n        inventoryRowsGrid.itemsSource = vm.inventoryRows;\n\n        updateInventoryRowsGridGroupings();\n        recalculateInventoryRowsTotals();\n\n        inventoryRowsGrid.collapseGroupsToLevel(vm.displayLevel);\n    }\n\n    function captureInventoryFileErrorGrid(sender) {\n        inventoryFileErrorGrid = sender;\n    }\n\n    function captureInventoryOverviewGrid(sender) {\n        inventoryOverviewGrid = sender;\n        inventoryOverviewGrid.allowMerging = 'Cells';\n        inventoryOverviewGrid.columns[0].allowMerging = true;\n    }\n\n    function captureSummarizationGrid(sender) {\n        summarizationGrid = sender;\n    }\n\n    function showApprovedInventoryRows() {\n        resetInventoryRowsFiltering();\n\n        vm.inventoryRows = _.filter(vm.inventoryRows, function(inventoryRow) {\n            return inventoryRow.isApproved;\n        });\n\n        vm.filterChoice.showApproved = true;\n        vm.filterChoice.showAll = false;\n\n        inventoryRowsGrid.itemsSource = vm.inventoryRows;\n\n        updateInventoryRowsGridGroupings();\n        recalculateInventoryRowsTotals();\n\n        inventoryRowsGrid.collapseGroupsToLevel(vm.displayLevel);\n    }\n\n    function resetInventoryRowsFiltering() {\n        vm.inventoryRows = vm.inventoryRowsAll;\n\n        vm.filterChoice.showAll = true;\n        vm.filterChoice.showUnapproved = false;\n        vm.filterChoice.showApproved = false;\n\n        inventoryRowsGrid.itemsSource = vm.inventoryRows;\n\n        updateInventoryRowsGridGroupings();\n        recalculateInventoryRowsTotals();\n\n        inventoryRowsGrid.collapseGroupsToLevel(vm.displayLevel);\n    }\n\n    function expandArticlesGroups() {\n        detailsGrid.collapseGroupsToLevel(detailsGrid.collectionView.groupDescriptions.length);\n    }\n\n    function displayLevelChanged() {\n        console.log(\"InventoryRowsGrid:\");\n        console.log(inventoryRowsGrid);\n\n        inventoryRowsGrid.collapseGroupsToLevel(vm.displayLevel);\n    }\n\n    function sendInventoryRowsForApproval() {\n        var inventoryRows = [];\n\n        _.forEach(vm.inventoryRows, function(invRow) {\n            if (invRow.isApproved) {\n                inventoryRows.push(invRow);\n            }\n        });\n\n        console.log(\"InventoryRows to send for approval:\");\n        console.log(inventoryRows);\n\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.approveInventoryRows(inventoryId, inventoryRows).then(function(response) {\n            console.log(\"InventoryRows approved.\");\n            reFetchOverViewGridData();\n        }, function(error) {\n            handleError(error);\n        }).finally(function () {\n            loadSpinnerService.stop('mainSpinner');\n        });\n\n    }\n\n    function autoAccept() {\n        var groupedInventoryRows = {};\n        var inventoryRowsToAccept = [];\n        var autoAcceptLevel = parseInt(vm.autoAcceptLevel);\n\n        var mainGroupNames;\n        if (autoAcceptLevel === 0) {\n            // Grouping\n            groupedInventoryRows = _.groupBy(vm.inventoryRows, function(inventoryRow) {\n                return (vm.overViewGridFilter.mainGroups) ? inventoryRow.mainGroupDescription : inventoryRow.brandDescription;\n            });\n\n            mainGroupNames = Object.keys(groupedInventoryRows);\n\n            // Summarization\n            _.forEach(mainGroupNames, function(mgName) {\n                var invRows = groupedInventoryRows[mgName];\n                var sum = _.reduce(invRows, function(memo, invRow) { return memo + invRow.totalValue; }, 0);\n                if (Math.abs(sum) < vm.totalValueThreshold) {\n                    _.forEach(invRows, function(invRow) { inventoryRowsToAccept.push(invRow); });\n                }\n            });\n        } else if (autoAcceptLevel === 1) {\n            // Grouping\n            groupedInventoryRows = _.groupBy(vm.inventoryRows, function(inventoryRow) {\n                return (vm.overViewGridFilter.mainGroups) ? inventoryRow.mainGroupDescription : inventoryRow.brandDescription;\n            });\n\n            mainGroupNames = Object.keys(groupedInventoryRows);\n            _.forEach(mainGroupNames, function(mgName) {\n                groupedInventoryRows[mgName] = _.groupBy(groupedInventoryRows[mgName], function(inventoryRow) {\n                    return (vm.overViewGridFilter.mainGroups) ? inventoryRow.brandDescription : inventoryRow.mainGroupDescription;\n                });\n            });\n\n            // Summarization\n            _.forEach(mainGroupNames, function(mainGroupName) {\n                _.forEach(groupedInventoryRows[mainGroupName], function(inventoryRows) {\n                    var sum = _.reduce(inventoryRows, function(memo, invRow) { return memo + invRow.totalValue; }, 0);\n                    if (Math.abs(sum) < vm.totalValueThreshold) {\n                        _.forEach(inventoryRows, function(invRow) { inventoryRowsToAccept.push(invRow); });\n                    }\n                });\n            });\n        } else if (autoAcceptLevel === 2) {\n            // Grouping\n            groupedInventoryRows = _.groupBy(vm.inventoryRows, function(inventoryRow) {\n                return (vm.overViewGridFilter.mainGroups) ? inventoryRow.mainGroupDescription : inventoryRow.brandDescription;\n            });\n\n            mainGroupNames = Object.keys(groupedInventoryRows);\n            _.forEach(mainGroupNames, function(mgName) {\n                groupedInventoryRows[mgName] = _.groupBy(groupedInventoryRows[mgName], function(inventoryRow) {\n                    return (vm.overViewGridFilter.mainGroups) ? inventoryRow.brandDescription : inventoryRow.mainGroupDescription;\n                });\n            });\n\n            _.forEach(mainGroupNames, function(mgName) {\n                var brandNames = Object.keys(groupedInventoryRows[mgName]);\n                _.forEach(brandNames, function(bName) {\n                    groupedInventoryRows[mgName][bName] = _.groupBy(groupedInventoryRows[mgName][bName], function(inventoryRow) {\n                        return inventoryRow.alternativeArticleNumber + inventoryRow.articleName;\n                    });\n                });\n            });\n\n            // Summarization\n            _.forEach(mainGroupNames, function(mgName) {\n                var brandNames = Object.keys(groupedInventoryRows[mgName]);\n                _.forEach(brandNames, function(brandName) {\n                    var articleNames = Object.keys(groupedInventoryRows[mgName][brandName]);\n                    _.forEach(articleNames, function(articleName) {\n\n                        var invRows = groupedInventoryRows[mgName][brandName][articleName];\n                        var sum = _.reduce(invRows, function(memo, invRow) { return memo + invRow.totalValue; }, 0);\n                        if (Math.abs(sum) < vm.totalValueThreshold) {\n                            _.forEach(invRows, function(invRow) { inventoryRowsToAccept.push(invRow); });\n                        }\n                    });\n                });\n            });\n        }\n\n        console.log(\"groupedInventoryRows:\");\n        console.log(groupedInventoryRows);\n\n        console.log(\"InventoryRowsToAccept:\");\n        console.log(inventoryRowsToAccept);\n\n        _.forEach(inventoryRowsToAccept, function(invRow) {\n            invRow.isApproved = true;\n            invRow.isAutoApproved = true;\n        });\n\n        inventoryRowsGrid.invalidate();\n\n        // Send the rows immediately.\n        sendInventoryRowsForApproval();\n    }\n\n    function recalculateInventoryRowsTotals() {\n        vm.inventoryRowTotals.inventoried = 0;\n        vm.inventoryRowTotals.theoreticalBalance = 0;\n        vm.inventoryRowTotals.difference = 0;\n        vm.inventoryRowTotals.totalValue = 0;\n\n        _.forEach(vm.inventoryRows, function(invRow) {\n            vm.inventoryRowTotals.inventoried += invRow.quantity;\n            vm.inventoryRowTotals.theoreticalBalance += invRow.theoreticalStockBalance;\n            vm.inventoryRowTotals.difference += invRow.stockDifference;\n            vm.inventoryRowTotals.totalValue += invRow.totalValue;\n        });\n\n\n    }\n\n    function recalculateItemGroupTotals() {\n        vm.itemGroupTotals.theoreticalBalance = 0;\n        vm.itemGroupTotals.inventoried = 0;\n        vm.itemGroupTotals.difference = 0;\n        vm.itemGroupTotals.differenceValue = 0;\n\n        _.forEach(vm.itemGroups, function(itemGroup) {\n            vm.itemGroupTotals.theoreticalBalance += itemGroup.summarizedTransactionQuantity;\n            vm.itemGroupTotals.inventoried += itemGroup.summarizedInventoryRowsQuantity;\n            vm.itemGroupTotals.difference += itemGroup.difference;\n            vm.itemGroupTotals.differenceValue += itemGroup.summarizedCostPrice;\n        });\n    }\n\n    function setFilterChoiceFalse() {\n        vm.filterChoice.showUnapproved = false;\n        vm.filterChoice.showAll = false;\n        vm.filterChoice.showApproved = false;\n    }\n\n    function contractArticlesGroups() {\n        detailsGrid.collapseGroupsToLevel(0);\n    }\n\n    function captureInventoryRowsGrid(sender) {\n        inventoryRowsGrid = sender;\n        inventoryRowsGrid.collapseGroupsToLevel(0);\n\n        console.log(\"inventoryRowsGrid\");\n        console.log(inventoryRowsGrid);\n\n        recalculateInventoryRowsTotals();\n    }\n\n    function updateInventoryRowsGridGroupings() {\n        inventoryRowsGrid.groupHeaderFormat = '{value} ({count})';\n\n        var mainGroupGrouping = new wijmo.collections.PropertyGroupDescription('', function(item, prop) {\n            return item.mainGroupDescription;\n        });\n        var brandGrouping = new wijmo.collections.PropertyGroupDescription('', function(item, prop) {\n            return item.brandDescription;\n        });\n        var articleGrouping = new wijmo.collections.PropertyGroupDescription('', function(item, prop) {\n            return item.alternativeArticleNumber + \" \" + item.articleName;\n        });\n\n        if (vm.overViewGridFilter.mainGroups) {\n            inventoryRowsGrid.collectionView.groupDescriptions.push(mainGroupGrouping);\n            inventoryRowsGrid.collectionView.groupDescriptions.push(brandGrouping);\n        } else {\n            inventoryRowsGrid.collectionView.groupDescriptions.push(brandGrouping);\n            inventoryRowsGrid.collectionView.groupDescriptions.push(mainGroupGrouping);\n        }\n\n        var articleVariant1SortOrderSortDescription = new wijmo.collections.SortDescription(\"variantDetail1Name\", 'true');\n        var articleVariant2SortOrderSortDescription = new wijmo.collections.SortDescription(\"variantDetail2SortOrder\", 'true');\n\n        inventoryRowsGrid.collectionView.groupDescriptions.push(articleGrouping);\n\n        inventoryRowsGrid.collectionView.sortDescriptions.push(articleVariant1SortOrderSortDescription);\n        inventoryRowsGrid.collectionView.sortDescriptions.push(articleVariant2SortOrderSortDescription);\n\n        inventoryRowsGrid.invalidate();\n        inventoryRowsGrid.collectionView.refresh();\n    }\n\n    function showUnApprovedItemGroups() {\n        resetItemGroupsFiltering();\n\n        vm.itemGroups = _.filter(vm.itemGroups, function(itemGroup) {\n            return !itemGroup.isApproved;\n        });\n\n        setFilterChoiceFalse();\n        vm.filterChoice.showUnapproved = true;\n\n        totalsGrid.itemsSource = vm.itemGroups;\n        updateTotalsGridGroupings();\n        recalculateItemGroupTotals();\n    }\n\n    function showApprovedItemGroups() {\n        resetItemGroupsFiltering();\n\n        vm.itemGroups = _.filter(vm.itemGroups, function(itemGroup) {\n            return itemGroup.isApproved;\n        });\n\n        setFilterChoiceFalse();\n        vm.filterChoice.showApproved = true;\n\n        totalsGrid.itemsSource = vm.itemGroups;\n        updateTotalsGridGroupings();\n        recalculateItemGroupTotals();\n    }\n\n    function resetItemGroupsFiltering() {\n        vm.itemGroups = vm.allItemGroups;\n\n        setFilterChoiceFalse();\n        vm.filterChoice.showAll = true;\n\n        totalsGrid.itemsSource = vm.itemGroups;\n        updateTotalsGridGroupings();\n        recalculateItemGroupTotals();\n    }\n\n    function approveItemGroup(itemGroup) {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.approveItemGroupRelatedRows(inventoryId, itemGroup.id).then(function(response) {\n            console.log(\"Success\");\n            vm.loadItemGroupsInventoryRows(itemGroup.id);\n            itemGroup.isApproved = true;\n            totalsGrid.invalidate();\n        }, function(error) {\n            handleError(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function openAnalyzeModal(articleId, inventoryId, variantDetail1Id) {\n        ArticleStocksHistoryDialogService.showDialog(articleId, inventoryId, variantDetail1Id);\n    }\n\n    function approveInventoryRow(inventory) {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.approveInventoryRow(inventoryId, inventory.id).then(function() {\n            console.log(\"Success. Now set the isApproved of the object\");\n            inventory.isApproved = true;\n            detailsGrid.invalidate();\n        }, function(error) {\n            handleError(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function loadItemGroupsInventoryRows(itemGroupId) {\n        InventoryingApiService.getInventoryRowsRelatedToItemGroup(inventoryId, itemGroupId).then(function(response) {\n            console.log(\"Got the following inventoryRows related to the itemGroup:\");\n            console.log(response);\n            vm.itemGroupInventoryRows = response.data;\n        }, function(error) {\n            handleError(error);\n        });\n    }\n\n    function hasFileErrors() {\n        return vm.inventoryFileErrors.length > 0;\n    }\n\n    function showInventoryErrors() {\n        vm.showAllErrors = !vm.showAllErrors;\n        if (vm.showAllErrors) {\n            vm.loadInventoryFileErrors();\n        }\n    }\n\n    function loadInventoryFileErrors() {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.getInventoryFileErrors(inventoryId).then(function(response) {\n            console.log(\"Got the following inventory file upload errors:\");\n            console.log(response);\n            vm.numberOfErrors = response.data.errorRows.length;\n            vm.inventoryFileErrors = response.data.errorRows;\n            inventoryFileErrorGrid.itemsSource = response.data.errorRows;\n            inventoryFileErrorGrid.invalidate();\n        }, function(error) {\n            handleError(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function setCurrentItemGroup(itemGroupId) {\n        currentItemGroupId = itemGroupId;\n    }\n\n    function openCorrectionsModal(articleId) {\n        console.log(\"openCorrectionsModal with articleId: \" + articleId + \" and inventoryId: \" + inventoryId);\n        inventoryCorrectionsDialogService.showDialog(inventoryId, articleId).then(function(result) {\n            if (result) {\n                vm.loadItemGroupsInventoryRows(currentItemGroupId);\n                reFetchOverViewGridData();\n                updateLocalInventoryRows(result.data);\n            }\n        });\n    }\n\n    function updateLocalInventoryRows(inventoryRows) {\n        _.forEach(inventoryRows, function(inventoryRow) {\n            var inventoryRowToUpdate = _.find(vm.inventoryRowsAll, function(invRow) {\n               return invRow.id === inventoryRow.id;\n            });\n            inventoryRowToUpdate.quantity = inventoryRow.quantity;\n            inventoryRowToUpdate.stockDifference =  inventoryRowToUpdate.quantity - inventoryRowToUpdate.theoreticalStockBalance;\n        });\n\n        inventoryRowsGrid.invalidate();\n    }\n\n    function captureTotalsGrid(sender) {\n        totalsGrid = sender;\n        totalsGrid.itemsSource = vm.itemGroups;\n\n        updateTotalsGridGroupings();\n\n        showUnApprovedItemGroups();\n        recalculateItemGroupTotals();\n    }\n\n    function updateTotalsGridGroupings() {\n        totalsGrid.groupHeaderFormat = '{value} ({count})';\n\n        var mainGroupDescription = new wijmo.collections.PropertyGroupDescription('', function(item, prop) {\n            return item.itemGroup.mainGroup.mainGroupDescription;\n        });\n\n        totalsGrid.collectionView.groupDescriptions.push(mainGroupDescription);\n\n        totalsGrid.collapseGroupsToLevel(0);\n    }\n\n    function captureDetailsGrid(sender) {\n        detailsGrid = sender;\n    }\n\n    function setDetailsGridData() {\n        detailsGrid.itemsSource = vm.itemGroupInventoryRows;\n        detailsGrid.groupHeaderFormat = '{value} ({count})';\n\n        var articleNameDescription = new wijmo.collections.PropertyGroupDescription('', function(item, prop) {\n            return item.article.articleName;\n        });\n        var variant1Description = new wijmo.collections.PropertyGroupDescription('', function(item, prop) {\n            return item.articleVariant.variantDetail1.variantDetailName;\n        });\n\n        detailsGrid.collectionView.groupDescriptions.push(articleNameDescription);\n        detailsGrid.collectionView.groupDescriptions.push(variant1Description);\n\n        detailsGrid.invalidate();\n        detailsGrid.collectionView.refresh();\n    }\n\n    function uploadAndParseFile() {\n        vm.uploadErrors = [];\n        var fileInputDomElement = $(\"#inventoryingFileUploadElement\")[ 0 ];\n        var file = fileInputDomElement.files[0];\n        var reader = new FileReader();\n\n        reader.onload = onLoadFunction;\n\n        reader.readAsArrayBuffer(file);\n\n        function onLoadFunction(e) {\n            try {\n\n                var data = \"\";\n                var bytes = new Uint8Array(e.target.result);\n                var length = bytes.byteLength;\n                for (var i = 0; i < length; i++) {\n                    data += String.fromCharCode(bytes[i]);\n                }\n\n                var sendData = {\n                    fileName: file.name,\n                    data: data\n                };\n\n                loadSpinnerService.start('mainSpinner');\n                InventoryingApiService.uploadInventoryFile(inventoryId, sendData).then(function(response) {\n                    console.log(response);\n                    $state.go($state.current, {inventoryId: inventoryId}, {reload: true});\n                }, function(error) {\n                    console.log(error);\n                    vm.uploadErrors.push({message: \"Could not add file.\"});\n                }).finally(function() {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n\n            } catch (error) {\n                console.log(error);\n            } finally {\n            }\n        }\n    }\n\n    function acceptInventory() {\n        var message = $translate.instant('inventory.confirmAccept');\n        confirmationDialogService.showDialog(message).then(function(response) {\n            if (response) {\n                InventoryingApiService.queueInventoryForFinalization(inventoryId).then(function(response) {\n                    $state.go($state.current, {inventoryId: inventoryId}, {reload: true});\n                }, function(error) {\n                    console.log(error);\n                });\n            }\n        });\n    }\n\n    function toggleUploadFormVisibility() {\n        vm.isShowingUploadForm = !vm.isShowingUploadForm;\n        inventoryFileErrorGrid.invalidate();\n    }\n\n    function printInventoryReport() {\n        printInventoryReportDialogService.showDialog().then(function (result) {\n            if (result.result === true) {\n                loadSpinnerService.start('mainSpinner');\n                InventoryingApiService.getInventoryReport(inventoryId, result.languageCode, result.printFormat).then(function(response) {\n\n                }, function(error) {\n                    ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            }\n        });\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n\n    function havePurchaseCostClaim(){\n        if(vm.currentUserClaims.seepurchasecost === undefined){\n           return false\n        }\n\n        if(!vm.currentUserClaims.seepurchasecost.read){\n            return false\n        }\n\n        return true\n    }\n\n}\n\nangular.module('scannerinventorying.inventory', ['scannerinventorying.inventory.articledetails'])\n    .config(stateConfig)\n    .controller('InventoryController', InventoryController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock.scannerinventorying', {\n        url: '/scanner',\n        views: {\n            \"wideColumnView@stock\": {\n                templateUrl: 'main/stock/scannerinventorying/scannerinventorying.tpl.html',\n                controller: 'ScannerInventoryingController as vm'\n            }\n        },\n        controller: 'ScannerInventoryingController as vm'\n    });\n}\n\n// @ngInject\nfunction ScannerInventoryingController($state, loadSpinnerService, InventoryingApiService, NewInventoryDialogService, $rootScope) {\n    var vm = this;\n    var ordersGrid = {};\n\n    vm.currentPage = 1;\n    vm.itemsPerPage = 15;\n    vm.totalItems = 0;\n    vm.searchTerm = \"\";\n    vm.previouslySelectedInventoryId = 0;\n\n    vm.orders = [];\n\n    vm.searchTermChange = searchTermChange;\n    vm.loadOrders = loadOrders;\n    vm.openNewInventoryModal = openNewInventoryModal;\n    vm.uploadAndParseFile = uploadAndParseFile;\n\n    vm.isHidingInventoriesGrid = false;\n    vm.hideInventoriesGrid = hideInventoriesGrid;\n    vm.unHideInventoriesGrid = unHideInventoriesGrid;\n\n    loadOrders({ id : parseInt($state.params.inventoryId) });\n    activate();\n\n    function activate() {\n        $rootScope.$on('NavigatingTo', function(event, response) {\n            if (response === 'stock.scannerinventorying') {\n                loadOrders();\n            }\n        });\n    }\n\n    function loadOrders(inventoryItem) {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.getAll(vm.currentPage, vm.searchTerm, vm.itemsPerPage).then(function getAllOrders(response) {\n            vm.orders = response.data;\n            vm.totalItems = response.totalItems;\n            formatPlannedDeliveryDate(vm.orders);\n\n            if (inventoryItem && inventoryItem.id) {\n                hideInventoriesGrid(_.find(vm.orders, function(o) { return o.id === inventoryItem.id; }));\n                $state.go('stock.scannerinventorying.inventory', { inventoryId: inventoryItem.id });\n            }\n        }).finally(function afterGetAllOrders() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n\n    function uploadAndParseFile() {\n        var orderId = ordersGrid.itemsSource[ordersGrid.selection.row].id;\n        InventoryingApiService.uploadParseFile(orderId);\n    }\n\n\n    function formatPlannedDeliveryDate(orders) {\n        for (var i = 0; i < orders.length; i++) {\n            var order = orders[i];\n            order.inventoryDate = order.inventoryDate.split('T')[0];\n        }\n    }\n\n    function openNewInventoryModal() {\n        NewInventoryDialogService.showDialog().then(function(result) {\n            if (result && result.success) {\n                loadOrders(result.inventoryItem);\n            }\n        });\n    }\n\n    function searchTermChange() {\n        vm.isHidingInventoriesGrid = false;\n        loadOrders();\n    }\n\n    function hideInventoriesGrid(item) {\n        vm.previouslySelectedInventoryId = 0;\n        vm.orders = [];\n        vm.orders.push(item);\n        vm.isHidingInventoriesGrid = true;\n    }\n\n    function unHideInventoriesGrid() {\n        vm.previouslySelectedInventoryId = parseInt($state.params.inventoryId);\n        vm.isHidingInventoriesGrid = false;\n        $state.go('stock.scannerinventorying');\n        loadOrders();\n    }\n}\n\nangular.module('stock.scannerinventorying', ['scannerinventorying.inventory'])\n    .config(stateConfig)\n    .controller('ScannerInventoryingController', ScannerInventoryingController);\n","// @ngInject\nfunction StockApiService(ResourcesService, $window, DSHttpAdapter, $q, DS) {\n\n    var endpoint = 'stock';\n\n    return {\n        getProductStock: ResourcesService.apiFactory.get(endpoint + '/productstock'),\n        getProducts: getProducts,\n        getProduct: ResourcesService.apiFactory.get(endpoint + '/products'),\n        getLocation: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getCompaniesBrief: ResourcesService.apiFactory.get(endpoint + '/companiesbrief'),\n        getFilteredLocations: getFilteredLocations,\n        getFilteredBrands: getFilteredBrands,\n        getMainGroups: ResourcesService.apiFactory.get(endpoint + '/maingroups'),\n        getInventoryTypes: ResourcesService.apiFactory.get(endpoint + '/inventorytypes'),\n        getBrands: ResourcesService.apiFactory.get(endpoint + '/brands'),\n        getCollections: ResourcesService.apiFactory.get(endpoint + '/collections'),\n        getStockTransactionsForArticleAndLocation: ResourcesService.apiFactory.get(endpoint + '/stocktransactions'),\n        saveProductInventory: ResourcesService.apiFactory.save(endpoint + '/productinventory'),\n        downloadStockValueReport: downloadStockValueReport,\n        downloadSoldStockReport: downloadSoldStockReport,\n        downloadStockPickingList: downloadStockPickingList,\n        downloadSaleThroughputReport: downloadSaleThroughputReport,\n        downloadSaleThroughputReportPdf: downloadSaleThroughputReportPdf,\n        getDepartments: ResourcesService.apiFactory.get(endpoint + '/departments')\n    };\n\n    function downloadStockPickingList(request) {\n        var deferred = $q.defer();\n\n        var params = {\n            locationId: request.locationId,\n            startDate: request.startDate,\n            endDate: request.endDate,\n            sortOrder1: request.sortOrder1,\n            sortOrder2: request.sortOrder2,\n            sortOrder3: request.sortOrder3,\n            showCollection: request.showCollection,\n            showDepartment: request.showDepartment,\n            grouping: request.grouping,\n            includeArticleNumber: request.includeArticleNumber,\n            includeStorageItems: request.includeStorageItems,\n            includeIsPhotographed: request.includeIsPhotographed,\n            includeZeroAndNegativeQuantity: request.includeZeroAndNegativeQuantity,\n            portraitOrientation: request.portraitOrientation,\n            showRestOfLocations: request.showRestOfLocations\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'stock/pickinglist', { params: params, responseType: 'arraybuffer' }).then(function(response) {\n            //If 204 the call returned no result/empty list don't return a downloadable file\n            if (response && response.status === 204) {\n                deferred.resolve(response);\n                return deferred.promise;\n            }\n\n            //\"attachment; filename=stockpickinglist20190110.pdf\"\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'stockpickinglist.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadSaleThroughputReport(reportParameters) {\n        var url = $window.URL || $window.webkitURL;\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/salethroughputreport', reportParameters, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], { type: 'text/csv' });\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'SaleThroughput.csv');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var downloadUrl = url.createObjectURL(blob);\n                a.href = downloadUrl;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadSaleThroughputReportPdf(reportParameters) {\n        var url = $window.URL || $window.webkitURL;\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/salethroughputreportpdf', reportParameters, { responseType: 'arraybuffer' }).then(function (response) {\n            var blob = new Blob([response.data], { type: 'application/pdf' });\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'SaleThroughput.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var downloadUrl = url.createObjectURL(blob);\n                a.href = downloadUrl;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getProducts(page, filter, pageSize, companyId, showInactiveArticles, matchEntireSearchTerm) {\n\n        var params = {\n            filter: '',\n            page: 1,\n            pageSize: 20\n        };\n\n        if (page && page > 1) {\n            params.page = page;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.filter = filter;\n        }\n\n        if (companyId) {\n            params.companyId = companyId;\n        }\n\n        if (showInactiveArticles) {\n            params.showInactiveArticles = showInactiveArticles;\n        }\n\n        if(matchEntireSearchTerm !== undefined) {\n            params.matchEntireSearchTerm = matchEntireSearchTerm;\n        }\n\n        var args = { params: params };\n\n        return ResourcesService.apiFactory.get(endpoint + '/products')(args);\n    }\n\n    function downloadStockValueReport(reportParameters) {\n        var url = $window.URL || $window.webkitURL;\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/stockvaluereport', reportParameters, { responseType: 'arraybuffer' }).then(function (response) {\n            //\"attachment; filename=stockpickinglist20190110.pdf\"\n            var blob = new Blob([response.data], { type: 'text/csv' });\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'StockValueReport.csv');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var downloadUrl = url.createObjectURL(blob);\n                a.href = downloadUrl;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadSoldStockReport(reportParameters) {\n        var url = $window.URL || $window.webkitURL;\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/soldStockReport', reportParameters, { responseType: 'arraybuffer' }).then(function (response) {\n            //\"attachment; filename=stockpickinglist20190110.pdf\"\n            var blob = new Blob([response.data], { type: 'text/csv' });\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'SoldStockReport.csv');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var downloadUrl = url.createObjectURL(blob);\n                a.href = downloadUrl;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFilteredLocations() {\n        var args = { params: {filterOnUser: true} };\n        return ResourcesService.apiFactory.get(endpoint + '/locations')(args);\n    }\n\n    function getFilteredBrands() {\n        var args = { params: {filterOnUser: true} };\n        return ResourcesService.apiFactory.get(endpoint + '/brands')(args);\n    }\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=StockPickingList20190110.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([-\\w\\d\\s]){1,}\\.(pdf|csv|xls){1,}/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('stock.api', [])\n    .factory('StockApiService', StockApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock', {\n        url: '/stock',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/stock/stock.tpl.html',\n        controller: 'MainStockController as vm'\n    });\n}\n\n// @ngInject\nfunction MainStockController() {\n    var vm = this;\n}\n\nangular.module('main.stock', ['stock.api', 'inventorying.api', 'stock.articles', 'stock.scannerinventorying', 'stock.stockpickinglist', 'stock.stockValueReports', 'stock.soldStockReports', 'stock.saleThroughputReports'])\n    .config(stateConfig)\n    .controller('MainStockController', MainStockController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stocklogistics.articletransfer', {\n        url: '/articletransfer',\n        templateUrl: 'main/stocklogistics/articletransfer/articletransfer.tpl.html',\n        controller: 'ArticleTransferController as vm',\n        resolve: {\n            locations: locationsResolver,\n            collections: collectionsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction locationsResolver(StockLogisticsApiService) {\n    return StockLogisticsApiService.getLocations();\n}\n\n// @ngInject\nfunction collectionsResolver(StockLogisticsApiService) {\n    return StockLogisticsApiService.getArticleCollections();\n}\n\n// @ngInject\nfunction ArticleTransferController($scope, $translate, $state, $interval, $timeout, AuthService, ProductsApiService, loadSpinnerService,\n                                   OrdersApiService, locations, collections, ToasterService, StockLogisticsApiService) {\n    var vm = this;\n\n    //Properties\n    var articlesGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n    var locationsGrid = {};\n    var locationsCollection = new wijmo.collections.CollectionView(locations);\n    var stocksData = [];\n    vm.searchTerm = \"\";\n    vm.numberOfResults = 9999;\n    vm.articleVariants = [];\n    vm.locations = locations;\n    vm.visibleLocations = [];\n    vm.minDiffToCreateSuggestion = 2;\n    vm.lowerThresholdQuantity = 1;\n    vm.moveMaximum = 1;\n    vm.includeIsCurrent = true;\n    vm.adjustWithStockValues = false;\n    vm.minimumCostPriceThreshold = 100;\n    vm.excludeArticlesWithOrderingPoints = false;\n    vm.collections = [];\n    vm.selectedCollection = {};\n    vm.tabSelection = {\n        search: true,\n        locations: false\n    };\n\n    //Methods\n    vm.captureArticlesGrid = captureArticlesGrid;\n    vm.captureLocationsGrid = captureLocationsGrid;\n    vm.searchArticles = searchArticles;\n    vm.insertStockQuantities = insertStockQuantities;\n    vm.fetchQuantityInTransitData = fetchQuantityInTransitData;\n    vm.submitAndCreateOrders = submitAndCreateOrders;\n    vm.validateGridRow = validateGridRow;\n    vm.preventChangingOfIsOkValue = preventChangingOfIsOkValue;\n    vm.changeToSearchTab = changeToSearchTab;\n    vm.changeToLocationsTab = changeToLocationsTab;\n    vm.changeToRulesTab = changeToRulesTab;\n    vm.selectAllLocations = selectAllLocations;\n    vm.selectNoLocations = selectNoLocations;\n    vm.canAccess = AuthService.canAccess;\n    vm.canSubmitAndCreateOrders = canSubmitAndCreateOrders;\n    vm.hasRowData = hasRowData;\n\n    activate();\n\n    function activate() {\n\n        var counter = 0;\n        _.forEach(vm.locations, function(location) {\n            counter++;\n            location.isVisible = true;\n            location.distributionWeight = 1;\n            location.locationPriority = counter;\n            location.outDeliverable = true;\n            location.inDeliverable = true;\n        });\n        setVisibleLocations();\n\n        // Fallback if the translation wasn't ready when we tried to translate last time. (happens sometimes\n        // when the user refreshes the page while in this controller/view)\n        var updatePromise = $interval(function() {\n            vm.collections[0].collectionDescription = $translate.instant('common.all');\n            $interval.cancel(updatePromise);\n        }, 5000);\n\n        vm.collections.push({id: 0, collectionDescription: $translate.instant('common.all')});\n        _.forEach(collections, function(collection) {\n            if (collection.isArticleSeason) {\n                vm.collections.push(collection);\n            }\n        });\n        vm.selectedCollection = vm.collections[0];\n    }\n\n    function hasRowData() {\n        return rowData && rowData.length > 0;\n    }\n\n    function captureArticlesGrid(s) {\n        articlesGrid = s;\n        articlesGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.Columns,\n            itemsSource: rowCollection\n        });\n\n        articlesGrid.itemFormatter = function(panel, rowNum, colNum, cell) {\n            var regularCellType = wijmo.grid.CellType.Cell;\n\n            if (panel.cellType === regularCellType) {\n                var relatedDataRow = rowData[rowNum];\n                var quantityValues = [];\n                var transferQuantityValues = [];\n                var locationNumbers = [];\n                var locationIds = [];\n                _.forEach(vm.visibleLocations, function(location) {\n                    quantityValues.push(relatedDataRow[location.id]);\n\n                    var transferQuantityValue = relatedDataRow[location.id + 'Difference'];\n                    if (transferQuantityValue !== undefined && !_.isNumber(transferQuantityValue)) {\n                        transferQuantityValue = parseInt(transferQuantityValue);\n                    }\n                    transferQuantityValues.push(transferQuantityValue);\n\n                    locationNumbers.push(location.locationNumber);\n                    locationIds.push(location.id);\n                });\n                var maxValue = _.max(quantityValues);\n                var minValue = _.min(quantityValues);\n\n                var transferQuantitySum = _.sum(transferQuantityValues);\n                var fromLocationCount = 0;\n                _.forEach(transferQuantityValues, function(num) {\n                    if (num < 0) {\n                        fromLocationCount += 1;\n                    }\n                });\n\n                var col = panel.columns[colNum];\n\n                var currentQuantityCellValue = relatedDataRow[col.binding];\n\n                var columnBindingIsLocationId = _.some(locationIds, function(locationId) {\n                    return locationId.toString() === col.binding;\n                });\n                var columnHeaderIsLocationNumber = _.some(locationNumbers, function(locationNumber) {\n                    return locationNumber === col.header;\n                });\n                var columnBindingIsLocationNumberAndDiffMarker = _.some(locationIds, function(locationId) {\n                    return locationId.toString() + 'Difference' === col.binding;\n                });\n\n                if (columnBindingIsLocationId && columnHeaderIsLocationNumber) {\n                    // cell is currentStockCell\n                    if (minValue !== undefined && currentQuantityCellValue === minValue) {\n                        cell.style.color = \"#000000\";\n                        cell.style.backgroundColor = \"#f7a7a7\";\n                    } else if (maxValue !== undefined && currentQuantityCellValue === maxValue) {\n                        cell.style.color = \"#000000\";\n                        cell.style.backgroundColor = \"#93e0a5\";\n                    } else {\n                        cell.style.color = \"\";\n                        cell.style.backgroundColor = \"\";\n                    }\n                } else if (columnBindingIsLocationNumberAndDiffMarker && columnHeaderIsLocationNumber) {\n                    // cell is transferSuggestionCell\n                    if (transferQuantitySum !== undefined && transferQuantitySum !== \"\" && (transferQuantitySum !== 0 || fromLocationCount > 1)) {\n                        cell.style.color = \"#000000\";\n                        cell.style.backgroundColor = \"#f7a7a7\";\n                    } else {\n                        cell.style.color = \"\";\n                        cell.style.backgroundColor = \"\";\n                    }\n                }\n            }\n        };\n    }\n\n    function captureLocationsGrid(s) {\n        locationsGrid = s;\n        locationsGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.None,\n            itemsSource: locationsCollection\n        });\n    }\n\n    function generateArtilcesGridColumns() {\n        articlesGrid.columns.clear();\n\n        var altArtNumberColumn = new wijmo.grid.Column();\n        altArtNumberColumn.binding = 'alternativeArticleNumberAndArticleName';\n        altArtNumberColumn.header = $translate.instant('article.article');\n        altArtNumberColumn.allowSorting = false;\n        altArtNumberColumn.width = 200;\n        altArtNumberColumn.isReadOnly = true;\n        articlesGrid.columns.push(altArtNumberColumn);\n\n        var variantDetail1Column = new wijmo.grid.Column();\n        variantDetail1Column.binding = 'variantDetail1.variantDetailName';\n        variantDetail1Column.header = $translate.instant('article.variantdetail1');\n        variantDetail1Column.allowSorting = false;\n        variantDetail1Column.width = 100;\n        variantDetail1Column.isReadOnly = true;\n        articlesGrid.columns.push(variantDetail1Column);\n\n        var variantDetail2Column = new wijmo.grid.Column();\n        variantDetail2Column.binding = 'variantDetail2.variantDetailName';\n        variantDetail2Column.header = $translate.instant('article.variantdetail2');\n        variantDetail2Column.allowSorting = false;\n        variantDetail2Column.width = 50;\n        variantDetail2Column.isReadOnly = true;\n        articlesGrid.columns.push(variantDetail2Column);\n\n        _.forEach(vm.locations, function(location) {\n            if (location.isVisible) {\n                var locationColumn = new wijmo.grid.Column();\n                locationColumn.binding = location.id.toString();\n                locationColumn.header = location.locationNumber;\n                locationColumn.allowSorting = false;\n                locationColumn.width = 40;\n                locationColumn.isReadOnly = true;\n                articlesGrid.columns.push(locationColumn);\n            }\n        });\n\n        var checkboxColumn = new wijmo.grid.Column();\n        checkboxColumn.binding = 'isOk';\n        checkboxColumn.header = $translate.instant('common.ok');\n        checkboxColumn.allowSorting = false;\n        checkboxColumn.width = 50;\n        checkboxColumn.isReadOnly = false;\n        articlesGrid.columns.push(checkboxColumn);\n\n        _.forEach(vm.locations, function(location) {\n            if (location.isVisible) {\n                var locationColumn = new wijmo.grid.Column();\n                locationColumn.binding = location.id + \"\" + \"Difference\";\n                locationColumn.header = location.locationNumber;\n                locationColumn.allowSorting = false;\n                locationColumn.width = 40;\n                locationColumn.isReadOnly = false;\n                articlesGrid.columns.push(locationColumn);\n            }\n        });\n\n        articlesGrid.invalidate();\n    }\n\n    function generateArticlesRowData() {\n        rowData.length = 0;\n        _.forEach(vm.articleVariants, function(articleVariant) {\n            articleVariant.isOk = false;\n            rowData.push(articleVariant);\n        });\n\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function searchArticles() {\n        if (vm.searchTerm.length < 3 && (!AuthService.canAccess('article', 'readList') && !AuthService.canAccess('article', 'read'))) {\n            return;\n        }\n\n        loadSpinnerService.start('mainSpinner');\n        ProductsApiService.getAllArticleVariants(0, vm.searchTerm, vm.numberOfResults, vm.selectedCollection.id).then(function (response) {\n            vm.articleVariants = response.data;\n\n            _.forEach(vm.articleVariants, function(articleVariant) {\n                articleVariant['alternativeArticleNumberAndArticleName'] = articleVariant.article.alternativeArticleNumber + \" \" + articleVariant.article.articleName;\n            });\n\n            setVisibleLocations();\n            generateArtilcesGridColumns();\n            generateArticlesRowData();\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function insertStockQuantities() {\n        loadSpinnerService.start('mainSpinner');\n\n        zeroAllGridValues();\n\n        var articleVariantIdsAndLocationIds = [];\n        _.forEach(rowData, function(row) {\n            _.forEach(vm.locations, function (location) {\n                if (location.isVisible) {\n                    articleVariantIdsAndLocationIds.push({ articleVariantId: row.id, locationId: location.id });\n                }\n            });\n        });\n\n        ProductsApiService.getProductVariantsStocks(articleVariantIdsAndLocationIds).then(function(response) {\n            stocksData = response.data;\n            insertStocksDataIntoGrid(response.data);\n\n            // If we should exclude articles with ordering points\n            if (vm.excludeArticlesWithOrderingPoints) {\n                var articleVariantIds = [];\n                _.forEach(articleVariantIdsAndLocationIds, function(item) { articleVariantIds.push(item['articleVariantId']); });\n                StockLogisticsApiService.getByArticlesVariants(articleVariantIds).then(function(response) {\n                    removeStocksDataForStockLogistics(response.data);\n\n                    // THEN if we should account for in transit values.\n                    if (vm.adjustWithStockValues) {\n                        ProductsApiService.getProductVariantsInTransitValues(articleVariantIdsAndLocationIds).then(function(response) {\n                            adjustStocksDataWithTransferQuantities(response.data);\n                            createQuantityTransferSuggestions();\n                        }, function(error) {\n                            console.log(error);\n                        }).finally(function() {\n                            loadSpinnerService.stop('mainSpinner');\n                        });\n                    } else {\n                        createQuantityTransferSuggestions();\n                    }\n\n                }, function(error) {\n                    console.log(error);\n                });\n            // If we should account for in transit values.\n            } else if (vm.adjustWithStockValues) {\n                ProductsApiService.getProductVariantsInTransitValues(articleVariantIdsAndLocationIds).then(function(response) {\n                    adjustStocksDataWithTransferQuantities(response.data);\n                    createQuantityTransferSuggestions();\n                }, function(error) {\n                    console.log(error);\n                }).finally(function() {\n                    loadSpinnerService.stop('mainSpinner');\n                });\n            } else {\n                createQuantityTransferSuggestions();\n            }\n\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function fetchQuantityInTransitData() {\n        loadSpinnerService.start('mainSpinner');\n        var articleVariantIdsAndLocationIds = [];\n        _.forEach(rowData, function(row) {\n            _.forEach(vm.locations, function (location) {\n                if (location.isVisible) {\n                    articleVariantIdsAndLocationIds.push({ articleVariantId: row.id, locationId: location.id });\n                }\n            });\n        });\n\n        ProductsApiService.getProductVariantsInTransitValues(articleVariantIdsAndLocationIds).then(function(response) {\n            adjustStocksDataWithTransferQuantities(response.data);\n            createQuantityTransferSuggestions();\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function submitAndCreateOrders() {\n        var locationsArticleVariantsLinkStructures = [];\n\n        _.forEach(rowData, function(row) {\n\n            if (row.isOk) {\n                var currentTransferObjects = [];\n\n                var outLocation = _.find(vm.visibleLocations, function(location) {\n                    return row[location.id + \"Difference\"] < 0;\n                });\n\n                _.forEach(vm.visibleLocations, function(location) {\n                    if (row[location.id + \"Difference\"] > 0) {\n                        currentTransferObjects.push({\n                            fromLocationId: outLocation.id,\n                            toLocationId: location.id,\n                            articleVariantId: row.id,\n                            quantity: parseInt(row[location.id + \"Difference\"])\n                        });\n                    }\n                });\n\n                if (outLocation) {\n                    var totalSum = parseInt(row[outLocation.id + \"Difference\"]);\n                    _.forEach(currentTransferObjects, function(transferObject) {\n                        totalSum += parseInt(transferObject.quantity);\n                    });\n\n                    if (totalSum === 0) {\n                        _.forEach(currentTransferObjects, function(transferObject) {\n                            locationsArticleVariantsLinkStructures.push(transferObject);\n                        });\n                    }\n                }\n            }\n        });\n\n        if (locationsArticleVariantsLinkStructures.length > 0) {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.createMultipleInternalOrders(locationsArticleVariantsLinkStructures).then(function(response) {\n                $state.go('order.ordersearch');\n            }, function(error) {\n                ToasterService.showError($translate.instant(error), $translate.instant('common.error'));\n            }).then(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        } else {\n            ToasterService.showWarning('Inga kvantiteter valda. Skapar ingen order.', $translate.instant('common.warning'));\n        }\n    }\n\n    function createQuantityTransferSuggestions() {\n        // Abstraction\n        var findMax = true;\n        var findMin = false;\n\n        // Find all chosen locations.\n        var visibleLocations = _.filter(vm.locations, function(location) {\n            return location.isVisible;\n        });\n\n        _.forEach(rowData, function(row) {\n            var locationsWithMaxQuantity = getLocationsWithEdgeStockQuantity(row, visibleLocations, findMax);\n            var locationsWithMinQuantity = getLocationsWithEdgeStockQuantity(row, visibleLocations, findMin);\n\n            locationsWithMaxQuantity = _.sortBy(locationsWithMaxQuantity, function(location) { return -location.locationPriority; });\n            locationsWithMinQuantity = _.sortBy(locationsWithMinQuantity, function(location) { return location.locationPriority; });\n\n            if (locationsWithMaxQuantity[0] === undefined || locationsWithMinQuantity[0] === undefined) {\n                // Row does not have a maximum or minimum value.\n                return;\n            }\n\n            var maxValue = locationsWithMaxQuantity[0]['stockQuantity'] + locationsWithMaxQuantity[0]['stockQuantityDifference'];\n            var minValue = locationsWithMinQuantity[0]['stockQuantity'] + locationsWithMinQuantity[0]['stockQuantityDifference'];\n            var diff = maxValue - minValue;\n\n            var maxLocation = locationsWithMaxQuantity[0];\n            var minLocation = locationsWithMinQuantity[0];\n\n            var minLocationRelatedStock = _.find(stocksData, function(stock) {\n                return stock.location.id === minLocation.id && stock.articleVariant.id === row.id;\n            });\n\n            var costIsAboveThreshold = false;\n            if (minLocationRelatedStock !== undefined && minLocationRelatedStock.purchaseCost > vm.minimumCostPriceThreshold) {\n                costIsAboveThreshold = true;\n            }\n\n            if (row[minLocation.id] <= vm.lowerThresholdQuantity && diff >= vm.minDiffToCreateSuggestion && costIsAboveThreshold) {\n                row[maxLocation.id + \"Difference\"] = row[maxLocation.id + \"Difference\"] - 1;\n                row[minLocation.id + \"Difference\"] = row[minLocation.id + \"Difference\"] + 1;\n            }\n\n            var rowHasTransferValues = false;\n            _.forEach(vm.visibleLocations, function(location) {\n                if (row[location.id + \"Difference\"] === 0 || row[location.id + \"Difference\"] === \"\") {\n                    row[location.id + \"Difference\"] = undefined;\n                }\n                if (row[location.id + \"Difference\"] !== undefined) {\n                    rowHasTransferValues = true;\n                }\n            });\n\n            if (rowHasTransferValues) {\n                row.isOk = true;\n            }\n        });\n        articlesGrid.invalidate();\n    }\n\n    function removeStocksDataForStockLogistics(stockLogistics) {\n        _.forEach(stockLogistics, function(stockLogistic) {\n            var relatedRow = _.find(rowData, function(row) {\n                return row.id === stockLogistic.articleVariant.id;\n            });\n\n            _.pull(rowData, relatedRow);\n        });\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function adjustStocksDataWithTransferQuantities(quantityInTransits) {\n        _.forEach(quantityInTransits, function(transitData) {\n            var relatedRow = _.find(rowData, function(row) {\n                return row.id === transitData.articleVariant.id;\n            });\n\n            if (relatedRow !== undefined) {\n                var relatedStock = _.find(stocksData, function(stock) {\n                    return stock.articleVariant.id === transitData.articleVariant.id && stock.location.id === transitData.location.id;\n                });\n\n                if (relatedStock !== undefined) {\n                    relatedRow[transitData.location.id] = relatedStock.quantity + transitData.quantityInTransit;\n                } else {\n                    relatedRow[transitData.location.id] = transitData.quantityInTransit;\n                }\n\n                if (relatedRow[transitData.location.id] < 0) {\n                    relatedRow[transitData.location.id] = undefined;\n                }\n            }\n        });\n\n        var tempRowData = _.reject(rowData, function(row) {\n            var allRowsAreValueless = true;\n            _.forEach(vm.visibleLocations, function(location) {\n                if (row[location.id] !== undefined) {\n                    allRowsAreValueless = false;\n                }\n            });\n            return allRowsAreValueless;\n        });\n\n        rowData.length = 0;\n        _.forEach(tempRowData, function(row) {\n            rowData.push(row);\n        });\n\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function getLocationsWithEdgeStockQuantity(row, inLocations, findMax) {\n        var locations = [];\n\n        // Remove locations without stockQuantity.\n        _.forEach(inLocations, function(loc) {\n            if (row[loc.id] !== undefined) {\n                locations.push(loc);\n            }\n        });\n\n        if (locations.length < 1) {\n            return [];\n        }\n\n        var locationsAndQuantity = [];\n\n        _.forEach(locations, function(location) {\n            location['stockQuantity'] = row[location.id];\n            location['stockQuantityDifference'] = row[location.id + \"\" + \"Difference\"];\n            locationsAndQuantity.push(location);\n        });\n\n        locationsAndQuantity = _.sortBy(locationsAndQuantity, function(location) {\n            if (findMax) { // Descending\n                return -(location['stockQuantity'] + location['stockQuantityDifference']);\n            } else { // Ascending\n                return (location['stockQuantity'] + location['stockQuantityDifference']);\n            }\n        });\n\n        var maxValue = locationsAndQuantity[0]['stockQuantity'] - locationsAndQuantity[0]['stockQuantityDifference'];\n\n        locationsAndQuantity = _.filter(locationsAndQuantity, function(location) {\n            return (location['stockQuantity'] - locationsAndQuantity[0]['stockQuantityDifference']) === maxValue;\n        });\n\n        return locationsAndQuantity;\n    }\n\n    function changeToSearchTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.search = true;\n    }\n\n    function changeToLocationsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.locations = true;\n        locationsGrid.invalidate();\n        locationsCollection.refresh();\n    }\n\n    function changeToRulesTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.rules = true;\n    }\n\n    function selectAllLocations() {\n        _.forEach(vm.locations, function(location) {\n            location.isVisible = true;\n        });\n        locationsGrid.invalidate();\n        locationsCollection.refresh();\n    }\n\n    function selectNoLocations() {\n        _.forEach(vm.locations, function(location) {\n            location.isVisible = false;\n        });\n        locationsGrid.invalidate();\n        locationsCollection.refresh();\n    }\n\n    function setAllTabSelectionsToFalse() {\n        var keys = Object.keys(vm.tabSelection);\n        _.forEach(keys, function(key) {\n            vm.tabSelection[key] = false;\n        });\n    }\n\n    function insertStocksDataIntoGrid(stocks) {\n        _.forEach(stocks, function(stock) {\n            var foundRow = _.find(rowData, function(row) {\n                return row.id === stock.articleVariant.id;\n            });\n\n            if (foundRow !== undefined) {\n                foundRow[stock.location.id] = (stock.quantity >= 0) ? stock.quantity : undefined;\n                foundRow[stock.location.id + \"Difference\"] = 0;\n            }\n\n        });\n\n        // Keep only the rows that actually has stock values.\n        var rowDataCopy = angular.copy(rowData);\n        rowData.length = 0;\n        _.forEach(rowDataCopy, function(row) {\n            var rowHasValues = false;\n            _.forEach(vm.visibleLocations, function(location) {\n                if (row[location.id] !== undefined) {\n                    rowHasValues = true;\n                }\n            });\n\n            if (rowHasValues || vm.adjustWithStockValues) {\n                rowData.push(row);\n            }\n        });\n\n        rowCollection.refresh();\n        articlesGrid.invalidate();\n    }\n\n    function setVisibleLocations() {\n        vm.visibleLocations = _.filter(vm.locations, function(location) {\n            return location.isVisible;\n        });\n    }\n\n    function zeroAllGridValues() {\n        _.forEach(rowData, function(row) {\n            _.forEach(vm.visibleLocations, function(location) {\n                var stock = _.find(stocksData, function(stock) {\n                    return stock.articleVariant.id === row.id && stock.location.id === location.id;\n                });\n                if (stock !== undefined) {\n                    row[location.id] = 0;\n                } else {\n                    row[location.id] = undefined;\n                }\n                row[location.id + \"Difference\"] = undefined;\n                row.isOk = false;\n            });\n        });\n    }\n\n    function validateGridRow(grid) {\n        var rowNumber = grid.selection.row;\n        var correspondingRowData = grid.rows[rowNumber].dataItem;\n\n        var transferQuantityValues = [];\n        _.forEach(vm.visibleLocations, function(location) {\n            var transferQuantityValue = correspondingRowData[location.id + 'Difference'];\n            if (transferQuantityValue === undefined) {\n                transferQuantityValue = 0;\n            } else if (transferQuantityValue !== undefined && !_.isNumber(transferQuantityValue)) {\n                transferQuantityValue = parseInt(transferQuantityValue);\n            }\n\n            transferQuantityValues.push(transferQuantityValue);\n        });\n\n        var transferQuantitySum = _.sum(transferQuantityValues);\n        var fromLocationCount = 0;\n        _.forEach(transferQuantityValues, function(num) {\n            if (num < 0) {\n                fromLocationCount += 1;\n            }\n        });\n\n        if (transferQuantitySum !== 0 || fromLocationCount > 1) {\n            correspondingRowData.isOk = false;\n        }\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function preventChangingOfIsOkValue(grid, e) {\n        var rowNumber = grid.selection.row;\n        var colNumber = grid.selection.col;\n        var correspondingRowData = grid.rows[rowNumber].dataItem;\n\n        var transferQuantityValues = [];\n        _.forEach(vm.visibleLocations, function(location) {\n            var transferQuantityValue = correspondingRowData[location.id + 'Difference'];\n            if (transferQuantityValue === undefined) {\n                transferQuantityValue = 0;\n            } else if (transferQuantityValue !== undefined && !_.isNumber(transferQuantityValue)) {\n                transferQuantityValue = parseInt(transferQuantityValue);\n            }\n\n            transferQuantityValues.push(transferQuantityValue);\n        });\n\n        var transferQuantitySum = _.sum(transferQuantityValues);\n        var fromLocationCount = 0;\n        _.forEach(transferQuantityValues, function(num) {\n            if (num < 0) {\n                fromLocationCount += 1;\n            }\n        });\n\n        var selectedColumnBinding = grid.columns[colNumber].binding;\n\n        if (selectedColumnBinding === 'isOk' && (transferQuantitySum !== 0 || fromLocationCount > 1)) {\n            correspondingRowData.isOk = false;\n            e.cancel = true;\n        } else if (selectedColumnBinding !== 'isOk' && (transferQuantitySum !== 0 || fromLocationCount > 1)) {\n            correspondingRowData.isOk = false;\n        }\n\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function canSubmitAndCreateOrders() {\n        var canAccess = vm.canAccess('order', 'create');\n        var hasSelectedValidRows = _.findIndex(rowData, function(row) { return row.isOk; }) !== -1;\n\n        return canAccess && hasSelectedValidRows;\n    }\n}\n\nangular\n    .module('stocklogistics.articletransfer', [])\n    .config(stateConfig)\n    .controller('ArticleTransferController', ArticleTransferController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stocklogistics.eshopreplenishment', {\n        url: '/eshopreplenishment',\n        templateUrl: 'main/stocklogistics/eshopreplenishment/eshopreplenishment.tpl.html',\n        controller: 'EshopReplenishmentController as vm',\n        resolve: {\n            locations: locationsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction locationsResolver(StockLogisticsApiService) {\n    return StockLogisticsApiService.getLocations();\n}\n\n\n// @ngInject\nfunction EshopReplenishmentController($scope, $translate, $state, $interval, $timeout, AuthService, ProductsApiService, loadSpinnerService,\n                                   OrdersApiService, locations, ToasterService, StockLogisticsApiService) {\n    var vm = this;\n    var int32Max = 2147483647;\n\n    var articlesGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n\n    var locationsGrid = {};\n    var locationsCollection = new wijmo.collections.CollectionView(locations);\n\n    var stocksData = [];\n    var stockLogisticsData = [];\n    var quantityInTansitData = [];\n\n    vm.searchTerm = \"\";\n    vm.numberOfResults = 9999;\n    vm.articleVariants = [];\n    vm.locations = locations;\n    vm.visibleLocations = [];\n    vm.minDiffToCreateSuggestion = 2;\n    vm.lowerThresholdQuantity = 1;\n    vm.moveMaximum = 1;\n    vm.handleNegativeEshopQuantities = true;\n\n    vm.selectedCollection = {};\n\n    vm.captureArticlesGrid = captureArticlesGrid;\n    vm.captureLocationsGrid = captureLocationsGrid;\n\n    vm.searchArticles = searchArticles;\n    vm.insertStockQuantities = insertStockQuantities;\n    vm.fetchQuantityInTransitData = fetchQuantityInTransitData;\n    vm.submitAndCreateOrders = submitAndCreateOrders;\n    vm.validateGridRow = validateGridRow;\n    vm.preventChangingOfIsOkValue = preventChangingOfIsOkValue;\n\n    vm.changeToSearchTab = changeToSearchTab;\n    vm.changeToLocationsTab = changeToLocationsTab;\n    vm.tabSelection = {\n        search: true,\n        locations: false\n    };\n    vm.selectAllLocations = selectAllLocations;\n    vm.selectNoLocations = selectNoLocations;\n    vm.canAccess = AuthService.canAccess;\n\n    activate();\n\n    function activate() {\n\n        var counter = 0;\n        _.forEach(vm.locations, function(location) {\n            counter++;\n            location.isVisible = true;\n            location.distributionWeight = 1;\n            location.locationPriority = counter;\n\n            if (_.toLower(location.locationType.locationSystemType) === \"eshop\") {\n                location.outDeliverable = false;\n                location.inDeliverable = true;\n            } else {\n                location.outDeliverable = true;\n                location.inDeliverable = false;\n            }\n\n        });\n        setVisibleLocations();\n    }\n\n    function captureArticlesGrid(s) {\n        articlesGrid = s;\n        articlesGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.Columns,\n            itemsSource: rowCollection\n        });\n\n        articlesGrid.itemFormatter = function(panel, rowNum, colNum, cell) {\n            var style = cell.style;\n            var regularCellType = wijmo.grid.CellType.Cell;\n\n            if (panel.cellType === regularCellType) {\n                var relatedDataRow = rowData[rowNum];\n                var quantityValues = [];\n                var transferQuantityValues = [];\n                var locationNumbers = [];\n                var locationIds = [];\n                _.forEach(vm.visibleLocations, function(location) {\n                    quantityValues.push(relatedDataRow[location.id]);\n\n                    var transferQuantityValue = relatedDataRow[location.id + 'Difference'];\n                    if (transferQuantityValue !== undefined && !_.isNumber(transferQuantityValue)) {\n                        transferQuantityValue = parseInt(transferQuantityValue);\n                    }\n                    transferQuantityValues.push(transferQuantityValue);\n\n                    locationNumbers.push(location.locationNumber);\n                    locationIds.push(location.id);\n                });\n                var maxValue = _.max(quantityValues);\n                var minValue = _.min(quantityValues);\n                var maxTransferValue = _.max(transferQuantityValues);\n                var minTransferValue = _.min(transferQuantityValues);\n\n                var transferQuantitySum = _.sum(transferQuantityValues);\n                var fromLocationCount = 0;\n                _.forEach(transferQuantityValues, function(num) {\n                    if (num < 0) {\n                        fromLocationCount += 1;\n                    }\n                });\n\n                var col = panel.columns[colNum];\n\n                var currentQuantityCellValue = relatedDataRow[col.binding];\n\n                var columnBindingIsLocationId = _.some(locationIds, function(locationId) {\n                    return locationId.toString() === col.binding;\n                });\n                var columnHeaderIsLocationNumber = _.some(locationNumbers, function(locationNumber) {\n                    return locationNumber === col.header;\n                });\n                var columnBindingIsLocationNumberAndDiffMarker = _.some(locationIds, function(locationId) {\n                    return locationId.toString() + 'Difference' === col.binding;\n                });\n\n                if (columnBindingIsLocationId && columnHeaderIsLocationNumber) {\n                    // cell is currentStockCell\n                    if (minValue !== undefined && currentQuantityCellValue === minValue) {\n                        cell.style.color = \"#000000\";\n                        cell.style.backgroundColor = \"#f7a7a7\";\n                    } else if (maxValue !== undefined && currentQuantityCellValue === maxValue) {\n                        cell.style.color = \"#000000\";\n                        cell.style.backgroundColor = \"#93e0a5\";\n                    } else {\n                        cell.style.color = \"\";\n                        cell.style.backgroundColor = \"\";\n                    }\n                } else if (columnBindingIsLocationNumberAndDiffMarker && columnHeaderIsLocationNumber) {\n                    // cell is transferSuggestionCell\n                    if (transferQuantitySum !== undefined && transferQuantitySum !== \"\" && (transferQuantitySum !== 0 || fromLocationCount > 1)) {\n                        cell.style.color = \"#000000\";\n                        cell.style.backgroundColor = \"#f7a7a7\";\n                    } else {\n                        cell.style.color = \"\";\n                        cell.style.backgroundColor = \"\";\n                    }\n                }\n            }\n        };\n    }\n\n    function captureLocationsGrid(s) {\n        locationsGrid = s;\n        locationsGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Row,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.None,\n            itemsSource: locationsCollection\n        });\n    }\n\n    function generateArtilcesGridColumns() {\n        articlesGrid.columns.clear();\n\n        var altArtNumberColumn = new wijmo.grid.Column();\n        altArtNumberColumn.binding = 'alternativeArticleNumberAndArticleName';\n        altArtNumberColumn.header = $translate.instant('article.article');\n        altArtNumberColumn.allowSorting = false;\n        altArtNumberColumn.width = 200;\n        altArtNumberColumn.isReadOnly = true;\n        articlesGrid.columns.push(altArtNumberColumn);\n\n        var variantDetail1Column = new wijmo.grid.Column();\n        variantDetail1Column.binding = 'variantDetail1.variantDetailName';\n        variantDetail1Column.header = $translate.instant('article.variantdetail1');\n        variantDetail1Column.allowSorting = false;\n        variantDetail1Column.width = 100;\n        variantDetail1Column.isReadOnly = true;\n        articlesGrid.columns.push(variantDetail1Column);\n\n        var variantDetail2Column = new wijmo.grid.Column();\n        variantDetail2Column.binding = 'variantDetail2.variantDetailName';\n        variantDetail2Column.header = $translate.instant('article.variantdetail2');\n        variantDetail2Column.allowSorting = false;\n        variantDetail2Column.width = 50;\n        variantDetail2Column.isReadOnly = true;\n        articlesGrid.columns.push(variantDetail2Column);\n\n        _.forEach(vm.locations, function(location) {\n            if (location.isVisible) {\n                var locationColumn = new wijmo.grid.Column();\n                locationColumn.binding = location.id.toString();\n                locationColumn.header = location.locationNumber;\n                locationColumn.allowSorting = false;\n                locationColumn.width = 40;\n                locationColumn.isReadOnly = true;\n                articlesGrid.columns.push(locationColumn);\n            }\n        });\n\n        var checkboxColumn = new wijmo.grid.Column();\n        checkboxColumn.binding = 'isOk';\n        checkboxColumn.header = $translate.instant('common.ok');\n        checkboxColumn.allowSorting = false;\n        checkboxColumn.width = 50;\n        checkboxColumn.isReadOnly = false;\n        articlesGrid.columns.push(checkboxColumn);\n\n        _.forEach(vm.locations, function(location) {\n            if (location.isVisible) {\n                var locationColumn = new wijmo.grid.Column();\n                locationColumn.binding = location.id + \"\" + \"Difference\";\n                locationColumn.header = location.locationNumber;\n                locationColumn.allowSorting = false;\n                locationColumn.width = 40;\n                locationColumn.isReadOnly = false;\n                articlesGrid.columns.push(locationColumn);\n            }\n        });\n\n        articlesGrid.invalidate();\n    }\n\n    function generateArticlesRowData() {\n        rowData.length = 0;\n        _.forEach(vm.articleVariants, function(articleVariant) {\n            articleVariant.isOk = false;\n            rowData.push(articleVariant);\n        });\n\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function searchArticles() {\n        if (vm.searchTerm.length < 3 && (!AuthService.canAccess('article', 'readList') && !AuthService.canAccess('article', 'read'))) {\n            return;\n        }\n\n        loadSpinnerService.start('mainSpinner');\n        ProductsApiService.getProductVariants(0, vm.searchTerm, vm.numberOfResults, vm.selectedCollection.id, true).then(function (response) {\n            vm.articleVariants = response.data;\n\n            _.forEach(vm.articleVariants, function(articleVariant) {\n                articleVariant['alternativeArticleNumberAndArticleName'] = articleVariant.article.alternativeArticleNumber + \" \" + articleVariant.article.articleName;\n            });\n\n            setVisibleLocations();\n            generateArtilcesGridColumns();\n            generateArticlesRowData();\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function insertStockQuantities() {\n        loadSpinnerService.start('mainSpinner');\n\n        zeroAllGridValues();\n\n        var articleVariantIdsAndLocationIds = [];\n        _.forEach(rowData, function(row) {\n            _.forEach(vm.locations, function (location) {\n                if (location.isVisible) {\n                    articleVariantIdsAndLocationIds.push({ articleVariantId: row.id, locationId: location.id });\n                }\n            });\n        });\n\n        ProductsApiService.getProductVariantsStocks(articleVariantIdsAndLocationIds).then(function(response) {\n            stocksData = response.data;\n            insertStocksDataIntoGrid(response.data);\n\n            createQuantityTransferSuggestions();\n\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function fetchQuantityInTransitData() {\n        loadSpinnerService.start('mainSpinner');\n        var articleVariantIdsAndLocationIds = [];\n        _.forEach(rowData, function(row) {\n            _.forEach(vm.locations, function (location) {\n                if (location.isVisible) {\n                    articleVariantIdsAndLocationIds.push({ articleVariantId: row.id, locationId: location.id });\n                }\n            });\n        });\n\n        ProductsApiService.getProductVariantsInTransitValues(articleVariantIdsAndLocationIds).then(function(response) {\n            quantityInTansitData = response.data;\n            adjustStocksDataWithTransferQuantities(response.data);\n            createQuantityTransferSuggestions();\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function submitAndCreateOrders() {\n        var locationsArticleVariantsLinkStructures = [];\n\n        _.forEach(rowData, function(row) {\n\n            if (row.isOk) {\n                var currentTransferObjects = [];\n\n                var outLocation = _.find(vm.visibleLocations, function(location) {\n                    return row[location.id + \"Difference\"] < 0;\n                });\n\n                _.forEach(vm.visibleLocations, function(location) {\n                    if (row[location.id + \"Difference\"] > 0) {\n                        currentTransferObjects.push({\n                            fromLocationId: outLocation.id,\n                            toLocationId: location.id,\n                            articleVariantId: row.id,\n                            quantity: parseInt(row[location.id + \"Difference\"])\n                        });\n                    }\n                });\n\n                var totalSum = parseInt(row[outLocation.id + \"Difference\"]);\n                _.forEach(currentTransferObjects, function(transferObject) {\n                    totalSum += parseInt(transferObject.quantity);\n                });\n\n                if (totalSum === 0) {\n                    _.forEach(currentTransferObjects, function(transferObject) {\n                        locationsArticleVariantsLinkStructures.push(transferObject);\n                    });\n                }\n            }\n        });\n\n        OrdersApiService.createMultipleInternalOrders(locationsArticleVariantsLinkStructures).then(function(response) {\n            console.log(\"Success\");\n            $state.go('order.ordersearch');\n        }, function(error) {\n            console.log(\"Error\");\n        });\n\n    }\n\n    function createQuantityTransferSuggestions() {\n        // Abstraction\n        var findMax = true;\n        var findMin = false;\n\n        // Find all chosen locations.\n        var visibleLocations = _.filter(vm.locations, function(location) {\n            return location.isVisible;\n        });\n\n        _.forEach(rowData, function(row) {\n            var locationsWithMaxQuantity = getLocationsWithEdgeStockQuantity(row, visibleLocations, findMax);\n            var locationsWithMinQuantity = getLocationsWithEdgeStockQuantity(row, visibleLocations, findMin);\n\n            locationsWithMaxQuantity = _.sortBy(locationsWithMaxQuantity, function(location) { return -location.locationPriority; });\n            locationsWithMinQuantity = _.sortBy(locationsWithMinQuantity, function(location) { return location.locationPriority; });\n\n            if (locationsWithMaxQuantity[0] === undefined || locationsWithMinQuantity[0] === undefined) {\n                // Row does not have a maximum or minimum value.\n                return;\n            }\n\n            var maxValue = locationsWithMaxQuantity[0]['stockQuantity'] + locationsWithMaxQuantity[0]['stockQuantityDifference'];\n            var minValue = locationsWithMinQuantity[0]['stockQuantity'] + locationsWithMinQuantity[0]['stockQuantityDifference'];\n            var diff = maxValue - minValue;\n\n            var maxLocation = locationsWithMaxQuantity[0];\n            var minLocation = locationsWithMinQuantity[0];\n\n            var minLocationRelatedStock = _.find(stocksData, function(stock) {\n                return stock.location.id === minLocation.id && stock.articleVariant.id === row.id;\n            });\n\n            var eshops = _.filter(visibleLocations, function(location) {\n                return _.toLower(location.locationType.locationSystemType) === 'eshop';\n            });\n\n            _.forEach(eshops, function(eshop) {\n                var normalizationValue = 0 - Math.max(row[eshop.id], 0 - row[maxLocation.id]);\n                if (vm.handleNegativeEshopQuantities && normalizationValue > 0) {\n                    row[maxLocation.id + \"Difference\"] = row[maxLocation.id + \"Difference\"] - normalizationValue;\n                    row[eshop.id + \"Difference\"] = row[eshop.id + \"Difference\"] + normalizationValue;\n                } else if (!vm.handleNegativeEshopQuantities && normalizationValue < 0) {\n                    row[eshop.id + \"Difference\"] = row[eshop.id + \"Difference\"] + normalizationValue;\n                    row[minLocation.id + \"Difference\"] = row[minLocation.id + \"Difference\"] - normalizationValue;\n                }\n            });\n\n            var rowHasTransferValues = false;\n            _.forEach(vm.visibleLocations, function(location) {\n                if (row[location.id + \"Difference\"] === 0 || row[location.id + \"Difference\"] === \"\") {\n                    row[location.id + \"Difference\"] = undefined;\n                }\n                if (row[location.id + \"Difference\"] !== undefined) {\n                    rowHasTransferValues = true;\n                }\n            });\n\n            if (rowHasTransferValues) {\n                row.isOk = true;\n            }\n        });\n        articlesGrid.invalidate();\n    }\n\n    function removeStocksDataForStockLogistics(stockLogistics) {\n        _.forEach(stockLogistics, function(stockLogistic) {\n            var relatedRow = _.find(rowData, function(row) {\n                return row.id === stockLogistic.articleVariant.id;\n            });\n\n            _.pull(rowData, relatedRow);\n        });\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function adjustStocksDataWithTransferQuantities(quantityInTransits) {\n        _.forEach(quantityInTransits, function(transitData) {\n            var relatedRow = _.find(rowData, function(row) {\n                return row.id === transitData.articleVariant.id;\n            });\n\n            if (relatedRow !== undefined) {\n                var relatedStock = _.find(stocksData, function(stock) {\n                    return stock.articleVariant.id === transitData.articleVariant.id && stock.location.id === transitData.location.id;\n                });\n\n                if (relatedStock !== undefined) {\n                    relatedRow[transitData.location.id] = relatedStock.quantity + transitData.quantityInTransit;\n                } else {\n                    relatedRow[transitData.location.id] = transitData.quantityInTransit;\n                }\n\n                if (relatedRow[transitData.location.id] < 0) {\n                    relatedRow[transitData.location.id] = undefined;\n                }\n            }\n        });\n\n        var tempRowData = _.reject(rowData, function(row) {\n            var allRowsAreValueless = true;\n            _.forEach(vm.visibleLocations, function(location) {\n                if (row[location.id] !== undefined) {\n                    allRowsAreValueless = false;\n                }\n            });\n            return allRowsAreValueless;\n        });\n\n        rowData.length = 0;\n        _.forEach(tempRowData, function(row) {\n            rowData.push(row);\n        });\n\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function getLocationsWithEdgeStockQuantity(row, inLocations, findMax) {\n        var locations = [];\n\n        // Remove locations without stockQuantity.\n        _.forEach(inLocations, function(loc) {\n            if (row[loc.id] !== undefined) {\n                locations.push(loc);\n            }\n        });\n\n        if (locations.length < 1) {\n            return [];\n        }\n\n        var locationsAndQuantity = [];\n\n        _.forEach(locations, function(location) {\n            location['stockQuantity'] = row[location.id];\n            location['stockQuantityDifference'] = row[location.id + \"\" + \"Difference\"];\n            locationsAndQuantity.push(location);\n        });\n\n        locationsAndQuantity = _.sortBy(locationsAndQuantity, function(location) {\n            if (findMax) { // Descending\n                return -(location['stockQuantity'] + location['stockQuantityDifference']);\n            } else { // Ascending\n                return (location['stockQuantity'] + location['stockQuantityDifference']);\n            }\n        });\n\n        var maxValue = locationsAndQuantity[0]['stockQuantity'] - locationsAndQuantity[0]['stockQuantityDifference'];\n\n        locationsAndQuantity = _.filter(locationsAndQuantity, function(location) {\n            return (location['stockQuantity'] - locationsAndQuantity[0]['stockQuantityDifference']) === maxValue;\n        });\n\n        return locationsAndQuantity;\n    }\n\n    function changeToSearchTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.search = true;\n    }\n\n    function changeToLocationsTab() {\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.locations = true;\n        locationsGrid.invalidate();\n        locationsCollection.refresh();\n    }\n\n    function selectAllLocations() {\n        _.forEach(vm.locations, function(location) {\n            location.isVisible = true;\n        });\n        locationsGrid.invalidate();\n        locationsCollection.refresh();\n    }\n\n    function selectNoLocations() {\n        _.forEach(vm.locations, function(location) {\n            location.isVisible = false;\n        });\n        locationsGrid.invalidate();\n        locationsCollection.refresh();\n    }\n\n    function setAllTabSelectionsToFalse() {\n        var keys = Object.keys(vm.tabSelection);\n        _.forEach(keys, function(key) {\n            vm.tabSelection[key] = false;\n        });\n    }\n\n    function insertStocksDataIntoGrid(stocks) {\n        _.forEach(stocks, function(stock) {\n            var foundRow = _.find(rowData, function(row) {\n                return row.id === stock.articleVariant.id;\n            });\n\n            if (foundRow !== undefined) {\n                foundRow[stock.location.id] = stock.quantity;\n                foundRow[stock.location.id + \"Difference\"] = 0;\n            }\n\n        });\n\n        var eshops = [];\n        _.forEach(vm.visibleLocations, function(location) {\n            if (_.toLower(location.locationType.locationSystemType) === \"eshop\") {\n                eshops.push(location);\n            }\n        });\n\n        // Keep only the rows that actually has stock values.\n        var rowDataCopy = angular.copy(rowData);\n        rowData.length = 0;\n        _.forEach(rowDataCopy, function(row) {\n            var rowHasValues = false;\n            _.forEach(vm.visibleLocations, function(location) {\n                var currentEshop = _.find(eshops, function(eshop) { return location.id === eshop.id; });\n                if (row[location.id] !== undefined && currentEshop !== undefined) {\n                    rowHasValues = true;\n                }\n            });\n\n            if (rowHasValues) {\n                rowData.push(row);\n            }\n        });\n\n        rowCollection.refresh();\n        articlesGrid.invalidate();\n    }\n\n    function setVisibleLocations() {\n        vm.visibleLocations = _.filter(vm.locations, function(location) {\n            return location.isVisible;\n        });\n    }\n\n    function zeroAllGridValues() {\n        _.forEach(rowData, function(row) {\n            _.forEach(vm.visibleLocations, function(location) {\n                var stock = _.find(stocksData, function(stock) {\n                    return stock.articleVariant.id === row.id && stock.location.id === location.id;\n                });\n                if (stock !== undefined) {\n                    row[location.id] = 0;\n                } else {\n                    row[location.id] = undefined;\n                }\n                row[location.id + \"Difference\"] = undefined;\n                row.isOk = false;\n            });\n        });\n    }\n\n    function validateGridRow(grid) {\n        var rowNumber = grid.selection.row;\n        var correspondingRowData = grid.rows[rowNumber].dataItem;\n\n        var transferQuantityValues = [];\n        _.forEach(vm.visibleLocations, function(location) {\n            var transferQuantityValue = correspondingRowData[location.id + 'Difference'];\n            if (transferQuantityValue === undefined) {\n                transferQuantityValue = 0;\n            } else if (transferQuantityValue !== undefined && !_.isNumber(transferQuantityValue)) {\n                transferQuantityValue = parseInt(transferQuantityValue);\n            }\n\n            transferQuantityValues.push(transferQuantityValue);\n        });\n\n        var transferQuantitySum = _.sum(transferQuantityValues);\n        var fromLocationCount = 0;\n        _.forEach(transferQuantityValues, function(num) {\n            if (num < 0) {\n                fromLocationCount += 1;\n            }\n        });\n\n        if (transferQuantitySum !== 0 || fromLocationCount > 1) {\n            correspondingRowData.isOk = false;\n        }\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function preventChangingOfIsOkValue(grid, e) {\n        var rowNumber = grid.selection.row;\n        var colNumber = grid.selection.col;\n        var correspondingRowData = grid.rows[rowNumber].dataItem;\n\n        var transferQuantityValues = [];\n        _.forEach(vm.visibleLocations, function(location) {\n            var transferQuantityValue = correspondingRowData[location.id + 'Difference'];\n            if (transferQuantityValue === undefined) {\n                transferQuantityValue = 0;\n            } else if (transferQuantityValue !== undefined && !_.isNumber(transferQuantityValue)) {\n                transferQuantityValue = parseInt(transferQuantityValue);\n            }\n\n            transferQuantityValues.push(transferQuantityValue);\n        });\n\n        var transferQuantitySum = _.sum(transferQuantityValues);\n        var fromLocationCount = 0;\n        _.forEach(transferQuantityValues, function(num) {\n            if (num < 0) {\n                fromLocationCount += 1;\n            }\n        });\n\n        var selectedColumnBinding = grid.columns[colNumber].binding;\n\n        if (selectedColumnBinding === 'isOk' && (transferQuantitySum !== 0 || fromLocationCount > 1)) {\n            correspondingRowData.isOk = false;\n            e.cancel = true;\n        } else if (selectedColumnBinding !== 'isOk' && (transferQuantitySum !== 0 || fromLocationCount > 1)) {\n            correspondingRowData.isOk = false;\n        }\n\n        articlesGrid.invalidate();\n        rowCollection.refresh();\n    }\n\n    function applyScope() {\n        if (!$scope.$$phase) {\n            $scope.$apply();\n        }\n    }\n\n    function showWarningToaster(message) {\n        var title = $translate.instant('common.warning');\n        ToasterService.showWarning(message, title);\n    }\n}\n\n\nangular\n    .module('stocklogistics.eshopreplenishment', [])\n    .config(stateConfig)\n    .controller('EshopReplenishmentController', EshopReplenishmentController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stocklogistics.masshandlingorderingpoints', {\n        url: '/masshandling',\n        templateUrl: 'main/stocklogistics/masshandlingorderingpoints/masshandlingorderingpoints.tpl.html',\n        controller: 'MassHandlingOrderingPointsController as vm',\n\n        resolve: {\n            locations: locationsResolver,\n            mainGroups: mainGroupsResolver,\n            brands: brandsResolver,\n            collections: collectionsResolver\n        }\n    });\n}\n// @ngInject\nfunction locationsResolver(StockLogisticsApiService) {\n    return StockLogisticsApiService.getLocations();\n}\n// @ngInject\nfunction mainGroupsResolver(MaingroupsApiService) {\n    return MaingroupsApiService.getMainGroups();\n}\n// @ngInject\nfunction brandsResolver(BrandsApiService) {\n    return BrandsApiService.getBrands();\n}\n// @ngInject\nfunction collectionsResolver(ProductsApiService) {\n    return ProductsApiService.getArticleCollections();\n}\n\n// @ngInject\nfunction MassHandlingOrderingPointsController($state, $scope, $translate, ToasterService, locations, mainGroups, brands, collections\n    ,StockLogisticsApiService, MaingroupsApiService, BrandsApiService, ProductsApiService, loadSpinnerService) {\n    var vm = this;\n\n    vm.stepHandler = {\n        currentStep: 0,\n        steps : ['Generic Selection', 'Specific Selection', 'Confirm Selection']\n    }\n\n    vm.locations = locations;\n    vm.mainGroups = mainGroups;\n    vm.brands = brands;\n    vm.collections = collections;\n    vm.locations.sort((a,b) => (a.locationType.id > b.locationType.id) ? 1: ((b.locationType.id > a.locationType.id) ? -1 : 0));\n    vm.mainGroups.sort((a,b) => (a.mainGroupDescription > b.mainGroupDescription) ? 1: ((b.mainGroupDescription > a.mainGroupDescription) ? -1 : 0));\n    vm.brands.sort((a,b) => (a.brandDescription > b.brandDescription) ? 1: ((b.brandDescription > a.brandDescription) ? -1 : 0));\n    vm.collections.sort((a,b) => (a.collectionCode > b.collectionCode) ? 1: ((b.collectionCode > a.collectionCode) ? -1 : 0));\n\n    vm.locationFilter = \"\";\n    vm.mainGroupFilter = \"\";\n    vm.brandFilter = \"\";\n    vm.collectionFilter = \"\";\n    vm.filterIsCurrent = false;\n\n    vm.filteredLocations = [];\n    vm.filteredMainGroups = [];\n    vm.filteredBrands = [];\n    vm.filteredCollections = [];\n\n    vm.filterChanged = filterChanged;\n    vm.goToNextStep = goToNextStep;\n    vm.goToPreviousStep = goToPreviousStep;\n    vm.validSelection = validSelection;\n    vm.selectFilterSelection = selectFilterSelection;\n    vm.deselectSelection = deselectSelection;\n\n    activate();\n\n    function addStartProperties (){\n        _.forEach(vm.locations, function(location){\n            location.selected = false;\n        });\n        _.forEach(vm.mainGroups, function(maingroup){\n            maingroup.selected = false;\n        });\n        _.forEach(vm.brands, function(brand){\n            brand.selected = false;\n        });\n        _.forEach(vm.collections, function(collection){\n            collection.selected = false;\n        });\n\n        vm.filteredLocations = angular.copy(vm.locations);\n        vm.filteredMainGroups = angular.copy(vm.mainGroups);\n        vm.filteredBrands = angular.copy(vm.brands);\n        vm.filteredCollections = angular.copy(vm.collections);\n\n        filterChanged('location');\n        filterChanged('mainGroup');\n        filterChanged('brand');\n        filterChanged('collection');\n    }\n\n    function activate() {\n        console.log(vm.locations);\n        console.log(vm.mainGroups);\n        console.log(vm.brands);\n        console.log(vm.collections);\n        addStartProperties();\n    }\n\n    function filterChanged(type) {\n        if(type === \"location\"){\n            vm.filteredLocations = vm.locations.filter(function (location) { \n                if(location.selected) \n                    return true;\n                else\n                    return location.locationName.toLowerCase().includes(vm.locationFilter.toLowerCase())\n            });      \n        } else if(type === \"mainGroup\"){\n            vm.filteredMainGroups = vm.mainGroups.filter(function (maingroup) { \n                if(maingroup.selected)     \n                    return true;\n                else\n                    return maingroup.mainGroupDescription.toLowerCase().includes(vm.mainGroupFilter.toLowerCase())\n            });\n        } else if(type === \"brand\"){\n            vm.filteredBrands = vm.brands.filter(function (brand) { \n                if(brand.selected)\n                    return true;\n                else\n                    return brand.brandDescription.toLowerCase().includes(vm.brandFilter.toLowerCase())\n            });\n        } else if(type === \"collection\"){\n            vm.filteredCollections = vm.collections.filter(function (collection) { \n                if(collection.selected) \n                    return true;\n                else\n                    return collection.collectionCode.toString().toLowerCase().includes(vm.collectionFilter.toLowerCase())\n            });\n        }   \n    }\n\n    function deselectSelection(type){\n        if(type === \"location\"){\n            for(let i = 0; i < vm.filteredLocations.length; i++){\n                vm.filteredLocations[i].selected = false;\n                vm.locationFilter = \"\"\n            }\n        } else if(type === \"mainGroup\"){\n            for(let i = 0; i < vm.filteredMainGroups.length; i++){\n                vm.filteredMainGroups[i].selected = false;\n                vm.mainGroupFilter = \"\"\n            }\n        } else if(type === \"brand\"){\n            for(let i = 0; i < vm.filteredBrands.length; i++){\n                vm.filteredBrands[i].selected = false;\n                vm.brandFilter = \"\"\n            }\n        } else if(type === \"collection\"){\n            for(let i = 0; i < vm.filteredCollections.length; i++){\n                vm.filteredCollections[i].selected = false;\n                vm.collectionFilter = \"\"\n            }\n        }   \n\n        filterChanged(type);\n    }\n\n    function selectFilterSelection(type){\n        if(type === \"location\"){\n            for(let i = 0; i < vm.filteredLocations.length; i++){\n                vm.filteredLocations[i].selected = true;\n                vm.locationFilter = \"\"\n            }\n        } else if(type === \"mainGroup\"){\n            for(let i = 0; i < vm.filteredMainGroups.length; i++){\n                vm.filteredMainGroups[i].selected = true;\n                vm.mainGroupFilter = \"\"\n            }\n        } else if(type === \"brand\"){\n            for(let i = 0; i < vm.filteredBrands.length; i++){\n                vm.filteredBrands[i].selected = true;\n                vm.brandFilter = \"\"\n            }\n        } else if(type === \"collection\"){\n            for(let i = 0; i < vm.filteredCollections.length; i++){\n                vm.filteredCollections[i].selected = true;\n                vm.collectionFilter = \"\"\n            }\n        }   \n\n        filterChanged(type);\n    }\n\n    function goToNextStep(){\n        vm.stepHandler.currentStep++;\n    }\n    function goToPreviousStep(){\n        vm.stepHandler.currentStep--;\n    }\n\n    function validSelection(){\n        if(vm.filteredLocations.filter(function (obj)   {return obj.selected}).length === 0 || \n            vm.filteredMainGroups.filter(function (obj) {return obj.selected}).length === 0 || \n            vm.filteredBrands.filter(function (obj)     {return obj.selected}).length === 0 || \n            vm.filteredCollections.filter(function (obj){return obj.selected}).length === 0)\n            return false\n        else        \n            return true;\n    }\n}\n\nangular\n    .module('stocklogistics.masshandlingorderingpoints', [])\n    .config(stateConfig)\n    .controller('MassHandlingOrderingPointsController', MassHandlingOrderingPointsController);","// @ngInject\nfunction AutoMonthMultiplierDialogService($uibModal, ProductsApiService) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(articleId) {\n\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: true,\n            controller: 'AutoMonthMultiplierDialogController as vm',\n            templateUrl: 'main/stocklogistics/orderingpoints/autoMonthMultiplierDialog.tpl.html',\n            size: 'lg'\n        };\n\n\n        modalDefaults.resolve = {\n            articleId: function () {\n                return articleId;\n            },\n            autoMonthMultipliers: function () {\n                return ProductsApiService.ReadMultipliersToEdit(articleId);\n            }, \n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction AutoMonthMultiplierDialogController($uibModalInstance, $rootScope, articleId, autoMonthMultipliers, ProductsApiService, loadSpinnerService, confirmationDialogService, ToasterService, $translate) {\n    var vm = this;\n\n    vm.selectedAutoMonthMultiplier = filterSelectedMultiplier(autoMonthMultipliers);\n    vm.autoMonthMultipliers = angular.copy(autoMonthMultipliers);\n    vm.closeModal = closeModal;\n    vm.deleteSelected = deleteSelected;\n    vm.createNewToggle = createNewToggle;\n    vm.create = create;\n    vm.saveOnChange = saveOnChange;\n    vm.ongoingRequest = false;\n    vm.createMode = false;\n    vm.enableChangesSavedNotification = false;\n    vm.fields = translateMonth();\n\n    vm.allMonthsMultiplier = 1;\n    \n    vm.handleConvertValue = handleConvertValue;\n    vm.handleConvertValueAllMonths = handleConvertValueAllMonths;\n    vm.updateOnAllMonths = updateOnAllMonths;\n\n    function translateMonth(){\n        var months = $translate.instant('common.months.short').toUpperCase().split(',');\n        if (months.length < 12) {\n            months = ['JAN', 'FEB', 'MAR', 'APR', 'MAJ', 'JUN', 'JUL', 'AUG', 'SEP', 'OKT', 'NOV', 'DEC'];\n        }\n        var fullMonthNames = [\n            \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n            \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n        ];\n        return months.map(function(monthAbbreviation, index) {\n            return { abbreviation: monthAbbreviation, full: fullMonthNames[index] };\n        });\n    }\n\n    function createNewToggle(){\n        vm.createMode = true;\n        vm.selectedAutoMonthMultiplier = {\n            name: \"\",\n            january: 0,\n            february: 0,\n            march: 0,\n            april: 0,\n            may: 0,\n            june: 0,\n            july: 0,\n            august: 0,\n            september: 0,\n            october: 0,\n            november: 0,\n            december: 0,\n        };\n\n        document.getElementById(\"nameInput\").focus();\n    }\n\n    function create(){\n        vm.ongoingRequest = true\n        loadSpinnerService.start('mainSpinner');\n        ProductsApiService.createMonthMultiplier(vm.selectedAutoMonthMultiplier).then(function() {\n            resetAutoMonthMultipliers();\n            ToasterService.showSuccess($translate.instant('common.created'), $translate.instant('article.autoOrderCurve'));\n            vm.createMode = false;\n        }, function(error) {\n            var message = error.message + '\\n';\n            _.forEach(error.errors, function(err) {\n                message += err.message + '\\n';\n            });\n            ToasterService.showError(message, $translate.instant('common.error'));\n            loadSpinnerService.stop('mainSpinner');\n            vm.ongoingRequest = false\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n            vm.ongoingRequest = false\n        });\n    }\n\n    function resetAutoMonthMultipliers(){\n        ProductsApiService.ReadMultipliersToEdit(articleId).then(function(response) {\n            vm.autoMonthMultipliers = sortAutoMonthMultipliers(angular.copy(response), vm.selectedAutoMonthMultiplier);\n            vm.selectedAutoMonthMultiplier = vm.autoMonthMultipliers.find(x => x.name === vm.selectedAutoMonthMultiplier.name);\n        }, function(error){\n            console.log(error)\n        })\n    }\n\n    function filterSelectedMultiplier(autoMonthMultipliers) {\n        if (autoMonthMultipliers && autoMonthMultipliers.length > 0) {\n            return autoMonthMultipliers.find(x => x.isArticlesMultiplier);\n        } else {\n            return null;\n        }\n    }\n\n    function deleteSelected(){\n        var affectedArticleNames = vm.selectedAutoMonthMultiplier.articleNamesWithMultiplier.join('<br>');\n        var confirmationMessage = $translate.instant(\"article.confirmDeleteCurve\") + '<br/>';\n\n        if (affectedArticleNames) {\n            confirmationMessage += '<strong>' + $translate.instant(\"article.affectedArticles\") + '</strong><br>' + affectedArticleNames;\n        }\n\n        confirmationDialogService.showDialog('<div>' + confirmationMessage + '</div>').then(function (result) {\n            if (result === true) {\n                vm.ongoingRequest = true;\n                loadSpinnerService.start(\"mainSpinner\");\n                ProductsApiService.deleteMonthMultiplier(vm.selectedAutoMonthMultiplier.id).then(function() {\n                    ToasterService.showSuccess($translate.instant('common.wasDeleted'), $translate.instant('article.autoOrderCurve'));\n                    $uibModalInstance.close(vm.selectedAutoMonthMultiplier);\n                    $rootScope.$emit('multiplierModalClosed', vm.selectedAutoMonthMultiplier);\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, $translate.instant('common.error'));\n                    vm.ongoingRequest = false\n                    loadSpinnerService.stop(\"mainSpinner\");\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                    vm.ongoingRequest = false;\n                });\n            }\n        });\n    }\n\n    function closeModal() {\n        if(vm.createMode) {\n            $uibModalInstance.close(vm.selectedAutoMonthMultiplier);\n            return;\n        }\n\n        ProductsApiService.changeMultiplierOnArticle(articleId, vm.selectedAutoMonthMultiplier).then(function() {\n            ToasterService.showSuccess($translate.instant('common.wasSaved'), $translate.instant('article.autoOrderCurve'));\n        }, function(error) {\n            var message = error.message + '\\n';\n            _.forEach(error.errors, function(err) {\n                message += err.message + '\\n';\n            });\n            ToasterService.showError(message, $translate.instant('common.error'));\n            vm.ongoingRequest = false\n            loadSpinnerService.stop(\"mainSpinner\");\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n            vm.ongoingRequest = false;\n            $uibModalInstance.close(vm.selectedAutoMonthMultiplier);\n            $rootScope.$emit('multiplierModalClosed', vm.selectedAutoMonthMultiplier);\n        });\n    }\n\n    function updateNameProp() {\n        const updatedMultiplierIndex = vm.autoMonthMultipliers.findIndex(multiplier => multiplier.id === vm.selectedAutoMonthMultiplier.id);\n        if (updatedMultiplierIndex !== -1) {\n            const updatedMultiplier = angular.copy(vm.autoMonthMultipliers[updatedMultiplierIndex]);\n            updatedMultiplier.name = vm.selectedAutoMonthMultiplier.name;\n            vm.autoMonthMultipliers[updatedMultiplierIndex] = updatedMultiplier;\n        }\n    }\n\n    function sortAutoMonthMultipliers(autoMonthMultipliers, selectedMultiplier) {\n        if (selectedMultiplier !== null) {\n            return autoMonthMultipliers.slice().sort(function(a, b) {\n                if (a.name === selectedMultiplier.name) {\n                    return -1;\n                } else if (b.name === selectedMultiplier.name) {\n                    return 1;\n                }\n                return 0;\n            });\n        } else {\n            return autoMonthMultipliers.slice(); \n        }\n    }\n\n    function handleConvertValue(fieldName) {\n        if(angular.isString(vm.selectedAutoMonthMultiplier[fieldName])){\n            vm.selectedAutoMonthMultiplier[fieldName] = parseFloat(vm.selectedAutoMonthMultiplier[fieldName]);\n        }\n    }\n    function handleNegativeValue(fieldName){\n        if(vm.selectedAutoMonthMultiplier[fieldName] < 0){\n            vm.selectedAutoMonthMultiplier[fieldName] = 0\n        }\n    }\n    function handelUndefinedValue(fieldName){\n        if(!vm.selectedAutoMonthMultiplier[fieldName]){\n            vm.selectedAutoMonthMultiplier[fieldName] = 0;\n        }\n    }\n\n    function handleConvertValueAllMonths(){\n        if(angular.isString(vm.allMonthsMultiplier)){\n            vm.allMonthsMultiplier = parseFloat(vm.allMonthsMultiplier);\n        }\n    }\n\n    function updateOnAllMonths(){\n\n        var confirmationMessage =   '<h4>' + $translate.instant('article.confirmUpdateEntireCurve') + '</h4>' +\n                                    '<div><b>' + vm.allMonthsMultiplier.toString().replace('.', ',') + ' </b>' + $translate.instant('article.willBeSetOnAllMonths') + '.</div>'\n                                    \n        confirmationDialogService.showDialog(confirmationMessage).then(function (result) {\n            if (result === true) {\n                _.forEach(vm.fields, function(field){\n                    vm.selectedAutoMonthMultiplier[field.full.toLowerCase()] = vm.allMonthsMultiplier; \n                })\n                \n        \n                saveOnChange();\n            }\n\n            vm.allMonthsMultiplier = 1;\n        });\n    }\n\n    function saveOnChange() {\n        _.forEach(vm.fields, function(field){\n            handleConvertValue(field.full.toLowerCase());\n            handelUndefinedValue(field.full.toLowerCase());\n            handleNegativeValue(field.full.toLowerCase());\n        })\n\n        if(vm.createMode || !vm.selectedAutoMonthMultiplier.name) return\n        updateNameProp();\n        vm.enableChangesSavedNotification = true;\n        vm.ongoingRequest = true\n\n        ProductsApiService.updateMonthMultiplier(vm.selectedAutoMonthMultiplier).then(function() {\n            resetAutoMonthMultipliers();\n            vm.allMonthsMultiplier = 1;\n        }, function(error) {\n            console.log(error);\n            var message = error.message + '\\n';\n            _.forEach(error.errors, function(err) {\n                message += err.message + '\\n';\n            });\n            ToasterService.showError(message, $translate.instant('common.error'));\n            vm.ongoingRequest = false\n        }).finally(function() {\n            vm.ongoingRequest = false\n        });\n    }\n}\n\nangular\n    .module('stocklogistics.orderingpoints.autoMonthMultiplierDialog', [])\n    .service('AutoMonthMultiplierDialogService', AutoMonthMultiplierDialogService)\n    .controller('AutoMonthMultiplierDialogController', AutoMonthMultiplierDialogController);","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stock.orderingpointssearch.orderingpoints', {\n        url: \"/{articleId}\",\n        views: {\n            \"articleView@stock\": {\n                templateUrl: 'main/stocklogistics/orderingpoints/orderingpoints.tpl.html',\n                controller: 'OrderingPointsController as vm'\n            }\n        },\n\n        resolve: {\n            article: articleResolver,\n            locations: locationsResolver,\n            autoMonthMultipliers: multiplierResolver,\n        }\n    });\n}\n\n// @ngInject\nfunction articleResolver($stateParams, StockLogisticsApiService) {\n    return StockLogisticsApiService.getProduct($stateParams.articleId);\n}\n\n// @ngInject\nfunction locationsResolver(StockLogisticsApiService) {\n    return StockLogisticsApiService.getLocations();\n}\n\n\n// @ngInject\nfunction multiplierResolver($stateParams, ProductsApiService) {\n    return ProductsApiService.getMultipliers($stateParams.articleId);\n}\n\n// @ngInject\nfunction OrderingPointsController($state, $rootScope, $translate, ToasterService, article, locations,ProductsApiService, StockLogisticsApiService, loadSpinnerService, ArticleLabelsPrintDialogService, AutoMonthMultiplierDialogService, autoMonthMultipliers) {\n    var vm = this;\n\n    var locationBasedRowData = [];\n    var locationBasedRowCollection = new wijmo.collections.CollectionView(locationBasedRowData);\n    var orderPointsGrid = {};\n    var currentEditProperty = 'orderingPointMax';\n    vm.selectedArticle = article;\n    vm.autoMonthMultipliers = initializeAutoMonthMultipliers(autoMonthMultipliers);\n    vm.selectedMultiplier = filterSelectedMultiplier(autoMonthMultipliers);\n    vm.stockLogistics = [];\n    vm.locations = formatLocationNames(locations);\n    vm.selectableFromLocations = [];\n    vm.selectedLocation = {};\n    vm.selectedFromLocation = {};\n\n    vm.captureVariantsGrid = captureVariantsGrid;\n    vm.transferMaxGridDataToStockLogistics = transferMaxGridDataToStockLogistics;\n    vm.selectedLocationChanged = selectedLocationChanged;\n    vm.saveStockLogistics = saveStockLogistics;\n\n    vm.switchToOrderingPointMax = switchToOrderingPointMax;\n    vm.switchToOrderingPointMin = switchToOrderingPointMin;\n    vm.switchToPackSize = switchToPackSize;\n    vm.generateAutoOrdersForAllStockLogistics = generateAutoOrdersForAllStockLogistics;\n    \n    vm.openLabelsModal = openLabelsModal;\n    vm.openMultiplierModal = openMultiplierModal;\n\n    vm.tabSelection = {\n        maxPoint: true,\n        minPoint: false,\n        packSize: false\n    };\n\n    vm.isPriority = false;\n\n    vm.weekdaychoices = {\n        monday: false,\n        tuesday: false,\n        wednesday: false,\n        thursday: false,\n        friday: false,\n        saturday: false,\n        sunday: false\n    };\n\n    vm.printDebug = printDebug;\n    vm.productStateGo = productStateGo;\n\n    activate();\n\n    function formatLocationNames(locations) {\n        return locations.map(function(location) {\n            var formattedLocation = angular.copy(location);\n            formattedLocation.locationName = formattedLocation.shouldGenerateAutoOrders ? formattedLocation.locationName + ' (' + $translate.instant('common.active') + ')' : formattedLocation.locationName + ' (' + $translate.instant('common.inActive') + ')';\n            return formattedLocation;\n        });\n    }\n\n    $rootScope.$on('multiplierModalClosed', function(event, selectedItem) {\n        ProductsApiService.getMultipliers(vm.selectedArticle.id).then(function(response) {\n            vm.autoMonthMultipliers = angular.copy(response);\n            vm.selectedMultiplier = filterSelectedMultiplier(response);\n        });\n    });\n\n    function activate() {\n        StockLogisticsApiService.getByArticle(vm.selectedArticle.id).then(function (response) {\n            vm.stockLogistics = response.data;\n            updateOrderPointsGridData();\n            populateSelectableFromLocations();\n        }, function(error) {\n            console.log(error);\n        });\n\n        populateSelectableFromLocations();\n    }\n\n    function filterSelectedMultiplier(autoMonthMultipliers) {\n        if (autoMonthMultipliers && autoMonthMultipliers.length > 0) {\n            return autoMonthMultipliers.find(x => x.isArticlesMultiplier);\n        } else {\n            return null;\n        }\n    }\n\n    function initializeAutoMonthMultipliers(sourceArray) {\n        const copiedArray = angular.copy(sourceArray);\n        return copiedArray || [];\n    }\n    \n    \n\n    function openLabelsModal() {\n        ArticleLabelsPrintDialogService.showDialog(vm.selectedArticle.id);\n    }\n\n    function openMultiplierModal() {\n        AutoMonthMultiplierDialogService.showDialog(vm.selectedArticle.id);\n    }\n    \n    function captureVariantsGrid(sender) {\n        orderPointsGrid = sender;\n        orderPointsGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Cell,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.Columns,\n            headersVisibility: wijmo.grid.HeadersVisibility.Column,\n            isReadOnly: false,\n            itemsSource: locationBasedRowCollection\n        });\n        updateOrderPointsGridData();\n    }\n\n    function updateOrderPointsGridData() {\n        if (orderPointsGrid.columns === undefined) {\n            return;\n        }\n\n        var variantDetail1s = [];\n        var variantDetail2s = [];\n        var stockLogisticsForCurrentLocation = [];\n\n        _.each(vm.selectedArticle.articleVariants, function(articleVariant) {\n            variantDetail1s.push(articleVariant.variantDetail1);\n            variantDetail2s.push(articleVariant.variantDetail2);\n        });\n\n        variantDetail1s =  _.uniqBy(variantDetail1s, function(detail) {\n            return detail.id; // Compare by ID\n        });\n        variantDetail2s = _.uniqBy(variantDetail2s, function(detail) {\n            return detail.id; // Compare by ID\n        });\n\n        variantDetail1s = _.sortBy(variantDetail1s, function(detail) { return detail.variantDetailName; });\n        variantDetail2s = _.sortBy(variantDetail2s, function(detail) { return detail.sortOrder; });\n\n        orderPointsGrid.columns.clear();\n        orderPointsGrid.columns.defaultSize = 50;\n        orderPointsGrid.frozenColumns = 1;\n\n        // Add first row header column\n        var rowHeader = new wijmo.grid.Column();\n        rowHeader.binding = \"variantDetails1Name\";\n        rowHeader.header = \" \";\n        rowHeader.allowSorting = false;\n        rowHeader.width = \"*\";\n        rowHeader.minWidth = 120;\n        rowHeader.isReadOnly = true;\n        orderPointsGrid.columns.push(rowHeader);\n\n        _.each(variantDetail2s, function(varDetail2) {\n            var column = new wijmo.grid.Column();\n            column.binding = varDetail2.variantDetailName;\n            column.header = varDetail2.variantDetailName;\n            column.align = \"right\";\n            column.width = \"*\";\n            column.minWidth = 60;\n            orderPointsGrid.columns.push(column);\n        });\n\n        stockLogisticsForCurrentLocation = _.filter(vm.stockLogistics, function(stockLogistic) {\n            return vm.selectedLocation.id === stockLogistic.location.id;\n        });\n\n        if (stockLogisticsForCurrentLocation.length > 0) {\n            if (stockLogisticsForCurrentLocation[0].isPriority === undefined) {\n                vm.isPriority = false;\n            } else {\n                vm.isPriority = stockLogisticsForCurrentLocation[0].isPriority;\n            }\n        }\n\n        orderPointsGrid.autoSizeColumn(0);\n\n        setCurrentWeekdayChoices(stockLogisticsForCurrentLocation);\n\n        loadVariantsGridData(stockLogisticsForCurrentLocation);\n    }\n\n    function loadVariantsGridData(currentLocationStockLogistics) {\n        var variantRows = _.groupBy(vm.selectedArticle.articleVariants, function(variant) {\n            return variant.variantDetail1.id;\n        });\n\n        locationBasedRowData = [];\n        locationBasedRowCollection = new wijmo.collections.CollectionView(locationBasedRowData);\n\n        orderPointsGrid.itemsSource = locationBasedRowCollection;\n        orderPointsGrid.collectionView.refresh();\n\n        _.each(variantRows, function(variantRowValues) {\n            var r = {};\n            _.each(variantRowValues, function(variantRowValue) {\n                var relatedStockLogistic = _.find(currentLocationStockLogistics, function(stock) { return stock.articleVariant.id === variantRowValue.id; });\n                r.variantDetails1Name = variantRowValue.variantDetail1.variantDetailName;\n                if (relatedStockLogistic !== undefined) {\n                    r[variantRowValue.variantDetail2.variantDetailName] = relatedStockLogistic[currentEditProperty];\n                } else {\n                    r[variantRowValue.variantDetail2.variantDetailName] = 0;\n                }\n            });\n            locationBasedRowData.push(r);\n        });\n        locationBasedRowCollection.refresh();\n    }\n\n    function transferMaxGridDataToStockLogistics() {\n        var stockLogisticsForCurrentLocation = _.filter(vm.stockLogistics, function(stockLogistic) {\n            return vm.selectedLocation.id === stockLogistic.location.id;\n        });\n\n        _.forEach(locationBasedRowData, function(row) {\n            var keys = Object.keys(row);\n            _.forEach(keys, function(variant2Name) {\n                if (variant2Name !== 'variantDetails1Name') {\n                    var relatedStockLogistic = _.find(stockLogisticsForCurrentLocation, function(stockLogistic) {\n                        return stockLogistic.articleVariant.variantDetail1.variantDetailName === row['variantDetails1Name'] &&\n                            stockLogistic.articleVariant.variantDetail2.variantDetailName === variant2Name &&\n                            stockLogistic.location.id === vm.selectedLocation.id;\n                        }\n                    );\n\n                    if (relatedStockLogistic !== undefined) { // Update the fetched stock logistic.\n                        relatedStockLogistic[currentEditProperty] = row[variant2Name];\n                        relatedStockLogistic.isPriority = vm.isPriority;\n                        updateStockLogisiticsWeekdays(relatedStockLogistic, vm.weekdaychoices);\n                    } else { // Create a new stock logistic.\n                        var newStockLogistics = createNewStockLogistics(row['variantDetails1Name'], variant2Name);\n                        newStockLogistics[currentEditProperty] = row[variant2Name];\n                        updateStockLogisiticsWeekdays(newStockLogistics, vm.weekdaychoices);\n                        newStockLogistics.isPriority = vm.isPriority;\n                        vm.stockLogistics.push(newStockLogistics);\n                    }\n\n                }\n            });\n        });\n    }\n\n    function getGenerallWeekdayChoice(relatedStockLogistics){\n        var returnStockLogistic = {\n            monday : false,\n            tuesday : false,\n            wednesday : false,\n            thursday : false,\n            friday : false,\n            saturday : false,\n            sunday : false\n        };\n\n        _.forEach(relatedStockLogistics, function(stockLogistic){\n            if(stockLogistic.monday){\n                returnStockLogistic.monday = stockLogistic.monday;\n            }\n            if(stockLogistic.tuesday){\n                returnStockLogistic.tuesday = stockLogistic.tuesday;\n            }\n            if(stockLogistic.wednesday){\n                returnStockLogistic.wednesday = stockLogistic.wednesday;\n            }\n            if(stockLogistic.thursday){\n                returnStockLogistic.thursday = stockLogistic.thursday;\n            }\n            if(stockLogistic.friday){\n                returnStockLogistic.friday = stockLogistic.friday;\n            }\n            if(stockLogistic.saturday){\n                returnStockLogistic.saturday = stockLogistic.saturday;\n            }\n            if(stockLogistic.sunday){\n                returnStockLogistic.sunday = stockLogistic.sunday;\n            }\n        });\n\n\n        return returnStockLogistic;\n    }\n\n    function setCurrentWeekdayChoices(relatedStockLogistics) {\n        var stockLogistic = getGenerallWeekdayChoice(relatedStockLogistics)\n\n        if (stockLogistic) {\n            vm.weekdaychoices.monday = stockLogistic.monday;\n            vm.weekdaychoices.tuesday = stockLogistic.tuesday;\n            vm.weekdaychoices.wednesday = stockLogistic.wednesday;\n            vm.weekdaychoices.thursday = stockLogistic.thursday;\n            vm.weekdaychoices.friday = stockLogistic.friday;\n            vm.weekdaychoices.saturday = stockLogistic.saturday;\n            vm.weekdaychoices.sunday = stockLogistic.sunday;\n        } else {\n            vm.weekdaychoices.monday = false;\n            vm.weekdaychoices.tuesday = false;\n            vm.weekdaychoices.wednesday = false;\n            vm.weekdaychoices.thursday = false;\n            vm.weekdaychoices.friday = false;\n            vm.weekdaychoices.saturday = false;\n            vm.weekdaychoices.sunday = false;\n        }\n\n    }\n\n    function updateStockLogisiticsWeekdays(stockLogistic, weekdayChoices) {\n        stockLogistic.monday = weekdayChoices.monday;\n        stockLogistic.tuesday = weekdayChoices.tuesday;\n        stockLogistic.wednesday = weekdayChoices.wednesday;\n        stockLogistic.thursday = weekdayChoices.thursday;\n        stockLogistic.friday = weekdayChoices.friday;\n        stockLogistic.saturday = weekdayChoices.saturday;\n        stockLogistic.sunday = weekdayChoices.sunday;\n    }\n\n    function createNewStockLogistics(variantDetail1Name, variantDetail2Name) {\n        var newStockLogistic = {\n            id: 0,\n            location: {\n                id: vm.selectedLocation.id,\n                locationName: vm.selectedLocation.locationName,\n                locationNumber: vm.selectedLocation.locationNumber\n            },\n            orderingPointMax: 0,\n            orderingPointMin: 0,\n            packSize: 0,\n            monday: false,\n            tuesday: false,\n            wednesday: false,\n            thursday: false,\n            friday: false,\n            saturday: false,\n            sunday: false,\n            isPriority: false\n        };\n\n        newStockLogistic['articleVariant'] = _.find(vm.selectedArticle.articleVariants, function(articleVariant) {\n           return articleVariant.variantDetail1.variantDetailName === variantDetail1Name &&\n               articleVariant.variantDetail2.variantDetailName === variantDetail2Name;\n        });\n\n        return newStockLogistic;\n    }\n\n    function selectedLocationChanged(sender) {\n        if (!sender.selectedItem) {\n            return;\n        }\n\n        if (orderPointsGrid.columns !== undefined) {\n            transferMaxGridDataToStockLogistics();\n        }\n\n        copyFromLocationToStockLogistic();\n\n        vm.selectedLocation = sender.selectedItem;\n\n        populateSelectableFromLocations();\n\n        updateOrderPointsGridData();\n    }\n\n    function switchToOrderingPointMax() {\n        transferMaxGridDataToStockLogistics();\n        currentEditProperty = 'orderingPointMax';\n        updateOrderPointsGridData();\n\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.maxPoint = true;\n    }\n\n    function switchToOrderingPointMin() {\n        transferMaxGridDataToStockLogistics();\n        currentEditProperty = 'orderingPointMin';\n        updateOrderPointsGridData();\n\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.minPoint = true;\n    }\n\n    function switchToPackSize() {\n        transferMaxGridDataToStockLogistics();\n        currentEditProperty = 'packSize';\n        updateOrderPointsGridData();\n\n        setAllTabSelectionsToFalse();\n        vm.tabSelection.packSize = true;\n    }\n\n    function setAllTabSelectionsToFalse() {\n        var keys = Object.keys(vm.tabSelection);\n        _.forEach(keys, function(key) {\n            vm.tabSelection[key] = false;\n        });\n    }\n\n    function generateAutoOrdersForAllStockLogistics() {\n        loadSpinnerService.start('mainSpinner');\n        StockLogisticsApiService.generateAutoOrders().then(function(response) {\n            $state.go('order.ordersearch');\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function saveStockLogistics() {\n        transferMaxGridDataToStockLogistics();\n        copyFromLocationToStockLogistic();\n        loadSpinnerService.start('mainSpinner');\n        StockLogisticsApiService.saveStockLogistics({stockLogisticsDtos: vm.stockLogistics, autoMonthMultiplier: vm.selectedMultiplier}).then(function(response) {\n            vm.stockLogistics = response.data;\n            ToasterService.showSuccess($translate.instant('common.wasSaved'));\n        }, function(error) {\n            showWarningToaster(\"Error\");\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function populateSelectableFromLocations() {\n        vm.selectableFromLocations = [];\n        vm.selectableFromLocations.length = 0;\n        var supplierLabel = $translate.instant('order.company');\n        vm.selectableFromLocations.push({locationName: supplierLabel});\n        _.forEach(vm.locations, function(location) {\n            if (vm.selectedLocation.id !== location.id) {\n                vm.selectableFromLocations.push(location);\n            }\n        });\n        var currentStockLogistic = _.find(vm.stockLogistics, function(stockLogistic) {\n            return stockLogistic.location.id === vm.selectedLocation.id;\n        });\n\n        if (currentStockLogistic !== undefined && currentStockLogistic.fromLocation !== undefined) {\n            vm.selectedFromLocation = _.find(vm.selectableFromLocations, function(fromLocation) {\n                return fromLocation.id === currentStockLogistic.fromLocation.id;\n            });\n        } else {\n            vm.selectedFromLocation = vm.selectableFromLocations[0];\n        }\n    }\n\n    function copyFromLocationToStockLogistic() {\n        var currentStockLogistics = _.filter(vm.stockLogistics, function(stockLogistic) {\n            return stockLogistic.location.id === vm.selectedLocation.id;\n        });\n\n\n        _.forEach(currentStockLogistics, function(currentStockLogistic) {\n            if (!vm.selectedFromLocation.id) {\n                currentStockLogistic.fromLocation = {};\n            } else {\n                currentStockLogistic.fromLocation = vm.selectedFromLocation;\n            }\n        });\n    }\n\n    function showWarningToaster(message) {\n        var title = $translate.instant('common.warning');\n        ToasterService.showWarning(message, title);\n    }\n\n    function printDebug() {\n        console.log(\"vm.stockLogistics\");\n        console.log(vm.stockLogistics);\n        console.log(\"vm.selectedLocation\");\n        console.log(vm.selectedLocation);\n    }\n\n    function productStateGo(stringState) {\n        $state.go(stringState, \n            {\n                articleId: vm.selectedArticle.id,\n                filter: $state.params.filter,\n                currentPage:  $state.params.currentPage,\n                pageSize:  $state.params.pageSize,\n                inactive:  $state.params.inactive,\n                match:  $state.params.match\n            }\n        );\n    }\n}\n\n\nangular\n    .module('stocklogistics.orderingpoints', [])\n    .config(stateConfig)\n    .controller('OrderingPointsController', OrderingPointsController);\n","// @ngInject\nfunction StockLogisticsApiService($q, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'stocklogistics';\n\n    return {\n        getByArticle: getByArticle,\n        saveStockLogistics: saveStockLogistics,\n        generateAutoOrders: generateAutoOrders,\n        getByArticlesVariants: getByArticlesVariants,\n        getArticleCollections: ResourcesService.apiFactory.get(endpoint + '/articlecollections'),\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getProduct: ResourcesService.apiFactory.get(endpoint + '/products'),\n        getProductsForMassHandingOrderingPoints: getProductsForMassHandingOrderingPoints\n    };\n\n    function getByArticle(articleId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + '/stocklogistics/articles/' + articleId).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getByArticlesVariants(articleVariantIds) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + '/stocklogistics/articleVariants/', articleVariantIds).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function saveStockLogistics(stockLogistics) {\n        var deferred = $q.defer();\n\n        var jsonRequest = JSON.stringify(stockLogistics);\n\n        DSHttpAdapter.POST(DS.defaults.basePath + '/stocklogistics', jsonRequest).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function generateAutoOrders() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'stocklogistics/createautoorders').then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getProductsForMassHandingOrderingPoints(selectedLocations, selectedMaingroups, selectedBrands, selectedCollections, selectedIsCurrent){\n        var deferred = $q.defer();\n\n        var request = {\n            locationIds : [],\n            mainGroupIds : [],\n            brandIds : [],\n            collectionIds : [],\n            includeIsCurrent : selectedIsCurrent\n        }\n\n        _.forEach(selectedLocations, function(location){\n            request.locationIds.push(location.id);\n        });\n        _.forEach(selectedMaingroups, function(mainGroup){\n            request.mainGroupIds.push(mainGroup.id);\n        });\n        _.forEach(selectedBrands, function(brand){\n            request.brandIds.push(brand.id);\n        });\n        _.forEach(selectedCollections, function(collection){\n            request.collectionIds.push(collection.id);\n        });\n\n        DSHttpAdapter.POST(DS.defaults.basePath + '/stocklogistics/masshandlingorderingpoints/products', request).then(function(response){\n            deferred.resolve(response);\n        }, function(error){\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('stocklogistics.api', [])\n    .factory('StockLogisticsApiService', StockLogisticsApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('stocklogistics', {\n        url: '/stocklogistics',\n        parent: 'main',\n        abstract: true,\n        templateUrl: 'main/stocklogistics/stocklogistics.tpl.html',\n        controller: 'MainStockLogisticsController as vm'\n    });\n}\n\n// @ngInject\nfunction MainStockLogisticsController() {\n    var vm = this;\n}\n\nangular\n    .module('main.stocklogistics', ['stocklogistics.api','stocklogistics.articletransfer','stocklogistics.orderingpoints', 'stocklogistics.masshandlingorderingpoints' , 'stocklogistics.eshopreplenishment', 'stocklogistics.orderingpoints.autoMonthMultiplierDialog'])\n    .config(stateConfig)\n    .controller('MainStockLogisticsController', MainStockLogisticsController);\n","// @ngInject\nfunction SupportApiService(ResourcesService, DSHttpAdapter, $q, DS) {\n\n    var endpoint = 'support';\n\n    return {\n        changeItemGroup: ResourcesService.apiFactory.update(endpoint + '/changeitemgroup'),\n        changeBarcode: ResourcesService.apiFactory.update(endpoint + '/changebarcode'),\n        changeBarcodes: ResourcesService.apiFactory.update(endpoint + '/changebarcodes'),\n        createLocation: ResourcesService.apiFactory.create(endpoint + '/createlocation'),\n        deleteProduct: ResourcesService.apiFactory.delete(endpoint + '/deleteproduct'),\n        mergeProducts: ResourcesService.apiFactory.update(endpoint + '/mergeproducts'),\n        getItemGroupBriefs: ResourcesService.apiFactory.get(endpoint + '/itemgroups'),\n        getLocationTypes: ResourcesService.apiFactory.get(endpoint + '/locationtypes'),\n        getLocationCategories: ResourcesService.apiFactory.get(endpoint + '/locationcategories'),\n        getProductBriefs: ResourcesService.apiFactory.get(endpoint + '/products'),\n        getProduct: ResourcesService.apiFactory.get(endpoint + '/product'),\n        changeIsGroupSaleArticle: ResourcesService.apiFactory.update(endpoint + '/changeisgroupsalearticle'),\n        addVariantDetail: ResourcesService.apiFactory.create(endpoint + '/addvariantdetail'),\n        addVariantDetails: ResourcesService.apiFactory.create(endpoint + '/addvariantdetails'),\n        updateInventoryStatus: ResourcesService.apiFactory.update(endpoint + '/updateinventorystatus'),\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        createOriginalBalance: ResourcesService.apiFactory.create(endpoint + '/originalbalance'),\n        getMissingEasyPosReceipts: getMissingEasyPosReceipts,\n        triggerToChangeLog: triggerToChangeLog\n    };\n\n    function getMissingEasyPosReceipts(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/missingreceipts/easypos', request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function triggerToChangeLog(request, type) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/triggertochangelog/' + type, request).then(function (response) {\n            deferred.resolve(response);\n        }, function (error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('support.api', [])\n    .factory('SupportApiService', SupportApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support', {\n        url: '/support-975630f2-68b1-42ec-8302-2710af93a5e5',\n        parent: 'main',\n        abstract: true,\n        templateUrl: \"main/support/support.tpl.html\",\n        controller: \"SupportController as vm\"\n    });\n}\n\n// @ngInject\nfunction SupportController() {\n    var vm = this;\n}\n\nangular\n    .module('main.support', ['support.supportcases'])\n    .config(stateConfig)\n    .controller('SupportController', SupportController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.addvariantdetail', {\n        url:'/addvariantdetail',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/addvariantdetail/addvariantdetail.tpl.html',\n            controller: 'SupportCaseAddVariantDetailController as vm'\n        }},\n        resolve: {\n            variants: variantsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction variantsResolver(VariantsApiService) {\n    return VariantsApiService.getVariants();\n}\n\n// @ngInject\nfunction SupportCaseAddVariantDetailController($state, $scope, SupportApiService, variants, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.statisticName = 'UNKNOWN';\n    vm.variantsToAdd = 1;\n    vm.selectedVariant;\n    vm.variants = variants;\n    vm.fulltextInput = \"\";\n\n    vm.autoSortOrder = true;\n    vm.useListOfItems = false;\n    \n    vm.newVariantDetails = [];\n\n    vm.variantDetailTemplate = {\n        variantDetailName : '', \n        sortOrder : 0,\n        overrideAutoSort : false\n    }\n\n    updateListOfVariants();\n\n    //Methods\n    vm.saveChange = saveChange;\n    vm.cancelEditing = cancelEditing;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.updateListOfVariants = updateListOfVariants;\n    vm.doAutoSortOrder = doAutoSortOrder;\n    vm.convertToLines = convertToLines;\n\n    activate();\n\n    function activate() {\n        console.log(vm.variants);\n        $scope.$watch( vm.variantsToAdd , function() {\n            if(vm.variantsToAdd < 1)\n                vm.variantsToAdd = 1;\n            else if(vm.variantsToAdd > 50)\n                vm.variantsToAdd = 50;\n        });\n        //$scope.$watch(function() { return $state.params.variantId; }, function(newValue, oldValue) {\n        //    vm.selectedVariantId = parseInt($state.params.variantId, 10);\n        //});\n    }\n\n    function convertToLines() {\n        var splittedValues = vm.fulltextInput.split('\\n');\n\n        var newVariantDetails = [];\n\n        _.forEach(splittedValues, function(value){\n            value = value.trim();\n            var newDetail = angular.copy(vm.variantDetailTemplate);\n            newDetail.variantDetailName = value;\n            newVariantDetails.push(newDetail);\n        });\n\n        vm.newVariantDetails = newVariantDetails;\n        vm.variantsToAdd = vm.newVariantDetails.length;\n        updateListOfVariants();\n\n        vm.fulltextInput = \"\";\n        vm.useListOfItems = false;\n    }\n\n    function saveChange() {\n        confirmationDialogService.showDialog('<div>' + $translate.instant(\"support.confirmCreateData\") + '</div>').then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                var request = {\n                    statisticName : vm.statisticName, \n                    selectedVariantId : vm.selectedVariant.id,\n                    variantDetails : []\n                };\n\n                _.forEach(vm.newVariantDetails, function(variantDetail){\n                    request.variantDetails.push( \n                        {\n                            variantDetailName : variantDetail.variantDetailName,\n                            sortOrder : variantDetail.sortOrder\n                        });\n                });\n\n                SupportApiService.addVariantDetails(request).then(function(response) {\n                    console.log(response);\n                    if(response.length > 0){\n                        if(response.length !== request.variantDetails.length){\n                            ToasterService.showSuccess('Variantdetaljer upplagda', $translate.instant('support.supportCase'), 15000);\n                            var newArray = [];\n                            \n                            _.forEach(vm.newVariantDetails, function(variantDetail){\n                                _.forEach(response, function(resp){\n                                    if(variantDetail.variantDetailName === resp){\n                                        newArray.push(variantDetail);\n                                    }\n                                }); \n                            });\n\n                            vm.newVariantDetails = newArray;\n                        }\n                        \n                        var message = '';\n                        _.forEach(response, function(res){\n                            message += '\"' + res + '\", ' + \"\\n\";\n                        });\n                        message += 'finns redan!';\n                        ToasterService.showError(message, $translate.instant('common.error'), 15000);\n                    }\n                    else{\n                        cancelEditing();\n                        ToasterService.showSuccess('Variantdetaljer upplagda', $translate.instant('support.supportCase'), 15000);\n                    }\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    \n    function cancelEditing() {\n        vm.selectedVariant = undefined;\n        vm.statisticName = 'UNKNOWN';\n        vm.variantsToAdd = 1;\n        vm.newVariantDetails = [];\n        updateListOfVariants();\n    }\n\n    function isAllowedToSave() {\n        var returnValue = true;\n        \n        _.forEach(vm.newVariantDetails, function(variantDetail){\n            if(returnValue){\n                returnValue = variantDetail.variantDetailName.length > 0;\n            }\n        })\n\n        return returnValue && vm.statisticName.length > 0;\n    }\n\n    function updateListOfVariants(){\n        if(vm.variantsToAdd < 1)\n            vm.variantsToAdd = 1;\n        else if(vm.variantsToAdd > 50)\n                vm.variantsToAdd = 50;\n\n        while(vm.newVariantDetails.length > vm.variantsToAdd){\n            vm.newVariantDetails.splice(-1,1);\n        }\n        while(vm.newVariantDetails.length < vm.variantsToAdd){\n            vm.newVariantDetails.push(angular.copy(vm.variantDetailTemplate));\n        }\n\n        doAutoSortOrder();\n    }\n    \n    function doAutoSortOrder(){\n        if(vm.autoSortOrder){\n            _.forEach(vm.newVariantDetails, function(variantDetail){\n                if(!variantDetail.overrideAutoSort)\n                    variantDetail.sortOrder = asciiStringTranslate(variantDetail.variantDetailName);\n            });\n        }\n    }\n\n    function asciiStringTranslate(theString){\n        var cleanedString = theString.toLowerCase().replace(/[^a-zA-Z0-9]+/g, '');\n        var number = 0;\n\n\n        if(!isNaN(cleanedString)){\n            number = parseInt(cleanedString);\n        }\n        else{\n            for(let i = 0; i < cleanedString.length; i++){\n                if(isNaN(cleanedString.charAt(i)))\n                    number += cleanedString.charCodeAt(i);\n                else\n                    number += parseInt(cleanedString.charAt(i));\n            }\n\n            if(!isNaN(cleanedString.charAt(0))){\n                if(cleanedString.includes(\"s\"))\n                    number -= parseInt(cleanedString.charAt(0)) * 12;\n                if(cleanedString.includes(\"l\"))\n                    number += parseInt(cleanedString.charAt(0)) * 82;\n            }\n        \n            if(cleanedString.includes(\"s\"))\n                number += 5;\n            if(cleanedString.includes(\"m\"))\n                number += 50\n            if(cleanedString.includes(\"l\"))\n                number += 100\n            \n            if(cleanedString.includes(\"s\"))\n                number -= (cleanedString.match(/x/g) || []).length * 135;\n            \n            if(cleanedString.includes(\"l\"))\n                number += (cleanedString.match(/x/g) || []).length * 5;\n                \n        }\n\n        return number;\n    }\n}\n\nangular\n    .module('supportcases.addvariantdetail', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseAddVariantDetailController', SupportCaseAddVariantDetailController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.changebarcode', {\n        url:'/changebarcode',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/changebarcode/changebarcode.tpl.html',\n            controller: 'SupportCaseChangeBarcodeController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCaseChangeBarcodeController($state, $scope, SupportApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.isEditing = false;\n    vm.selectedProduct = {};\n    vm.selectedProductVariant = {};\n    vm.selectedProductCopy = {};\n    vm.selectedProductVariantCopy = {};\n    vm.newBarcode = '';\n\n    //Methods\n    vm.recieveProduct = recieveProduct;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.startEditing = startEditing;\n    vm.saveChange = saveChange;\n    vm.cancelEditing = cancelEditing;\n\n    activate();\n\n    function activate() {\n    }\n\n    function startEditing() {\n        vm.isEditing = true;\n    }\n    function saveChange() {\n        confirmationDialogService.showDialog('<div>' + $translate.instant(\"support.confirmUpdateData\") + '</div>').then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                SupportApiService.changeBarcode({ productVariantId: vm.selectedProductVariant.id, barcode: vm.newBarcode }).then(function(response) {\n                    cancelEditing();\n                    ToasterService.showSuccess($translate.instant('support.barcodeChanged'), $translate.instant('support.supportCase'));\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    function cancelEditing() {\n        vm.isEditing = false;\n        removeProduct();\n    }\n\n    function recieveProduct(product) {\n        vm.selectedProduct = product;\n        loadSpinnerService.start(\"mainSpinner\");\n        SupportApiService.getProduct(vm.selectedProduct.id).then(function(response) {\n            vm.selectedProduct = response;\n            vm.selectedProductCopy = angular.copy(response);\n            vm.selectedProductVariant = {};\n            vm.selectedProductVariantCopy = {};\n        }, function(error) {\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n    function removeProduct() {\n        //vm.selectedProduct = {};\n        vm.selectedProductVariant = {};\n        //vm.selectedProductCopy = {};\n        vm.selectedProductVariantCopy = {};\n        vm.newBarcode = '';\n        $scope.$broadcast('clearArticleEvent');\n    }\n\n    function isAllowedToSave() {\n        return vm.selectedProduct && vm.selectedProduct.id > 0 &&\n            vm.selectedProductVariant && vm.selectedProductVariant.id > 0;\n    }\n}\n\nangular\n    .module('supportcases.changebarcode', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseChangeBarcodeController', SupportCaseChangeBarcodeController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.changebarcodes', {\n        url:'/changebarcodes',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/changebarcodes/changebarcodes.tpl.html',\n            controller: 'SupportCaseChangeBarcodesController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCaseChangeBarcodesController($state, $scope, SupportApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.isEditing = false;\n    vm.selectedProduct = {};\n    vm.selectedProductVariant = {};\n    vm.selectedProductCopy = {};\n    vm.selectedProductVariantCopy = {};\n    vm.newBarcode = '';\n\n    //Methods\n    vm.recieveProduct = recieveProduct;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.startEditing = startEditing;\n    vm.saveChange = saveChange;\n    vm.cancelEditing = cancelEditing;\n    vm.addBarcodeToProductVariant = addBarcodeToProductVariant;\n\n    activate();\n\n    function activate() {\n    }\n\n    function addBarcodeToProductVariant(productVariant) {\n        productVariant.barcodes.push({\n            barcode: '',\n            id: -1\n        });\n    }\n\n    function startEditing() {\n        vm.isEditing = true;\n    }\n    function saveChange() {\n        confirmationDialogService.showDialog('<div>' + $translate.instant(\"support.confirmUpdateData\") + '</div>').then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n\n                var request = {\n                    articleId: vm.selectedProductCopy.id,\n                    articleVariants: []\n                };\n                _.forEach(vm.selectedProductCopy.productVariants, function(artVar) {\n                    var requestArtVar = {\n                        articleVariantId: artVar.id,\n                        currentBarcode: artVar.barcode,\n                        newBarcode: artVar.newBarcode.trim(),\n                        barcodes: []\n                    };\n                    request.articleVariants.push(requestArtVar);\n\n                    _.forEach(artVar.barcodes, function(o) {\n                        o.newBarcode = o.newBarcode.trim();\n                        if (o.newBarcode.length > 0) {\n                            requestArtVar.barcodes.push(\n                                {\n                                    articleVariantId: artVar.id,\n                                    id: o.id,\n                                    currentBarcode: o.barcode,\n                                    newBarcode: o.newBarcode\n                                }\n                            );\n                        }\n                    });\n                });\n\n                SupportApiService.changeBarcodes(request).then(function(response) {\n                    cancelEditing();\n                    ToasterService.showSuccess('Streckkoder uppdaterade', $translate.instant('support.supportCase'));\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    function cancelEditing() {\n        vm.isEditing = false;\n        removeProduct();\n    }\n\n    function recieveProduct(product) {\n        vm.selectedProduct = product;\n        loadSpinnerService.start(\"mainSpinner\");\n        SupportApiService.getProduct(vm.selectedProduct.id).then(function(response) {\n            vm.selectedProduct = response;\n            vm.selectedProductCopy = angular.copy(response);\n\n            _.forEach(vm.selectedProductCopy.productVariants, function(o) {\n                o.newBarcode = o.barcode;\n                _.forEach(o.barcodes, function(br) {\n                    br.newBarcode = br.barcode;\n                });\n            });\n\n            vm.selectedProductVariant = {};\n            vm.selectedProductVariantCopy = {};\n        }, function(error) {\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n    function removeProduct() {\n        vm.selectedProductCopy = {};\n        vm.newBarcode = '';\n        $scope.$broadcast('clearArticleEvent');\n    }\n\n    function isAllowedToSave() {\n        var hasChanged = false;\n        _.forEach(vm.selectedProductCopy.productVariants, function(o) {\n            if (o.newBarcode !== o.barcode) {\n                hasChanged = true;\n            }\n            _.forEach(o.barcodes, function(br) {\n                if (br.newBarcode !== br.barcode) {\n                    hasChanged = true;\n                }\n            });\n        });\n\n        return hasChanged;\n    }\n}\n\nangular\n    .module('supportcases.changebarcodes', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseChangeBarcodesController', SupportCaseChangeBarcodesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.changeisgroupsalearticle', {\n        url:'/changeisgroupsalearticle',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/changeisgroupsalearticle/changeisgroupsalearticle.tpl.html',\n            controller: 'SupportCaseChangeIsGroupSaleArticleController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCaseChangeIsGroupSaleArticleController($state, $scope, SupportApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.isEditing = false;\n    vm.selectedProduct = {};\n    vm.selectedProductVariant = {};\n    vm.selectedProductCopy = {};\n    vm.selectedProductVariantCopy = {};\n    vm.isGroupSaleArticle = false;\n\n    //Methods\n    vm.recieveProduct = recieveProduct;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.startEditing = startEditing;\n    vm.saveChange = saveChange;\n    vm.cancelEditing = cancelEditing;\n\n    activate();\n\n    function activate() {\n    }\n\n    function startEditing() {\n        vm.isEditing = true;\n    }\n    function saveChange() {\n        confirmationDialogService.showDialog('<div>' + $translate.instant(\"support.confirmUpdateData\") + '</div>').then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                SupportApiService.changeIsGroupSaleArticle({ articleId: vm.selectedProduct.id, isGroupSaleArticle: vm.isGroupSaleArticle }).then(function(response) {\n                    cancelEditing();\n                    ToasterService.showSuccess($translate.instant('support.isGroupArticleChanged'), $translate.instant('support.supportCase'));\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    function cancelEditing() {\n        vm.isEditing = false;\n    }\n\n    function recieveProduct(product) {\n        vm.selectedProduct = product;\n        loadSpinnerService.start(\"mainSpinner\");\n        SupportApiService.getProduct(vm.selectedProduct.id).then(function(response) {\n            vm.selectedProduct = response;\n            vm.isGroupSaleArticle = vm.selectedProduct.isGroupSaleArticle;\n        }, function(error) {\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n\n    function isAllowedToSave() {\n        return vm.selectedProduct && vm.selectedProduct.id > 0;\n    }\n}\n\nangular\n    .module('supportcases.changeisgroupsalearticle', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseChangeIsGroupSaleArticleController', SupportCaseChangeIsGroupSaleArticleController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.changeitemgroup', {\n        url:'/changeitemgroup',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/changeitemgroup/changeitemgroup.tpl.html',\n            controller: 'SupportCaseChangeItemGroupController as vm'\n        }},\n        resolve: {\n            itemGroups: itemGroupResolver\n        }\n    });\n}\n\n// @ngInject\nfunction itemGroupResolver(SupportApiService) {\n    return SupportApiService.getItemGroupBriefs();\n}\n\n// @ngInject\nfunction SupportCaseChangeItemGroupController($state, $scope, itemGroups, SupportApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.isEditing = false;\n    vm.itemGroups = itemGroups.results;\n    vm.selectedProduct = {};\n    vm.selectedProductCopy = {};\n    vm.selectedItemGroup = {};\n\n    //Methods\n    vm.recieveProduct = recieveProduct;\n    vm.removeProduct = removeProduct;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.startEditing = startEditing;\n    vm.saveChange = saveChange;\n    vm.cancelEditing = cancelEditing;\n\n    activate();\n\n    function activate() {\n    }\n\n    function startEditing() {\n        vm.isEditing = true;\n        vm.selectedItemGroup = {};\n        vm.selectedProduct.preferredSupplier = {};\n        vm.selectedProduct.suppliers = [];\n    }\n    function saveChange() {\n        confirmationDialogService.showDialog('<div>' + $translate.instant(\"support.confirmUpdateData\") + '</div>').then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                var suppliers = _.map(vm.selectedProduct.suppliers, 'id');\n                SupportApiService.changeItemGroup({ productId: vm.selectedProduct.id, itemGroupId: vm.selectedItemGroup.id, preferredSupplierId: vm.selectedProduct.preferredSupplier.id, supplierIds: suppliers }).then(function(response) {\n                    cancelEditing();\n                    ToasterService.showSuccess($translate.instant('support.itemGroupChanged'), $translate.instant('support.supportCase'));\n                }, function(error) {\n                    ToasterService.showError(error.message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    function cancelEditing() {\n        vm.isEditing = false;\n        removeProduct();\n    }\n\n    function recieveProduct(product) {\n        vm.selectedProduct = product;\n        loadSpinnerService.start(\"mainSpinner\");\n        SupportApiService.getProduct(vm.selectedProduct.id).then(function(response) {\n            vm.selectedProduct = response;\n            vm.selectedProductCopy = angular.copy(response);\n        }, function(error) {\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n    function removeProduct() {\n        vm.selectedProduct = {};\n        vm.selectedProductCopy = {};\n        vm.selectedItemGroup = {};\n        $scope.$broadcast('clearArticleEvent');\n    }\n\n    function isAllowedToSave() {\n        return vm.selectedProduct && vm.selectedProduct.id > 0 &&\n            vm.selectedItemGroup && vm.selectedItemGroup.id > 0 &&\n            vm.selectedProduct.suppliers && vm.selectedProduct.suppliers.length > 0 &&\n            vm.selectedProduct.preferredSupplier && vm.selectedProduct.preferredSupplier.id > 0;\n    }\n}\n\nangular\n    .module('supportcases.changeitemgroup', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseChangeItemGroupController', SupportCaseChangeItemGroupController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.changevariantdetail', {\n        url:'/changevariantdetail',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/changevariantdetail/changevariantdetail.tpl.html',\n            controller: 'SupportCaseChangeVariantDetailController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCaseChangeVariantDetailController($state, $scope, SupportApiService,ArticleChangeVariantDetailDialogService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.selectedProduct = {};\n\n    //Methods\n    vm.recieveProduct = recieveProduct;\n    vm.openEditVariantDetailDialog = openEditVariantDetailDialog;\n\n    activate();\n\n    function activate() {\n    }\n\n    function openEditVariantDetailDialog(){\n        ArticleChangeVariantDetailDialogService.showDialog(vm.selectedProduct).then(function(response){\n            if(response)\n                $state.go($state.current.name,{},{reload: $state.current.name});\n        });\n    }\n\n    function recieveProduct(product) {\n        vm.selectedProduct = product;\n        loadSpinnerService.start(\"mainSpinner\");\n        SupportApiService.getProduct(vm.selectedProduct.id).then(function(response) {\n            vm.selectedProduct = response;\n        }, function(error) {\n            ToasterService.showError(error.message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n}\n\nangular\n    .module('supportcases.changevariantdetail', ['support.api', 'product.articles.articleChangeVariantDetailDialog'])\n    .config(stateConfig)\n    .controller('SupportCaseChangeVariantDetailController', SupportCaseChangeVariantDetailController);","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.createlocation', {\n        url:'/createlocation',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/createlocation/createlocation.tpl.html',\n            controller: 'SupportCaseCreateLocationController as vm'\n        }},\n        resolve: {\n            locationTypes: locationTypeResolver,\n            locationCategories: locationCategoryResolver\n        }\n    });\n}\n\n// @ngInject\nfunction locationTypeResolver(SupportApiService) {\n    return SupportApiService.getLocationTypes();\n}\n// @ngInject\nfunction locationCategoryResolver(SupportApiService) {\n    return SupportApiService.getLocationCategories();\n}\n\n// @ngInject\nfunction SupportCaseCreateLocationController($state, $scope, locationTypes, locationCategories, SupportApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.isEditing = true;\n    vm.locationTypes = locationTypes.results;\n    vm.locationCategories = locationCategories.results;\n    vm.location = {\n        locationNumber: 0,\n        locationName: '',\n        organizationNumber: '',\n        startDate: new Date(),\n        locationTypeId: 0,\n        locationCategoryId: 0,\n        isActive: false\n    };\n    vm.selectedLocationType = {};\n    vm.selectedLocationCategory = {};\n\n    //Methods\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.saveChange = saveChange;\n    vm.resetForm = resetForm;\n\n    activate();\n\n    function activate() {\n    }\n\n    function saveChange() {\n        confirmationDialogService.showDialog('<div>' + $translate.instant(\"support.confirmCreateData\") + '</div>').then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                vm.location.locationCategoryId = vm.selectedLocationCategory.id;\n                vm.location.locationTypeId = vm.selectedLocationType.id;\n                SupportApiService.createLocation(vm.location).then(function(response) {\n                    ToasterService.showSuccess($translate.instant('support.locationCreated'), $translate.instant('support.supportCase'));\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    function resetForm() {\n        vm.location = {\n            locationNumber: 0,\n            locationName: '',\n            organizationNumber: '',\n            startDate: new Date(),\n            locationTypeId: 0,\n            locationCategoryId: 0,\n            isActive: false\n        };\n    }\n\n    function isAllowedToSave() {\n        return vm.location &&\n            vm.location.locationNumber && vm.location.locationNumber > 0 &&\n            vm.location.locationName && vm.location.locationName.length > 0 &&\n            vm.location.organizationNumber && vm.location.organizationNumber.length > 0 &&\n            vm.selectedLocationCategory && vm.selectedLocationCategory.id > 0 &&\n            vm.selectedLocationType && vm.selectedLocationType.id > 0;\n    }\n}\n\nangular\n    .module('supportcases.createlocation', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseCreateLocationController', SupportCaseCreateLocationController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.deleteproduct', {\n        url:'/deleteproduct',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/deleteproduct/deleteproduct.tpl.html',\n            controller: 'SupportCaseDeleteProductController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCaseDeleteProductController($state, $scope, SupportApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.selectedProduct = {};\n\n    //Methods\n    vm.recieveProduct = recieveProduct;\n    vm.removeProduct = removeProduct;\n    vm.isAllowedToDelete = isAllowedToDelete;\n    vm.deleteProduct = deleteProduct;\n\n    activate();\n\n    function activate() {\n    }\n\n    function deleteProduct() {\n        confirmationDialogService.showDialog('<div>' + $translate.instant(\"support.confirmDeleteData\") + '</div>').then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                SupportApiService.deleteProduct(vm.selectedProduct.id).then(function(response) {\n                    $scope.$broadcast('clearArticleEvent');\n                    ToasterService.showSuccess($translate.instant('support.productDeleted'), $translate.instant('support.supportCase'));\n                }, function(error) {\n                    ToasterService.showError(error.message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n\n    function recieveProduct(product) {\n        vm.selectedProduct = product;\n    }\n    function removeProduct() {\n        vm.selectedProduct = {};\n    }\n\n    function isAllowedToDelete() {\n        return vm.selectedProduct && vm.selectedProduct.id > 0;\n    }\n}\n\nangular\n    .module('supportcases.deleteproduct', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseDeleteProductController', SupportCaseDeleteProductController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.mergeproducts', {\n        url:'/mergeproducts',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/mergeproducts/mergeproducts.tpl.html',\n            controller: 'SupportCaseMergeProductController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCaseMergeProductController($state, $scope, SupportApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.selectedToProduct = {};\n    vm.selectedFromProduct1 = {};\n    vm.selectedFromProduct2 = {};\n    vm.selectedFromProduct3 = {};\n\n    //Methods\n    vm.recieveToProduct = recieveToProduct;\n    vm.recieveFromProduct1 = recieveFromProduct1;\n    vm.recieveFromProduct2 = recieveFromProduct2;\n    vm.recieveFromProduct3 = recieveFromProduct3;\n    vm.removeToProduct = removeToProduct;\n    vm.removeFromProduct1 = removeFromProduct1;\n    vm.removeFromProduct2 = removeFromProduct2;\n    vm.removeFromProduct3 = removeFromProduct3;\n    vm.isAllowedToMerge = isAllowedToMerge;\n    vm.mergeProducts = mergeProducts;\n\n    activate();\n\n    function activate() {\n    }\n\n    function mergeProducts() {\n        var toProduct = vm.selectedToProduct.id;\n        var fromProduct1 = vm.selectedFromProduct1 ? vm.selectedFromProduct1.id : null;\n        var fromProduct2 = vm.selectedFromProduct2 && vm.selectedFromProduct2.id ? vm.selectedFromProduct2.id : null;\n        var fromProduct3 = vm.selectedFromProduct3 && vm.selectedFromProduct3.id ? vm.selectedFromProduct3.id : null;\n\n        var message = '<div>' +\n            'Är du säker på att du vill slå samman följande produkter? Handlingen går inte att ångra.' + //$translate.instant(\"support.confirmMergeData\") +\n            '<table style=\"width:100%; margin: 5px 10px;\">';\n        message += '<thead><tr><th>Produktnummer</td><th>Lev. produktnummer</td><th>Produktnamn</td></tr></thead>';\n        message += '<tbody>';\n        if (fromProduct1 !== null) { message += '<tr><td>' + vm.selectedFromProduct1.articleNumber + '</td><td>' + vm.selectedFromProduct1.alternativeArticleNumber + '</td><td>' + vm.selectedFromProduct1.articleName + '</td></tr>'; }\n        if (fromProduct2 !== null) { message += '<tr><td>' + vm.selectedFromProduct2.articleNumber + '</td><td>' + vm.selectedFromProduct2.alternativeArticleNumber + '</td><td>' + vm.selectedFromProduct2.articleName + '</td></tr>'; }\n        if (fromProduct3 !== null) { message += '<tr><td>' + vm.selectedFromProduct3.articleNumber + '</td><td>' + vm.selectedFromProduct3.alternativeArticleNumber + '</td><td>' + vm.selectedFromProduct3.articleName + '</td></tr>'; }\n        message += '<tr><td colspan=\"3\" style=\"text-align:center; padding: 10px 10px;\"> &darr; &darr; &darr; </td></tr>';\n        message += '<tr><td>' + vm.selectedToProduct.articleNumber + '</td><td>' + vm.selectedToProduct.alternativeArticleNumber + '</td><td>' + vm.selectedToProduct.articleName + '</td></tr>';\n        message += '</tbody>';\n        message += '</table>';\n        message += '</div>';\n\n        confirmationDialogService.showDialog(message).then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                var request = {\n                    toProductId: toProduct,\n                    fromProduct1Id: fromProduct1,\n                    fromProduct2Id: fromProduct2,\n                    fromProduct3Id: fromProduct3\n                };\n                SupportApiService.mergeProducts(request).then(function(response) {\n                    $scope.$broadcast('clearArticleEvent');\n                    vm.selectedToProduct = {};\n                    vm.selectedFromProduct1 = {};\n                    vm.selectedFromProduct2 = {};\n                    vm.selectedFromProduct3 = {};\n                    ToasterService.showSuccess('Produkterna ihopslagna', //$translate.instant('support.productsMerged')\n                        $translate.instant('support.supportCase'));\n                }, function(error) {\n                    ToasterService.showError(error.message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n\n    function recieveToProduct(product) {\n        vm.selectedToProduct = product;\n    }\n    function recieveFromProduct1(product) {\n        vm.selectedFromProduct1 = product;\n    }\n    function recieveFromProduct2(product) {\n        vm.selectedFromProduct2 = product;\n    }\n    function recieveFromProduct3(product) {\n        vm.selectedFromProduct3 = product;\n    }\n    function removeToProduct() {\n        vm.selectedToProduct = {};\n    }\n    function removeFromProduct1() {\n        vm.selectedFromProduct1 = {};\n    }\n    function removeFromProduct2() {\n        vm.selectedFromProduct2 = {};\n    }\n    function removeFromProduct3() {\n        vm.selectedFromProduct3 = {};\n    }\n\n    function isAllowedToMerge() {\n        var hasToProduct = vm.selectedToProduct && vm.selectedToProduct.id > 0;\n        var hasFromProduct1 = vm.selectedFromProduct1 && vm.selectedFromProduct1.id > 0;\n        var hasFromProduct2 = vm.selectedFromProduct2 && vm.selectedFromProduct2.id > 0;\n        var hasFromProduct3 = vm.selectedFromProduct3 && vm.selectedFromProduct3.id > 0;\n\n        return hasToProduct && (hasFromProduct1 || (hasFromProduct1 || hasFromProduct2 || hasFromProduct3));\n    }\n}\n\nangular\n    .module('supportcases.mergeproducts', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseMergeProductController', SupportCaseMergeProductController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.missingreceipts', {\n        url:'/missingreceipts',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/missingreceipts/missingreceipts.tpl.html',\n            controller: 'SupportCaseMissingReceiptsController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCaseMissingReceiptsController($state, $scope, SupportApiService, UsersApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.selectedStartDate = {};\n    vm.selectedEndDate = {};\n    vm.selectedLocations = [];\n    vm.locations = [];\n    vm.missingEasyPosReceipts = [];\n    vm.showSequenceNumbers = false;\n\n    //Methods\n    vm.search = search;\n\n    activate();\n\n    function activate() {\n        UsersApiService.getLocations().then(function(locations) {\n            vm.locations = locations;\n        });\n    }\n    function search() {\n        loadSpinnerService.start(\"mainSpinner\");\n        var request = {\n            startDate: vm.selectedStartDate,\n            endDate: vm.selectedEndDate,\n            locationIds: []\n        };\n        _.forEach(vm.selectedLocations, function(o) {\n            request.locationIds.push(o.id);\n        });\n        SupportApiService.getMissingEasyPosReceipts(request).then(function(response) {\n            //ToasterService.showSuccess($translate.instant('support.barcodeChanged'), $translate.instant('support.supportCase'));\n            vm.missingEasyPosReceipts = response.data;\n            vm.missingEasyPosSequenceNumbers = [];\n            _.forEach(response.data.missingReceiptSpans, function(mrs) {\n                _.forEach(mrs.missingReceipts, function(mr) {\n                    vm.missingEasyPosSequenceNumbers.push(mr.sequenceNumber);\n                });\n            });\n        }, function(error) {\n            var message = error.message + '\\n';\n            _.forEach(error.errors, function(err) {\n                message += err.message + '\\n';\n            });\n            ToasterService.showError(message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n}\n\nangular\n    .module('supportcases.missingreceipts', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseMissingReceiptsController', SupportCaseMissingReceiptsController);\n","// @ngInject\r\nfunction stateConfig($stateProvider) {\r\n    $stateProvider.state('support.supportcases.originalbalanceimport', {\r\n        url:'/originalbalance',\r\n        views: {\r\n            'supportView@support': {\r\n            templateUrl: 'main/support/supportcases/originalbalanceimport/originalbalanceimport.tpl.html',\r\n            controller: 'OriginalBalanceImportController as vm'\r\n        }},\r\n        resolve: {\r\n            locations: locationsResolver\r\n        }\r\n    });\r\n}\r\n\r\n// @ngInject\r\nfunction locationsResolver(SupportApiService) {\r\n    return SupportApiService.getLocations();\r\n}\r\n\r\n\r\n// @ngInject\r\nfunction OriginalBalanceImportController(loadSpinnerService, ToasterService, $translate, $scope, locations, SupportApiService) {\r\n    var vm = this;\r\n\r\n    vm.request = {};\r\n    vm.displayRows = [];\r\n    vm.locations = locations;\r\n\r\n    vm.submitOriginalBalance = submitOriginalBalance;\r\n\r\n    vm.selectedLocation = locations[0];\r\n\r\n    var fileInputDomElement = $(\"#xlf\")[0];\r\n\r\n    activate();\r\n\r\n    function activate() {\r\n        fileInputDomElement.addEventListener('change', function handleImportFileChanged(e) {\r\n            var files = e.target.files;\r\n            vm.importFileName = files[0].name;\r\n            var i,f;\r\n            for (i = 0, f = files[i]; i !== files.length; ++i) {\r\n                handleImportFile(f);\r\n            }\r\n        }, false);\r\n\r\n        vm.request = {\r\n            fileName: '',\r\n            locationId: 0,\r\n            rows: [\r\n            ]\r\n        };\r\n\r\n        $scope.$watch(function() { return vm.selectedLocation.id; }, function() {\r\n            vm.request.locationId = vm.selectedLocation.id;\r\n        });\r\n    }\r\n\r\n    function submitOriginalBalance() {\r\n        loadSpinnerService.start('mainSpinner');\r\n        SupportApiService.createOriginalBalance(vm.request).then(function(response) {\r\n            ToasterService.showSuccess(\"Done\");\r\n        }, function(error) {\r\n            ToasterService.showError(error);\r\n        }).finally(function() {\r\n            loadSpinnerService.stop('mainSpinner',{force:true});\r\n        });\r\n    }\r\n\r\n    function handleImportFile(file, revalidate) {\r\n        var reader = new FileReader();\r\n        vm.request.fileName = file.name;\r\n        reader.onload = onLoadFunction;\r\n        loadSpinnerService.start('mainSpinner');\r\n        reader.readAsArrayBuffer(file);\r\n\r\n        function onLoadFunction(e) {\r\n            try {\r\n                // --- File data read ---\r\n                // From MDN: \"readAsBinaryString is deprecated and readAsArrayBuffer() should be used instead.\"\r\n\r\n                // ReadAsArrayBuffer solution.\r\n                var data = \"\";\r\n                var bytes = new Uint8Array(e.target.result);\r\n                var length = bytes.byteLength;\r\n                for (var i = 0; i < length; i++) {\r\n                    data += String.fromCharCode(bytes[i]);\r\n                }\r\n\r\n                // --- XLSX ---\r\n                // Read Excel data into a workbook object representation.\r\n                var workbook = XLSX.read(data, {type: 'binary'});\r\n\r\n                // Getting the name of the first sheet in the workbook.\r\n                var firstSheetName = workbook.SheetNames[0];\r\n\r\n                // Getting the sheet based on the firstSheetName.\r\n                var workSheet = workbook.Sheets[firstSheetName];\r\n\r\n                // The JSon representation of the worksheet returned by js-xlsx is pretty similar to how\r\n                // we want our request data to be formatted.\r\n                vm.JSonAdaptedSheetData = XLSX.utils.sheet_to_json(workSheet);\r\n\r\n                vm.request.rows = [];\r\n                vm.displayRows = [];\r\n                _.forEach(vm.JSonAdaptedSheetData, function(row) {\r\n                    vm.request.rows.push({\r\n                        barcode: row.barcode,\r\n                        externalId: row.externalId,\r\n                        purchaseCostPerItem: row.purchaseCostPerItem,\r\n                        quantity: row.quantity,\r\n                        lastInventoriedDate: '1990-01-01 00:00:00'\r\n                    });\r\n                    if (vm.displayRows.length < 50) {\r\n                        vm.displayRows.push({\r\n                            barcode: row.barcode,\r\n                            externalId: row.externalId,\r\n                            purchaseCostPerItem: row.purchaseCostPerItem,\r\n                            quantity: row.quantity,\r\n                            lastInventoriedDate: '1990-01-01 00:00:00'\r\n                        });\r\n                    }\r\n                });\r\n\r\n                cleanColumnNames();\r\n\r\n                extractImportFileColumnNames();\r\n            } catch (error) {\r\n                console.log(error);\r\n                ToasterService.showError($translate.instant('productimport.errorWhileReadingImportFile'), $translate.instant('common.error'));\r\n            } finally {\r\n                loadSpinnerService.stop('mainSpinner');\r\n            }\r\n        }\r\n    }\r\n\r\n    // js-xlsx has done most of the work already. All we need to do is extract the javascript object property names\r\n    function extractImportFileColumnNames() {\r\n        if (vm.JSonAdaptedSheetData.length !== 0) {\r\n            vm.importFileColumnNames = [];\r\n            _.forEach(vm.JSonAdaptedSheetData, function(sheetData) {\r\n                var keys = Object.keys(sheetData);\r\n\r\n                _.forEach(keys, function(key) {\r\n                    if (!_.find(vm.importFileColumnNames, function(col) { return col.name === key; })) {\r\n                        var nameStr = normalizeString(key);\r\n                        if (!_.find(vm.importFileColumnNames, function(col) { return col.name === nameStr; })) {\r\n                            var newColumn = { id: vm.importFileColumnNames.length, name: nameStr };\r\n                            vm.importFileColumnNames.push(newColumn);\r\n                        }\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    function cleanColumnNames() {\r\n        if (vm.JSonAdaptedSheetData.length !== 0) {\r\n            for (var sheetIndex = 0; sheetIndex < vm.JSonAdaptedSheetData.length; sheetIndex++) {\r\n                var sheetData = vm.JSonAdaptedSheetData[sheetIndex];\r\n                var keys = Object.keys(sheetData);\r\n\r\n                for (var keyIndex = 0; keyIndex < keys.length; keyIndex++) {\r\n                    var key = keys[keyIndex];\r\n                    var origKey = key;\r\n                    var keyStr = normalizeString(key);\r\n                    //Check if the key has changed after normalization, if yes replace the kolumn with the new name\r\n                    if (origKey !== keyStr) {\r\n                        sheetData[keyStr] = sheetData[origKey];\r\n                        var index = keys.indexOf(origKey);\r\n                        keys[index] = keyStr;\r\n                        sheetData = _.pick(sheetData, keys);\r\n                    }\r\n                }\r\n\r\n                vm.JSonAdaptedSheetData[sheetIndex] = sheetData;\r\n            }\r\n        }\r\n    }\r\n\r\n    function normalizeString(str) {\r\n        //Make sure string contains only letters, numbers and some special characters\r\n        var retVal = str;\r\n        var r = /[^ ()/\\\\0-9\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]+/g;\r\n        retVal = str.replace(r, '');\r\n        //Make sure there are no extra whitespace\r\n        var r2 = /[\\s]{2,}/g;\r\n        retVal = retVal.replace(r2, ' ');\r\n        //Remove leading and trailing whitespace\r\n        retVal = retVal.trim();\r\n        return retVal;\r\n    }\r\n\r\n}\r\n\r\nangular\r\n.module('supportcases.originalbalanceimport', [])\r\n.config(stateConfig)\r\n.controller('OriginalBalanceImportController', OriginalBalanceImportController);\r\n\r\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases', {\n        url: '',\n        views: {\n            'supportList': {\n            templateUrl: 'main/support/supportcases/supportcases.tpl.html',\n            controller: 'SupportCasesController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCasesController() {\n}\n\nangular\n    .module('support.supportcases', [\n        'support.api',\n        'supportcases.addvariantdetail',\n        'supportcases.changebarcode',\n        'supportcases.changebarcodes',\n        'supportcases.changevariantdetail',\n        'supportcases.changeisgroupsalearticle',\n        'supportcases.changeitemgroup',\n        'supportcases.createlocation',\n        'supportcases.deleteproduct',\n        'supportcases.mergeproducts',\n        'supportcases.missingreceipts',\n        'supportcases.triggertochangelog',\n        'supportcases.updateinventorystatus',\n        'supportcases.originalbalanceimport'\n    ])\n    .config(stateConfig)\n    .controller('SupportCasesController', SupportCasesController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.triggertochangelog', {\n        url:'/triggertochangelog',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/triggertochangelog/triggertochangelog.tpl.html',\n            controller: 'SupportCaseTriggerToChangeLogController as vm'\n        }},\n        resolve: {\n            pricelists: pricelistsResolver,\n            locations: locationsResolver\n        }\n    });\n}\n\n// @ngInject\nfunction pricelistsResolver(LocationsApiService) {\n    return LocationsApiService.getPricelists();\n}\n\n// @ngInject\nfunction locationsResolver(StockApiService) {\n    return StockApiService.getLocations();\n}\n\n// @ngInject\nfunction SupportCaseTriggerToChangeLogController($state, $scope, SupportApiService, loadSpinnerService, ToasterService, $translate, pricelists, locations) {\n    var vm = this;\n\n    //Properties\n    vm.testRun = true;\n    vm.tabSelection = 'orders';\n    vm.priceLists = pricelists;\n    vm.locations = locations;\n    vm.selectedLocationIds = [];\n    vm.selectedPriceListId = '';\n    vm.updateOrderIds = [];\n    vm.updateCustomerOrderIds = [];\n    vm.updateProductIds = [];\n    vm.updateProductVariantIds = [];\n    vm.updateStockIds = [];\n    vm.updatePriceListItemIds = [];\n\n    //Methods\n    vm.saveChange = saveChange;\n    vm.cancelEditing = cancelEditing;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.changeTab = changeTab;\n\n    activate();\n\n    function activate() {\n    }\n\n    function saveChange() {\n        loadSpinnerService.start(\"mainSpinner\");\n        var request = {\n            searchTerm: vm.searchTerm,\n            testRun: vm.testRun\n        };\n        switch (vm.tabSelection) {\n            //case 'orders': break;\n            //case 'customerorders': break;\n            //case 'products': break;\n            //case 'productvariants': break;\n            case 'stocks':\n                request.locationIds = _.map(vm.selectedLocationIds, function(o) { return o.id; }); break;\n            case 'pricelistitems':\n                request.priceListId = vm.selectedPriceListId.id; break;\n        }\n\n        SupportApiService.triggerToChangeLog(request, vm.tabSelection).then(function(response) {\n            vm.updateOrderIds = [];\n            vm.updateCustomerOrderIds = [];\n            vm.updateProductIds = [];\n            vm.updateProductVariantIds = [];\n            vm.updateStockIds = [];\n            vm.updatePriceListItemIds = [];\n            switch (vm.tabSelection) {\n                case 'orders': vm.updateOrderIds = response.data.orderIds; break;\n                case 'customerorders': vm.updateCustomerOrderIds = response.data.customerOrderIds; break;\n                case 'products': vm.updateProductIds = response.data.productIds; break;\n                case 'productvariants': vm.updateProductVariantIds = response.data.productVariantIds; break;\n                case 'stocks': vm.updateStockIds = response.data.stockIds; break;\n                case 'pricelistitems': vm.updatePriceListItemIds = response.data.priceListItemIds; break;\n            }\n\n            ToasterService.showSuccess('Triggat objekten. Se lista.', $translate.instant('support.supportCase'));\n        }, function(error) {\n            var message = error.message + '\\n';\n            _.forEach(error.errors, function(err) {\n                message += err.message + '\\n';\n            });\n            ToasterService.showError(message, $translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop(\"mainSpinner\");\n        });\n    }\n    function cancelEditing() {\n        reset();\n    }\n    function isAllowedToSave() {\n        var hasSetSearchTerm = vm.searchTerm && vm.searchTerm.length > 0;\n        var hasExtraCondition = true;\n        switch (vm.tabSelection) {\n            //case 'orders': break;\n            //case 'customerorders': break;\n            //case 'products': break;\n            //case 'productvariants': break;\n            default: hasExtraCondition = true; break;\n            case 'stocks': hasExtraCondition = vm.selectedLocationIds.length > 0; break;\n            case 'pricelistitems': hasExtraCondition = vm.selectedPriceListId && vm.selectedPriceListId.id > 0; break;\n        }\n        return hasSetSearchTerm && hasExtraCondition;\n    }\n\n    function changeTab(tab) {\n        switch (tab) {\n            case 'orders':\n                vm.tabSelection = 'orders'; reset(); break;\n            case 'customerorders':\n                vm.tabSelection = 'customerorders'; reset(); break;\n            case 'products':\n                vm.tabSelection = 'products'; reset(); break;\n            case 'productvariants':\n                vm.tabSelection = 'productvariants'; reset(); break;\n            case 'stocks':\n                vm.tabSelection = 'stocks'; reset(); break;\n            case 'pricelistitems':\n                vm.tabSelection = 'pricelistitems'; reset(); break;\n        }\n    }\n    function reset() {\n        vm.testRun = true;\n        vm.searchTerm = '';\n        vm.updateOrderIds = [];\n        vm.updateCustomerOrderIds = [];\n        vm.updateProductIds = [];\n        vm.updateProductVariantIds = [];\n        vm.updateStockIds = [];\n        vm.updatePriceListItemIds = [];\n        vm.selectedLocationIds = [];\n        vm.selectedPriceListId = '';\n    }\n}\n\nangular\n    .module('supportcases.triggertochangelog', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseTriggerToChangeLogController', SupportCaseTriggerToChangeLogController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('support.supportcases.updateinventorystatus', {\n        url:'/updateinventorystatus',\n        views: {\n            'supportView@support': {\n            templateUrl: 'main/support/supportcases/updateinventorystatus/updateinventorystatus.tpl.html',\n            controller: 'SupportCaseUpdateInventoryStatusController as vm'\n        }},\n        resolve: {\n        }\n    });\n}\n\n// @ngInject\nfunction SupportCaseUpdateInventoryStatusController($state, $scope, SupportApiService, InventoryingApiService, loadSpinnerService, ToasterService, confirmationDialogService, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.isEditing = false;\n    vm.selectedInventory = {};\n    /*\n        Created,\n        FileImported,\n        Pending,\n        Completed,\n        Deleted\n    */\n    vm.selectedInventoryStatus = '';\n    vm.inventoryStatuses = [\n        { id: 0, statusName: 'Created', value: 'created' },\n        { id: 1, statusName: 'FileImported', value: 'fileImported' },\n        { id: 2, statusName: 'Pending', value: 'pending' },\n        { id: 3, statusName: 'Completed', value: 'completed' },\n        { id: 4, statusName: 'Deleted', value: 'deleted' }\n    ];\n    vm.inventories = [];\n    vm.currentPage = 1;\n    vm.itemsPerPage = 10;\n    vm.totalItems = 0;\n    vm.searchTerm = '';\n\n    //Methods\n    vm.selectInventory = selectInventory;\n    vm.isAllowedToSave = isAllowedToSave;\n    vm.startEditing = startEditing;\n    vm.saveChange = saveChange;\n    vm.cancelEditing = cancelEditing;\n    vm.searchTermChange = searchTermChange;\n\n    activate();\n\n    function activate() {\n        loadInventories();\n    }\n\n    function loadInventories() {\n        loadSpinnerService.start('mainSpinner');\n        InventoryingApiService.getAll(vm.currentPage, vm.searchTerm, vm.itemsPerPage).then(function(response) {\n            vm.inventories = response.data;\n            vm.totalItems = response.totalItems;\n            formatPlannedDeliveryDate(vm.inventories);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner', {force: true});\n        });\n    }\n    function searchTermChange() {\n        loadInventories();\n    }\n\n    function formatPlannedDeliveryDate(orders) {\n        for (var i = 0; i < orders.length; i++) {\n            var order = orders[i];\n            order.inventoryDate = order.inventoryDate.split('T')[0];\n        }\n    }\n\n    function startEditing() {\n        vm.isEditing = true;\n    }\n    function saveChange() {\n        confirmationDialogService.showDialog('<div>' + $translate.instant(\"support.confirmUpdateData\") + '</div>').then(function (result) {\n            if (result === true) {\n                loadSpinnerService.start(\"mainSpinner\");\n                SupportApiService.updateInventoryStatus({ inventoryId: vm.selectedInventory.id, status: vm.selectedInventoryStatus.value }).then(function(response) {\n                    cancelEditing();\n                    loadInventories();\n                    ToasterService.showSuccess($translate.instant('support.isInventoryStatusChanged'), $translate.instant('support.supportCase'));\n                }, function(error) {\n                    var message = error.message + '\\n';\n                    _.forEach(error.errors, function(err) {\n                        message += err.message + '\\n';\n                    });\n                    ToasterService.showError(message, $translate.instant('common.error'));\n                }).finally(function() {\n                    loadSpinnerService.stop(\"mainSpinner\");\n                });\n            }\n        });\n    }\n    function cancelEditing() {\n        vm.isEditing = false;\n        vm.selectedInventoryStatus = '';\n        vm.selectedInventory = {};\n    }\n\n    function selectInventory(inventory) {\n        vm.selectedInventory = inventory;\n    }\n\n    function isAllowedToSave() {\n        var hasSelectedInventory = vm.selectedInventory && vm.selectedInventory.id > 0;\n        var hasSelectedInventoryStatus = vm.selectedInventoryStatus && vm.selectedInventoryStatus.id > 0;\n        return hasSelectedInventory && hasSelectedInventoryStatus;\n    }\n}\n\nangular\n    .module('supportcases.updateinventorystatus', ['support.api'])\n    .config(stateConfig)\n    .controller('SupportCaseUpdateInventoryStatusController', SupportCaseUpdateInventoryStatusController);\n","// @ngInject\nfunction TimedOutLoginDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(username, expireDate) {\n\n        var modalDefaults = {\n            backdrop: false,\n            keyboard: false,\n            controller: 'TimedOutLoginDialogController as vm',\n            templateUrl: 'main/timedOutLoginDialog/timedOutLoginDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            username: function() {\n                return username;\n            },\n            expireDate: function() {\n                return expireDate;\n            },\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction TimedOutLoginDialogController($uibModalInstance, $translate, ToasterService, loadSpinnerService, $interval, $scope, username, expireDate, AuthService) {\n    var vm = this;\n\n    vm.state = 0; // State 0 = Keep session?, State 1 = Are you sure?, State 2 = Refresh error!, State 3 = Refresh success!, State 4 = Hidden\n    vm.password = \"\";\n    vm.username = username;\n    vm.timer = {\n        expireDate: expireDate,\n        minutes: 0,\n        seconds: 0,\n        displayValue: '5:00'\n    }\n    vm.errorMessage = '';\n    vm.refreshSuccess = false;\n    vm.successCountDownTimer = 5;\n    var timerIntervalPromise;\n\n    vm.closeModal = closeModal;\n    vm.refreshSession = refreshSession;\n\n    recalculateTimer();\n    activate();\n\n    function activate()\n    {\n        loadSpinnerService.start('mainSpinner');\n        timerIntervalPromise = $interval(recalculateTimer, 1000);\n    }\n\n    function recalculateTimer(){\n        var timeLeft = Date.parse(vm.timer.expireDate)-Date.parse(new Date());\n\n        if(timeLeft <= 0)\n        {\n            location.reload();\n            return;\n        }\n\n        vm.timer.minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60));\n        vm.timer.seconds = Math.floor((timeLeft % (1000 * 60)) / 1000);\n\n        vm.timer.displayValue = vm.timer.minutes + ':';\n\n        if(vm.timer.seconds < 10)\n            vm.timer.displayValue += '0' + vm.timer.seconds.toString();\n        else\n            vm.timer.displayValue += vm.timer.seconds.toString();\n    }\n    \n    function SuccessCountDownCloseModal(){\n        vm.successCountDownTimer--;\n        if(vm.successCountDownTimer === 0){\n            closeModal()\n        }\n    }\n\n    function closeModal() {\n        loadSpinnerService.stop('mainSpinner', {force: true});\n        $interval.cancel(timerIntervalPromise);\n        $uibModalInstance.close(vm.refreshSuccess);\n    }\n\n    function refreshSession(){\n        vm.state = 4;\n        AuthService.refreshSession(function(success, errorMessage){\n\n            if(success){\n                vm.state = 3;\n                vm.refreshSuccess = success;\n                ToasterService.showSuccess($translate.instant('login.refreshsession.success'), $translate.instant('common.done'), 10000);\n                $interval.cancel(timerIntervalPromise);\n                //To automaticlly close modal after 5 seconds.\n                timerIntervalPromise = $interval(SuccessCountDownCloseModal, 1000);\n            }else {\n                vm.state = 2;\n                vm.errorMessage = errorMessage;\n            }\n            \n        });\n    }\n}\n\nangular\n    .module('timedOutLoginDialog.timedOutLoginDialog', [])\n    .service('TimedOutLoginDialogService', TimedOutLoginDialogService)\n    .controller('TimedOutLoginDialogController', TimedOutLoginDialogController);","// @ngInject\nfunction TimeStampsAdministrationDialog($uibModal, TimeStampingApiService) {\n\n    return {\n        showDialog: showDialog,\n        showDialogNewDate: showDialogNewDate\n    };\n\n    function showDialog(timeStampDayId, locId, userId) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'TimeStampsAdministrationDialogController as vm',\n            templateUrl: 'main/timestamp/timeStampsAdministrationDialog/timeStampsAdministrationDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            timeStampDay: function() {\n                return TimeStampingApiService.getTimeStampDayById(timeStampDayId);\n            },\n            locationId: function() {\n                return locId;\n            },\n            user: function() {\n                return TimeStampingApiService.getUser(userId);\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n\n    function showDialogNewDate(newDate, locId, userId) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'TimeStampsAdministrationDialogController as vm',\n            templateUrl: 'main/timestamp/timeStampsAdministrationDialog/timeStampsAdministrationDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            timeStampDay: function() {\n                return {\n                    data: {\n                        id: 0,\n                        note: \"\",\n                        date: newDate,\n                        notify: false,\n                        isAccepted: false,\n                        userTimeStamps: []\n                    }\n                };\n            },\n            locationId: function() {\n                return locId;\n            },\n            user: function() {\n                return TimeStampingApiService.getUser(userId);\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction TimeStampsAdministrationDialogController($scope, user, timeStampDay, locationId, TimeStampingApiService, $uibModalInstance) {\n    var vm = this;\n    var stampsHistoryGrid = {};\n\n    vm.timeStampDay = timeStampDay.data;\n    vm.timeStampPairs = [];\n    vm.location = {};\n    vm.showStampsForAllLocations = false;\n    vm.user = user;\n\n    vm.newInStamp = {\n        id: 0,\n        dateTime: new Date(),\n        user: {},\n        location: {id: locationId},\n        modifyingUser: {},\n        timeStampType: { timeStampSystemType: 'In' },\n        note: ''\n    };\n    vm.newOutStamp = {\n        id: 0,\n        dateTime: new Date(),\n        user: {},\n        location: {id: locationId},\n        modifyingUser: {},\n        timeStampType: { timeStampSystemType: 'Out' },\n        note: ''\n    };\n\n    vm.captureStampsHistoryGrid = captureStampsHistoryGrid;\n    vm.createNewTimeStamp = createNewTimeStamp;\n    vm.deleteTimeStampPair = deleteTimeStampPair;\n    vm.saveTimeStampingDayNote = saveTimeStampingDayNote;\n\n    vm.allowTimeSpanCreation = allowTimeSpanCreation;\n\n    activate();\n\n    function activate() {\n        TimeStampingApiService.getLocation(locationId).then(function(response) {\n            vm.location = response;\n            resetNewTimeStampsTimes();\n            constructTimeStampPairs();\n        }, function(error) {\n            console.log(error);\n        });\n\n        $scope.$watch(function() {\n            return vm.showStampsForAllLocations;\n        }, function() {\n            console.log(\"Watch triggered\");\n            constructTimeStampPairs();\n        });\n    }\n\n    function constructTimeStampPairs() {\n        vm.timeStampPairs.length = 0;\n        vm.timeStampPairs = [];\n        var inStamps = _.filter(vm.timeStampDay.userTimeStamps, function(timeStamp) {\n            return timeStamp.timeStampType.timeStampSystemType === 'in';\n        });\n\n        var outStamps = _.filter(vm.timeStampDay.userTimeStamps, function(timeStamp) {\n            return timeStamp.timeStampType.timeStampSystemType === 'out';\n        });\n\n        for (var i = 0; i < inStamps.length; i++) {\n            var currentInStamp = inStamps[i];\n\n            var currentOutStamp = {dateTime: \"--:--:--\"};\n            if (outStamps.length >= i) { currentOutStamp = outStamps[i]; }\n            if (currentOutStamp === undefined) {\n                currentOutStamp = {dateTime: \"--:--:--\"};\n            }\n\n            var timeSpan = Math.abs(new Date(currentOutStamp.dateTime) - new Date(currentInStamp.dateTime));\n\n            var timeStampPair = {\n                inStamp: currentInStamp,\n                outStamp: currentOutStamp,\n                span: (timeSpan / 1000 / 60 / 60).toFixed(2)\n            };\n\n            if ((vm.showStampsForAllLocations) || (!vm.showStampsForAllLocations && timeStampPair.inStamp.location.id === locationId)) {\n                vm.timeStampPairs.push(timeStampPair);\n            }\n        }\n\n        vm.timeStampPairs = _.sortBy(vm.timeStampPairs, function(pair) {\n            return pair.inStamp.dateTime;\n        });\n    }\n\n    //TODO: Fix this to actually work.\n    function roundDateToNearestFiveMinutes(date) {\n        console.log(\"Rounding the following date:\");\n        console.log(date);\n        var coefficient = 1000 * 60 * 5;\n        var rounded = new Date(Math.round(date.getTime() / coefficient) * coefficient);\n        return date;\n    }\n\n    function captureStampsHistoryGrid(s) {\n        console.log(\"Grid captured\");\n        stampsHistoryGrid = s;\n    }\n\n    function createNewTimeStamp() {\n        vm.newInStamp.dateTime = new Date(Date.UTC(vm.newInStamp.dateTime.getFullYear(), vm.newInStamp.dateTime.getMonth(),\n                                                   vm.newInStamp.dateTime.getDate(), vm.newInStamp.dateTime.getHours(),\n                                                   vm.newInStamp.dateTime.getMinutes(), vm.newInStamp.dateTime.getSeconds()));\n\n        vm.newOutStamp.dateTime = new Date(Date.UTC(vm.newOutStamp.dateTime.getFullYear(), vm.newOutStamp.dateTime.getMonth(),\n                                                   vm.newOutStamp.dateTime.getDate(), vm.newOutStamp.dateTime.getHours(),\n                                                   vm.newOutStamp.dateTime.getMinutes(), vm.newOutStamp.dateTime.getSeconds()));\n\n        vm.timeStampDay.userTimeStamps.push(vm.newInStamp);\n        vm.timeStampDay.userTimeStamps.push(vm.newOutStamp);\n\n        if (vm.timeStampDay.id === 0) {\n            vm.timeStampDay.user = vm.user;\n        }\n\n        $uibModalInstance.startLoadingSpinner();\n        TimeStampingApiService.updateTimeStampDay(vm.timeStampDay).then(function(response) {\n            console.log(\"Response\");\n            console.log(response);\n\n            vm.timeStampDay = response.data;\n\n            constructTimeStampPairs();\n\n            stampsHistoryGrid.refresh();\n            stampsHistoryGrid.collectionView.refresh();\n\n            console.log(\"returning vm.timeStampDay\");\n            console.log(vm.timeStampDay);\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            $uibModalInstance.stopLoadingSpinner();\n        });\n\n        resetNewTimeStampsTimes();\n    }\n\n    function deleteTimeStampPair(pair) {\n        TimeStampingApiService.deleteTimeStamp(pair.inStamp.id).then(function(response) {\n            TimeStampingApiService.deleteTimeStamp(pair.outStamp.id).then(function(response) {\n                console.log(\"vm.timeStampPairs (before removal)\");\n                console.log(vm.timeStampPairs);\n\n                vm.timeStampPairs = _.reject(vm.timeStampPairs, function(p) {\n                    return p.inStamp.id === pair.inStamp.id &&\n                           p.outStamp.id === pair.outStamp.id;\n                });\n                vm.timeStampDay.userTimeStamps = _.reject(vm.timeStampDay.userTimeStamps, function(timeStamp) {\n                    return timeStamp.id === pair.inStamp.id;\n                });\n                vm.timeStampDay.userTimeStamps = _.reject(vm.timeStampDay.userTimeStamps, function(timeStamp) {\n                    return timeStamp.id === pair.outStamp.id;\n                });\n\n                console.log(\"vm.timeStampPairs (after removal):\");\n                console.log(vm.timeStampPairs);\n\n                resetNewTimeStampsTimes();\n                constructTimeStampPairs();\n\n                stampsHistoryGrid.refresh();\n                stampsHistoryGrid.collectionView.refresh();\n\n                console.log(\"DONE\");\n            }, function(error) {\n                console.log(error);\n            });\n\n        }, function(error) {\n            console.log(error);\n        });\n    }\n\n    function saveTimeStampingDayNote() {\n        $uibModalInstance.startLoadingSpinner();\n        TimeStampingApiService.updateTimeStampDay(vm.timeStampDay).then(function(response) {\n            console.log(\"Note saved. Respose:\");\n            console.log(response);\n        }).finally(function() {\n            $uibModalInstance.stopLoadingSpinner();\n        });\n    }\n\n    function allowTimeSpanCreation() {\n        var newInTime = vm.newInStamp.dateTime;\n        var newOutTime = vm.newOutStamp.dateTime;\n\n        var isAllowed = true;\n\n        _.forEach(vm.timeStampPairs, function(timeStampPair) {\n            var momentNewInTime = moment(newInTime);\n            var momentNewOutTime = moment(newOutTime);\n\n            var momentOldInTime = moment(timeStampPair.inStamp.dateTime);\n            var momentOldOutTime = moment(timeStampPair.outStamp.dateTime);\n\n            if ((momentNewInTime.isAfter(timeStampPair.inStamp.dateTime) && momentNewInTime.isBefore(timeStampPair.outStamp.dateTime)) ||\n                 momentOldInTime.isAfter(newInTime) && momentOldInTime.isBefore(newOutTime)) {\n                      isAllowed = false;\n                  }\n\n        });\n\n        if (moment(newInTime).isAfter(newOutTime)) {\n            isAllowed = false;\n        }\n\n        return isAllowed;\n    }\n\n    function resetNewTimeStampsTimes() {\n        var date = new Date(vm.timeStampDay.date);\n        vm.newInStamp.dateTime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n        vm.newOutStamp.dateTime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n    }\n\n}\n\nangular\n    .module('timestamp.timeStampsAdministration', [])\n    .service('TimeStampsAdministrationDialog', TimeStampsAdministrationDialog)\n    .controller('TimeStampsAdministrationDialogController', TimeStampsAdministrationDialogController);\n","angular.module('main.timestamp', ['timestamping.api','timestamp.userTimeStamping','timestamp.timeStampsAdministration','timestamp.timestampingusers','timestamp.timestampingmanagement']);\n","// @ngInject\nfunction TimeStampingApiService($q, $window, $http, DS, DSHttpAdapter, ResourcesService) {\n\n    var endpoint = 'usertimestamps';\n\n    return {\n        stampIn: stampIn,\n        stampOut: stampOut,\n        getLatestTimeStamps: getLatestTimeStamps,\n        getTimeStampingUsers: getTimeStampingUsers,\n        getLatestTimeStampDays: getLatestTimeStampDays,\n        updateTimeStampDay: updateTimeStampDay,\n        getNotificationMarkedTimeStampDays: getNotificationMarkedTimeStampDays,\n        getTimeStampDaysInDateRange: getTimeStampDaysInDateRange,\n        getTimeStampDayById: getTimeStampDayById,\n        deleteTimeStamp: deleteTimeStamp,\n        attestTimeStampDays: attestTimeStampDays,\n        unattestTimeStampDays: unattestTimeStampDays,\n        getWorkingTime: getWorkingTime,\n        getTimeReports: getTimeReports,\n        updateTimeReport: updateTimeReport,\n        createTimeReport: createTimeReport,\n        downloadExcelFile: downloadExcelFile,\n        getLocations: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getLocation: ResourcesService.apiFactory.get(endpoint + '/locations'),\n        getUser: ResourcesService.apiFactory.get(endpoint + '/users'),\n        getMe: ResourcesService.apiFactory.get(endpoint + '/me')\n    };\n\n    function stampIn(requestData) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'usertimestamps/stampin', requestData).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function stampOut(requestData) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'usertimestamps/stampout', requestData).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getLatestTimeStamps(numberOfTimeStamps) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'usertimestamps/latest/' + numberOfTimeStamps).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getTimeStampingUsers(startDate, endDate, locationId, page, pageSize, searchTerms) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(searchTerms)) {\n            params.searchTerm = searchTerms;\n        }\n\n        params.locationId = locationId;\n        params.startDate = startDate;\n        params.endDate = endDate;\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'usertimestamps/users', {params: params}).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getLatestTimeStampDays(numberOfTimeStampDays) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'usertimestamps/days/latest/' + numberOfTimeStampDays).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateTimeStampDay(timeStampDay) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'usertimestamps/days/', timeStampDay).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getNotificationMarkedTimeStampDays(userId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'usertimestamps/days/notifications/user/' + userId).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getTimeStampDaysInDateRange(userId, startDate, endDate, location) {\n        var deferred = $q.defer();\n\n        var locationId = location.id;\n\n        var dateRange = {\n            startDate: startDate,\n            endDate: endDate\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'usertimestamps/days/range/users/' + userId + '/locations/' + locationId, {params: dateRange}).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getTimeStampDayById(timeStampDayId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'usertimestamps/days/' + timeStampDayId).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteTimeStamp(timeStampId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.DEL(DS.defaults.basePath + 'usertimestamps/' + timeStampId).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function attestTimeStampDays(timeStampIds) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'usertimestamps/days/attest', timeStampIds).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function unattestTimeStampDays(timeStampIds) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'usertimestamps/days/unattest', timeStampIds).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getWorkingTime(startDate, endDate) {\n        var deferred = $q.defer();\n\n        var params = {\n            startDate: startDate,\n            endDate: endDate\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'usertimestamps/workedtime', {params: params}).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getTimeReports(startDate, endDate, userId) {\n        var deferred = $q.defer();\n\n        var params = {\n            startDate: startDate,\n            endDate: endDate\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'usertimestamps/reports/user/' + userId, {params: params}).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateTimeReport(timeReport) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'usertimestamps/timereport', timeReport).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function createTimeReport(timeReport) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'usertimestamps/timereport', timeReport).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadExcelFile(request) {\n        var url = $window.URL || $window.webkitURL;\n\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'usertimestamps/excelprint', request, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, \"time.xlsx\");\n            } else {\n                var downloadUrl = url.createObjectURL(blob);\n                $window.location = downloadUrl;\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('timestamping.api', [])\n    .factory('TimeStampingApiService', TimeStampingApiService);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.timestampingmanagement', {\n        url: '/timestamping',\n        views: {\n            \"wideColumnView@contacts\": {\n                templateUrl: 'main/timestamp/timestampingusers/timestamping/timestamping.tpl.html',\n                controller: 'TimeStampingManagementController as vm'\n            }\n        },\n        resolve: {\n            locations: locationsResover\n        }\n    });\n}\n\n// @ngInject\nfunction locationsResover(TimeStampingApiService) {\n    return TimeStampingApiService.getLocations();\n}\n\n// @ngInject\nfunction TimeStampingManagementController($stateParams, $q, $scope, $translate, locations, TimeStampingApiService, TimeStampsAdministrationDialog, loadSpinnerService, AuthService, ToasterService) {\n    var vm = this;\n    var lastSelectedUser = {};\n\n    var today = new Date();\n    var timeStampsGrid = {};\n    var timeReportsCopy = {};\n\n    var newTimeReportDatePicker = {};\n\n    var timeReportsGrid = {};\n    var startDateInitialized = false;\n    var endDateInitialized = false;\n\n    vm.currentPage = 0;\n    vm.itemsPerPage = 10;\n    vm.searchTerm = \"\";\n    vm.currentPage = 1;\n\n    vm.location = {};\n    vm.locations = locations;\n    vm.timeStampingUsers = [];\n    vm.timeStampingDays = [];\n    vm.timeReports = [];\n\n    vm.searchTermChange = searchTermChange;\n    vm.loadTimeStampingUsers = loadTimeStampingUsers;\n    vm.loadTimeStampingDaysForUser = loadTimeStampingDaysForUser;\n    vm.openTimeStampsAdministrationModal = openTimeStampsAdministrationModal;\n    vm.openNewTimeStampDayModal = openNewTimeStampDayModal;\n    vm.attestAll = attestAll;\n    vm.attestTimeStampingDay = attestTimeStampingDay;\n    vm.unattestTimeStampingDay = unattestTimeStampingDay;\n    vm.getNotificationStyle = getNotificationStyle;\n    vm.mayAttestAll = AuthService.canAccess('timeStamping', 'update');\n\n    vm.startDate = new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0,0);\n    vm.endDate = today;\n    vm.newTimeStampDayDate = today;\n    vm.dateDifference = dateDifference;\n\n    vm.showTimeStampsForDay = showTimeStampsForDay;\n    vm.timeStampsForDay = [];\n    vm.captureTimeStampsGrid = captureTimeStampsGrid;\n    vm.getHoursAndMinutes = getHoursAndMinutes;\n    vm.handleTimeStampDayCellEditEnded = handleTimeStampDayCellEditEnded;\n    vm.handleTimeStampCellEditEnding = handleTimeStampCellEditEnding;\n    vm.toggleTimeStampDayNotification = toggleTimeStampDayNotification;\n    vm.showTimeReports = false;\n    vm.newTimeReportDate = new Date();\n    vm.isValidNewTimeReportDate = isValidNewTimeReportDate;\n    vm.captureNewTimeReportDatePicker = captureNewTimeReportDatePicker;\n    vm.addTimeReport = addTimeReport;\n    vm.captureTimeReportsGrid = captureTimeReportsGrid;\n    vm.getExcelPrintout = getExcelPrintout;\n\n    activate();\n\n    function activate() {\n        if (vm.locations.length > 0) {\n            vm.location = vm.locations[0];\n        }\n\n        $scope.$watch(function() { return vm.startDate; }, function() {\n            if (startDateInitialized) {\n                searchTermChange();\n            } else {\n                startDateInitialized = true;\n            }\n        });\n        $scope.$watch(function() { return vm.endDate; }, function() {\n            if (endDateInitialized) {\n                searchTermChange();\n            } else {\n                endDateInitialized = true;\n            }\n        });\n        $scope.$watch(function() { return vm.location.id; },\n                      function() { searchTermChange(); });\n\n        $scope.$watch(function() { return vm.newTimeReportDate; },\n                      function() {\n                          console.log(\"vm.newTimeReportDate changed\");\n                      });\n    }\n\n    function searchTermChange() {\n        vm.currentPage = 1;\n        vm.timeReports.length = 0;\n        vm.timeStampsForDay.length = 0;\n        loadTimeStampingUsers();\n        vm.showTimeReports = false;\n    }\n\n    function loadTimeStampingUsers() {\n        loadSpinnerService.start('mainSpinner');\n        TimeStampingApiService.getTimeStampingUsers(vm.startDate, vm.endDate, vm.location.id, vm.currentPage, vm.itemsPerPage, vm.searchTerm).then(function(response) {\n            vm.timeStampingUsers = response.data.data;\n            vm.totalItems = response.data.totalItems;\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function loadTimeStampingDaysForUser(user) {\n        if (!AuthService.canAccess('timeStamping', 'update')) { return; }\n        lastSelectedUser = user;\n\n        TimeStampingApiService.getTimeReports(vm.startDate, vm.endDate, user.id).then(function(response) {\n            vm.timeReports = _.sortBy(response.data, function(rep) { return rep.timeStampDay.date; });\n            vm.showTimeReports = true;\n            console.log(\"vm.timeReports:\");\n            console.log(vm.timeReports);\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function openTimeStampsAdministrationModal(timeStampDay) {\n        if (timeStampDay.id !== 0) {\n            TimeStampsAdministrationDialog.showDialog(timeStampDay.id, vm.location.id, lastSelectedUser.id).then(function(response) {\n                console.log(\"Modal closed. Response was:\");\n                console.log(response);\n                loadTimeStampingDaysForUser(lastSelectedUser);\n            }, function(error) {\n                console.log(\"Modal canceled. Response was:\");\n                console.log(error);\n                loadTimeStampingDaysForUser(lastSelectedUser);\n            });\n        } else {\n            openNewTimeStampDayModal(timeStampDay.date);\n        }\n    }\n\n    function openNewTimeStampDayModal(date) {\n        TimeStampsAdministrationDialog.showDialogNewDate(date, vm.location.id, lastSelectedUser.id).then(function(result) {\n            console.log(\"Modal result was:\");\n            console.log(result);\n            loadTimeStampingDaysForUser(lastSelectedUser);\n        }, function(error) {\n            console.log(error);\n            loadTimeStampingDaysForUser(lastSelectedUser);\n        });\n    }\n\n    function attestAll() {\n        var timeStampingDayIds = [];\n\n        _.forEach(vm.timeReports, function(report) {\n            timeStampingDayIds.push(report.timeStampDay.id);\n        });\n\n        TimeStampingApiService.attestTimeStampDays(timeStampingDayIds).then(function(response) {\n            vm.timeStampingDays.length = 0;\n            vm.timeStampingDays = [];\n            searchTermChange();\n            loadTimeStampingDaysForUser(lastSelectedUser);\n        });\n    }\n\n    function attestTimeStampingDay(timeStampDay) {\n        if (!AuthService.canAccess('timeStamping', 'update')) { return; }\n        loadSpinnerService.start('mainSpinner');\n        TimeStampingApiService.attestTimeStampDays([timeStampDay.id]).then(function(response) {\n            loadTimeStampingDaysForUser(lastSelectedUser);\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function unattestTimeStampingDay(timeStampDay) {\n        if (!AuthService.canAccess('timeStamping', 'update')) { return; }\n        loadSpinnerService.start('mainSpinner');\n        TimeStampingApiService.unattestTimeStampDays([timeStampDay.id]).then(function(response) {\n            loadTimeStampingDaysForUser(lastSelectedUser);\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function dateDifference(date1, date2) {\n        var d1 = new Date(\"2015-01-01 \" + date1);\n        var d2 = new Date(\"2015-01-01 \" + date2);\n        var diff = d1 - d2;\n        var dt = new Date(diff);\n        var stringHours = _.padStart(dt.getHours() - 1, 2, '0');\n        var stringMinutes = _.padStart(dt.getMinutes(), 2, '0');\n        var stringRepresentation = stringHours + \":\" + stringMinutes;\n\n        return stringRepresentation;\n    }\n\n    function showTimeStampsForDay(timeStampDay) {\n        vm.timeStampsForDay.length = 0;\n        _.forEach(timeStampDay.userTimeStamps, function(stamp) {\n            vm.timeStampsForDay.push(stamp);\n        });\n\n        timeStampsGrid.invalidate();\n        timeStampsGrid.collectionView.refresh();\n    }\n\n    function getHoursAndMinutes(dt) {\n        var date = new Date(dt);\n        var hours = _.padStart(date.getHours(), 2, '0');\n        var minutes = _.padStart(date.getMinutes(), 2, '0');\n\n        return hours + \":\" + minutes;\n    }\n\n    function handleTimeStampDayCellEditEnded() {\n        var reportsToSend = [];\n        _.forEach(vm.timeReports, function(report) {\n            var matchingCopy = _.find(timeReportsCopy, function(reportCopy) {\n                return reportCopy.id === report.id;\n            });\n            if (report.workTime !== matchingCopy.workTime || report.breakTime !== matchingCopy.breakTime) {\n                reportsToSend.push(report);\n            }\n        });\n\n        if (reportsToSend.length !== 0) {\n            loadSpinnerService.start('mainSpinner');\n            var promises = [];\n            _.forEach(reportsToSend, function(report) {\n                var promise = TimeStampingApiService.updateTimeReport(report);\n                promises.push(promise);\n            });\n\n            $q.all(promises).then(function(responses) {\n                _.forEach(responses, function(response) {\n                    var matchingReport = _.find(vm.timeReports, function(report) {\n                        return report.id === response.data.id;\n                    });\n                    matchingReport.workTime = response.data.workTime;\n                    matchingReport.breakTime = response.data.breakTime;\n                });\n            }, function(error) {\n                ToasterService.showError($translate.instant('error.wrongformat'));\n            }).finally(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n\n    }\n\n    function handleTimeStampCellEditEnding() {\n        timeReportsCopy = angular.copy(vm.timeReports);\n    }\n\n    function toggleTimeStampDayNotification(timeReport) {\n        timeReport.timeStampDay.notify = !timeReport.timeStampDay.notify;\n\n        loadSpinnerService.start('mainSpinner');\n        TimeStampingApiService.updateTimeReport(timeReport).then(function(response) {\n            timeReport.timeStampDay.notify = response.data.timeStampDay.notify;\n        }, function(error) {\n            ToasterService.showError(error);\n            timeReport.timeStampDay.notify = !timeReport.timeStampDay.notify;\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function isValidNewTimeReportDate() {\n        var isWithinValidInterval = false;\n\n        var startOfToday = moment().startOf('day');\n        // Selected date needs to be between the start date and the end date\n        if (vm.newTimeReportDate <= vm.endDate &&\n            vm.newTimeReportDate >= vm.startDate &&\n            vm.newTimeReportDate < startOfToday\n            ) {\n            isWithinValidInterval = true;\n        }\n\n        var listOfAddedDates = [];\n        _.forEach(vm.timeReports, function(report) {\n            var dateString = moment(report.timeStampDay.date).format(\"YYYY-MM-DD\");\n            listOfAddedDates.push(dateString);\n        });\n\n        var selectedDate = moment(vm.newTimeReportDate).format(\"YYYY-MM-DD\");\n\n        if (isWithinValidInterval &&\n            !_.find(listOfAddedDates, function(dateString) { return dateString === selectedDate; })) {\n            return true;\n        }\n\n        return false;\n    }\n\n    function addTimeReport() {\n        var newTimeReport = {\n            timeStampDay: {\n                date: moment(vm.newTimeReportDate).format(\"YYYY-MM-DD\"),\n                user: {\n                    id: lastSelectedUser.id\n                }\n            }\n        };\n\n        loadSpinnerService.start('mainSpinner');\n        TimeStampingApiService.createTimeReport(newTimeReport).then(function(response) {\n            var allTimeReports = [];\n            _.forEach(vm.timeReports, function(rep) { allTimeReports.push(rep); });\n            allTimeReports.push(response.data);\n            allTimeReports = _.sortBy(allTimeReports, function(rep) {\n                return rep.timeStampDay.date;\n            });\n            vm.timeReports = allTimeReports;\n        }, function(error) {\n            ToasterService.showError($translate.instant('common.error'));\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getExcelPrintout() {\n        var requestData = {\n            startDate: vm.startDate,\n            endDate: vm.endDate,\n            userIds: [lastSelectedUser.id]\n        };\n\n        TimeStampingApiService.downloadExcelFile(requestData);\n    }\n\n    function captureTimeReportsGrid(s) {\n        timeReportsGrid = s;\n    }\n\n    function captureNewTimeReportDatePicker(s) {\n        newTimeReportDatePicker = s;\n    }\n\n    function captureTimeStampsGrid(s) {\n        timeStampsGrid = s;\n    }\n\n    function getNotificationStyle(item) {\n        var style = {};\n        if (item.notify) {\n            style['background-color'] = \"yellow\";\n        }\n        return style;\n    }\n\n}\n\nangular.module('timestamp.timestampingmanagement', [])\n    .config(stateConfig)\n    .controller('TimeStampingManagementController', TimeStampingManagementController);\n","// @ngInject\nfunction stateConfig($stateProvider) {\n    $stateProvider.state('contacts.timestampingusers', {\n        url: '/timestampingusers',\n        views: {\n            \"contactList@contacts\": {\n                templateUrl: 'main/timestamp/timestampingusers/timestampingusers.tpl.html',\n                controller: 'TimeStampingUsersController as vm'\n            }\n        },\n        resolve: {\n            users: usersResolver\n        }\n    });\n}\n\n// @ngInject\nfunction usersResolver(TimeStampingApiService) {\n    return TimeStampingApiService.getTimeStampingUsers();\n}\n\n// @ngInject\nfunction TimeStampingUsersController($scope, $state, users) {\n    var vm = this;\n\n    vm.userList = users.data;\n    vm.selectedUserId = 0;\n    vm.selectUser = selectUser;\n\n    console.log(\"TimeStampingUsers:\");\n    console.log(users.data);\n\n    activate();\n\n    function activate() {\n        $scope.$watch(function() { return $state.params.userId; }, function(newValue, oldValue) {\n            vm.selectedUserId = parseInt($state.params.userId, 10);\n        });\n    }\n\n    function selectUser(user) {\n        $state.go('contacts.timestampingusers.timestamping', {userId: user.id});\n    }\n\n    function generateUserList(users) {\n        var list = [];\n\n        _.forEach(users,function(user) {\n            var userCopy = _.clone(user);\n            list.push(userCopy);\n        });\n\n        return _.sortBy(list, ['firstName']);\n    }\n\n}\n\nangular.module('timestamp.timestampingusers', [])\n    .config(stateConfig)\n    .controller('TimeStampingUsersController', TimeStampingUsersController);\n","// @ngInject\nfunction UserTimeStampingDialogService($uibModal, TimeStampingApiService) {\n\n    return {\n        showDialog: showDialog,\n        showDialogLoginless: showDialogLoginless\n    };\n\n    function showDialog() {\n\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: false,\n            controller: 'UserTimeStampingDialogServiceController as vm',\n            templateUrl: 'main/timestamp/userTimeStampingDialog/userTimeStampingDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            locations: function() {\n                return TimeStampingApiService.getLocations();\n            },\n            previousTimeStampDays: function() {\n                return TimeStampingApiService.getLatestTimeStampDays(5);\n            },\n            totalTimeThisMonth: function() {\n                var now = new Date();\n                var startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1, 3, 0, 0, 0);\n                return TimeStampingApiService.getWorkingTime(startOfMonth, now);\n            },\n            loginless: function() {\n                return false;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n\n    function showDialogLoginless() {\n\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: false,\n            controller: 'UserTimeStampingDialogServiceController as vm',\n            templateUrl: 'main/timestamp/userTimeStampingDialog/userTimeStampingDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            locations: function() {\n                return TimeStampingApiService.getLocations();\n            },\n            previousTimeStampDays: function() {\n                return TimeStampingApiService.getLatestTimeStampDays(5);\n            },\n            totalTimeThisMonth: function() {\n                var now = new Date();\n                var startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1, 3, 0, 0, 0);\n                return TimeStampingApiService.getWorkingTime(startOfMonth, now);\n            },\n            loginless: function() {\n                return true;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction UserTimeStampingDialogServiceController($rootScope, $uibModalInstance, $scope, $interval, locations, totalTimeThisMonth,\n    previousTimeStampDays, TimeStampingApiService, AuthService, loginless, $translate, ToasterService) {\n    var vm = this;\n\n    var stampHistoryGrid = {};\n    var timeUpdatePromise = {};\n    var jqCurrentTimeElement = $(\"#currentTimeSection\");\n\n    var timeStampDaysGrid = {};\n    vm.buttonsAreDisabled = false;\n\n\n    vm.currentUser = {};\n\n    vm.locations = locations;\n\n    vm.previousTimeStampDays = _.sortBy(previousTimeStampDays.data, 'date').reverse();\n    vm.previousTimeStamps = (vm.previousTimeStampDays.length !== 0) ?\n                            _.sortBy(vm.previousTimeStampDays[0].userTimeStamps, 'dateTime').reverse() :\n                            [];\n    vm.totalTimeThisMonth = totalTimeThisMonth.data;\n\n    vm.stampIn = stampIn;\n    vm.stampOut = stampOut;\n    vm.captureStampHistoryGrid = captureStampHistoryGrid;\n    vm.captureTimeStampDaysGrid = captureTimeStampDaysGrid;\n    vm.updateTimeStamp = updateTimeStamp;\n    vm.changeDisplayedTimeStampDay = changeDisplayedTimeStampDay;\n    vm.updateTimeStampDay = updateTimeStampDay;\n    vm.currentLocalTime = new Date();\n\n    vm.closeModal = closeModal;\n\n    vm.stampInDisabled = false;\n    vm.stampOutDisabled = false;\n\n    vm.stampCreationRequest = {\n        note: \"\",\n        location: (vm.locations != null && vm.locations.length !== 0) ? vm.locations[0] : {}\n    };\n\n    vm.isLoginLessTimeStamping = loginless;\n\n    activate();\n\n    function activate() {\n        setTimeStampButtonsAvailability();\n\n        timeUpdatePromise = $interval(updateLocalTime, 1000);\n\n        if (vm.isLoginLessTimeStamping) {\n            TimeStampingApiService.getMe().then(function(response) {\n                vm.currentUser = response;\n                if (!$scope.$$phase) {\n                    $scope.$apply();\n                }\n            });\n        } else {\n            vm.currentUser = $rootScope.currentUser;\n        }\n\n        if (vm.isLoginLessTimeStamping) {\n            AuthService.getUser().then(function(response) {\n            });\n        }\n    }\n\n    function updateLocalTime() {\n        vm.currentLocalTime = new Date();\n    }\n\n    function stampIn() {\n        vm.buttonsAreDisabled = true;\n        $uibModalInstance.startLoadingSpinner();\n        console.log(\"Stamping in...\");\n        TimeStampingApiService.stampIn(vm.stampCreationRequest).then(function() {\n            getPreviousTimeStamps();\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError(error);\n        }).finally(function() {\n            $uibModalInstance.stopLoadingSpinner();\n            vm.buttonsAreDisabled = false;\n        });\n    }\n\n    function stampOut() {\n        vm.buttonsAreDisabled = true;\n        $uibModalInstance.startLoadingSpinner();\n        console.log(\"Stamping out...\");\n        TimeStampingApiService.stampOut(vm.stampCreationRequest).then(function(reponse) {\n            getPreviousTimeStamps();\n\n            var now = new Date();\n            var startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1, 3, 0, 0, 0);\n            return TimeStampingApiService.getWorkingTime(startOfMonth, now).then(function(response) {\n                vm.totalTimeThisMonth = response.data;\n            }, function(error) {\n                console.log(error);\n                ToasterService.showError(error);\n            });\n        }, function(error) {\n            console.log(error);\n            ToasterService.showError(error);\n        }).finally(function() {\n            $uibModalInstance.stopLoadingSpinner();\n            vm.buttonsAreDisabled = false;\n        });\n    }\n\n    function getPreviousTimeStamps() {\n        TimeStampingApiService.getLatestTimeStampDays(5).then(function(response) {\n            vm.previousTimeStampDays = _.sortBy(response.data, 'date').reverse();\n            vm.previousTimeStamps = _.sortBy(vm.previousTimeStampDays[0].userTimeStamps, 'dateTime').reverse();\n            setTimeStampButtonsAvailability();\n        }, function(error) {\n            console.log(error);\n        });\n    }\n\n    function captureStampHistoryGrid(s) {\n        stampHistoryGrid = s;\n    }\n\n    function updateTimeStampDay(timeStampDay) {\n        if (timeStampDay.note !== \"\") {\n            timeStampDay.notify = true;\n        }\n        $uibModalInstance.startLoadingSpinner();\n        TimeStampingApiService.updateTimeStampDay(timeStampDay).then(function(response) {\n            console.log(\"Successfully updated the timeStampDay\");\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            $uibModalInstance.stopLoadingSpinner();\n        });\n    }\n\n    function changeDisplayedTimeStampDay(timeStampDay) {\n        vm.previousTimeStamps = _.sortBy(timeStampDay.userTimeStamps, 'dateTime').reverse();\n    }\n\n    function captureTimeStampDaysGrid(s) {\n        timeStampDaysGrid = s;\n    }\n\n    function updateTimeStamp(timeStamp) {\n        console.log(\"Timestamp to update:\");\n        console.log(timeStamp);\n    }\n\n    function closeModal() {\n        $interval.cancel(timeUpdatePromise);\n        if (vm.isLoginLessTimeStamping) {\n            AuthService.logOut();\n        }\n        $uibModalInstance.close();\n    }\n\n    function setTimeStampButtonsAvailability() {\n        console.log(\"Getting current type\");\n        var orderedTimeStamps = _.sortBy(vm.previousTimeStamps, 'dateTime').reverse();\n        var currentTimeStampSystemType = \"\";\n        if (orderedTimeStamps[0] !== undefined) {\n            currentTimeStampSystemType = orderedTimeStamps[0].timeStampType.timeStampSystemType;\n        }\n\n        if (currentTimeStampSystemType === 'in') {\n            vm.stampInDisabled = true;\n            vm.stampOutDisabled = false;\n        } else if (currentTimeStampSystemType === 'out') {\n            vm.stampInDisabled = false;\n            vm.stampOutDisabled = true;\n        } else {\n            vm.stampInDisabled = false;\n            vm.stampOutDisabled = true;\n        }\n    }\n\n}\n\nangular\n    .module('timestamp.userTimeStamping', [])\n    .service('UserTimeStampingDialogService', UserTimeStampingDialogService)\n    .controller('UserTimeStampingDialogServiceController', UserTimeStampingDialogServiceController);\n","import { SignalDispatcher } from 'ste-signals';\nimport { SimpleEventDispatcher } from 'ste-simple-events';\nimport { ArticleColours } from '../react/product/colourChange';\n\nexport const angularEvents = {\n  // Without data\n  fooBar: new SignalDispatcher(),\n  fooBar2: new SimpleEventDispatcher<number>(),\n  isEditing: new SimpleEventDispatcher<boolean>(),\n  saveArticle: new SignalDispatcher(),\n  articleColoursHasChanged: new SimpleEventDispatcher<ArticleColours>()\n};\n\n// Example\nconst unsubscribe = angularEvents.fooBar2.subscribe((a) => { console.log(a)});\nangularEvents.fooBar2.dispatch(3);\nunsubscribe();\n\n// =============================\n// check ste-simple-events docs\n// =============================","import { ReactElement } from 'react';\nimport { SignalDispatcher } from 'ste-signals';\n\nexport interface ReactElementWithContainer {\n  element: ReactElement;\n  container: HTMLElement;\n}\n\nlet elements: readonly ReactElementWithContainer[] = [];\nconst updateSignal = new SignalDispatcher();\n\nexport function getElements() {\n  return elements;\n}\n\nexport function addElement(element: ReactElementWithContainer) {\n  if (elements.some((e) => e.container === element.container)) {\n    throw new Error('Container already has an element');\n  }\n\n  elements = [...elements, element];\n  updateSignal.dispatch();\n}\n\nexport function removeElement(element: ReactElementWithContainer) {\n  elements = elements.filter((e) => e !== element);\n  updateSignal.dispatch();\n}\n\nexport function subscribe(cb: () => void) {\n  return updateSignal.subscribe(cb);\n}\n","import { SignalDispatcher } from 'ste-signals';\nimport { SimpleEventDispatcher } from 'ste-simple-events';\nimport { MetaField } from '../react/MetaFields';\nimport { MetaFieldValue } from '../react/MetaFieldValues';\nimport { ArticleColours } from '../react/product/colourChange'\n\nexport const reactEvents = {\n  fooBar: new SignalDispatcher(),\n  fooBar2: new SimpleEventDispatcher<number>(),\n  saveMetaFields: new SimpleEventDispatcher<MetaField[]>(),\n  saveMetaFieldValues: new SimpleEventDispatcher<MetaFieldValue[]>(),\n  saveColourChange: new SimpleEventDispatcher<ArticleColours>()\n};\n\n// Example\nconst unsubscribe = reactEvents.fooBar2.subscribe((a) => { console.log(a)});\nreactEvents.fooBar2.dispatch(2);\nunsubscribe();\n","angular\n    .module('components', [\n        'components.userReport',\n        'components.caOrderSearchResult',\n        'components.caBudgetImport',\n        'components.caAddressForm',\n        'components.caContactInfoForm',\n        'components.caNewAddressForm',\n        'components.caNewContactInfoForm',\n        'components.caDiscountMultiselect',\n        'components.caBarcodeScanningInput',\n        'components.caOrderArticles',\n        'components.caOrderMetaData',\n        'components.caOrderRowsDelivery',\n        'components.caOrderRowsEdit',\n        'components.caOrderScannerNavigation',\n        'components.caOrderTotals',\n        'components.caOrderArticleDeliveries',\n        'components.caOrderArticleRows',\n        'components.caOrderContent',\n        'components.caPurchaseOrderArticlesSummaryGrid',\n        'components.caOpenToBuyGrid',\n        'components.caPurchaseOrderDistributionGrid',\n        'components.caPurchaseOrderExtraOptions',\n        'components.caPurchaseOrderSingleArticleSummaryGrid',\n        'components.caArticleVariantsGrid',\n        'components.caArticleVariantsGridCell',\n        'components.caArticleSearchMultiSelect',\n        'components.caItemGroupInline',\n        'components.caArticleSelection',\n        'components.caPricelistGrid',\n        'components.caPriceRangeInput',\n        'components.caVolumeDiscountSelector',\n        'components.caImportFileList',\n        'components.caMapOrDate',\n        'components.caMapOrSelect',\n        'components.caImportEditorSummary',\n        'components.caImportEditorTextDropdown',\n        'components.caImportEditorValidationErrors',\n        'components.caImportRowsGrid',\n        'components.createResellerOrderArticlesAmount',\n        'components.createResellerOrderArticlesOverview',\n        'components.createResellerOrderArticlesQuantity',\n        'components.caResellerOrderProductSearchMultiSelect',\n        'components.createResellerOrderArticlesAmount',\n        'components.createResellerReturnOrderArticlesOverview',\n        'components.createResellerReturnOrderArticlesQuantity',\n        'components.caResellerReturnOrderProductSearchMultiSelect'\n    ]);\n","var module = angular.module('components');\nmodule.component('wgtIntegrationStatus', {\n    templateUrl: 'components/dashboard/widgets/wgtIntegrationStatus/wgtIntegrationStatus.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        item: '<'\n    },\n    controller: ['DashboardApiService','$rootScope','$scope','$translate','$timeout',controller]\n});\n\n\nfunction controller(DashboardApiService,$rootScope, $scope,$translate, $timeout)  {\n    var vm = this;\n    var reqPromise = null;\n\n    vm.widgetData = null;\n    vm.isLoaded = false;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    function onInit() {\n    }\n\n    function onChanges(changes) {\n        loadWidget();\n    }\n\n    function loadWidget() {\n\n        DashboardApiService\n            .getWidgetData(vm.item.name, vm.item.setting)\n            .then(onNewData,onNewDataError);\n    }\n\n    function onNewData(response) {\n        vm.widgetData = response.data;\n        vm.isLoaded = true;\n        vm.hasError = false;\n\n        reqPromise = $timeout(loadWidget, 30000);\n    }\n\n    function onNewDataError(response) {\n        vm.hasError = true;\n\n        reqPromise = $timeout(loadWidget, 60000);\n    }\n\n    function onDestroy() {\n        if (reqPromise != null) {\n            $timeout.cancel(reqPromise);\n        }\n    }\n\n}\n","var module = angular.module('components');\nmodule.component('wgtRefunds', {\n    templateUrl: 'components/dashboard/widgets/wgtRefunds/wgtRefunds.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        item: '<'\n    },\n    controller: ['DashboardApiService','$rootScope','$state',controller]\n});\n\n\nfunction controller(DashboardApiService,$rootScope, $state)  {\n    var vm = this;\n\n    vm.widgetData = null;\n    vm.isLoaded = false;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.gotoArticle = gotoArticle;\n\n    function onInit() {\n        $rootScope.$on(\"widget.changed\",function(event, item) {\n            if (vm.item.id === item.id) {\n                vm.item = item;\n                loadWidget();\n            }\n        });\n    }\n\n    function gotoArticle(articleId) {\n        $state.go('stock.articlesearch.article', { articleId: articleId });\n    }\n\n    function onChanges(changes) {\n        loadWidget();\n    }\n\n    function loadWidget() {\n        vm.isLoaded = false;\n        DashboardApiService\n            .getWidgetData(vm.item.name, vm.item.setting)\n            .then(onNewData,onNewDataError);\n    }\n\n\n    function onNewData(response) {\n        vm.widgetData = response.data;\n        vm.isLoaded = true;\n        vm.hasError = false;\n    }\n\n    function onNewDataError(response) {\n        vm.hasError = true;\n    }\n\n    function onDestroy() {\n\n    }\n\n}\n","var module = angular.module('components');\nmodule.component('wgtSeasonalityCurve', {\n    templateUrl: 'components/dashboard/widgets/wgtSeasonalityCurve/wgtSeasonalityCurve.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        item: '<'\n    },\n    controller: ['DashboardApiService','$rootScope','$scope','$translate',controller]\n});\n\n\nfunction controller(DashboardApiService,$rootScope, $scope,$translate)  {\n    var vm = this;\n\n    vm.widgetData = null;\n    vm.isLoaded = false;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.selectedmaingroup = null;\n    vm.chart = {};\n    vm.maingroups = [];\n\n    function onInit() {\n        $rootScope.$on(\"widget.changed\",function(event, item) {\n            if (vm.item.id === item.id) {\n                vm.item = item;\n                loadWidget();\n            }\n        });\n\n        $scope.$watch('vm.selectedmaingroup', function() {\n            updateSetting();\n            refreshChartModel();\n        });\n    }\n\n    function updateSetting() {\n        if (!vm.item) { return; }\n        if (!vm.selectedmaingroup) { return; }\n        if (vm.item.setting !== vm.selectedmaingroup.id) {\n            vm.item.setting = vm.selectedmaingroup.id;\n        }\n    }\n\n    function onChanges(changes) {\n        loadWidget();\n    }\n\n    function loadWidget() {\n        vm.isLoaded = false;\n        if (!vm.item) { return; }\n        DashboardApiService\n            .getWidgetData(vm.item.name, vm.item.setting)\n            .then(onNewData,onNewDataError);\n    }\n\n\n    function onNewData(response) {\n        vm.widgetData = response.data;\n        vm.isLoaded = true;\n        vm.hasError = false;\n\n        vm.maingroups = [];\n\n        _.forEach(vm.widgetData.maingroups, function(maingroup) {\n            maingroup.label = maingroup.code + ' ' + maingroup.description;\n            vm.maingroups.push(maingroup);\n        });\n        var setting = (vm.item) ? parseInt(vm.item.setting) : 0;\n\n        var maingroupInSetting = _.filter(vm.maingroups, { id: setting});\n\n        if (maingroupInSetting.length > 0) {\n            vm.selectedmaingroup = maingroupInSetting[0];\n        } else {\n            if (vm.maingroups.length) {\n                vm.selectedmaingroup = vm.maingroups[0];\n            }\n        }\n\n        refreshChartModel();\n\n\n    }\n\n    function refreshChartModel() {\n        if (!vm.widgetData) { return; }\n        if (!vm.widgetData.maingroups) { return; }\n        if (!vm.selectedmaingroup) { return; }\n\n        var months = $translate.instant('common.months.short').toUpperCase().split(',');\n\n        if (months.length < 12) {\n             months = ['JAN', 'FEB', 'MAR', 'APR', 'MAJ', 'JUN', 'JUL', 'AUG', 'SEP', 'OKT', 'NOV', 'DEC'];\n        }\n\n        vm.chart.labels = months;\n\n        var data = [];\n        var maingroups = [];\n\n        var maingroup = vm.selectedmaingroup;\n\n        var points = _.orderBy(_.filter(vm.widgetData.data, { mainGroupId: maingroup.id}),'dateLevelValue');\n        data.push(_.map(points, 'normalMagnitude'));\n        data.push(_.map(points, 'totalMagnitude'));\n        data.push(_.map(points, 'discountedMagnitude'));\n\n        vm.chart.series = [\n            $translate.instant('seasonalitycurve.normal').toUpperCase(),\n            $translate.instant('seasonalitycurve.total').toUpperCase(),\n            $translate.instant('seasonalitycurve.discounted').toUpperCase()\n            ];\n\n        vm.chart.data = data;\n\n        vm.chart.onClick = function (points, evt) {\n            console.log(points, evt);\n        };\n        vm.chart.datasetOverride = [{ yAxisID: 'y-axis-1' }];\n        vm.chart.options = {\n            scales: {\n            yAxes: [\n                {\n                id: 'y-axis-1',\n                type: 'linear',\n                display: true,\n                position: 'left',\n                ticks: {\n                    max: 0.7\n                }\n                }\n            ],\n            beginAtZero: true\n            }\n        };\n    }\n\n    function onNewDataError(response) {\n        vm.hasError = true;\n    }\n\n    function onDestroy() {\n\n    }\n\n}\n","var module = angular.module('components');\nmodule.component('wgtTopSold', {\n    templateUrl: 'components/dashboard/widgets/wgtTopSold/wgtTopSold.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        item: '<'\n    },\n    controller: ['DashboardApiService','$rootScope', '$state',controller]\n});\n\n\nfunction controller(DashboardApiService,$rootScope, $state)  {\n    var vm = this;\n\n    vm.widgetData = null;\n    vm.isLoaded = false;\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.gotoArticle = gotoArticle;\n\n    function onInit() {\n        $rootScope.$on(\"widget.changed\",function(event, item) {\n            if (vm.item.id === item.id) {\n                vm.item = item;\n                loadWidget();\n            }\n        });\n    }\n\n    function onChanges(changes) {\n        loadWidget();\n    }\n\n    function gotoArticle(articleId) {\n        $state.go('stock.articlesearch.article', { articleId: articleId });\n    }\n\n    function loadWidget() {\n        vm.isLoaded = false;\n        DashboardApiService\n            .getWidgetData(vm.item.name, vm.item.setting)\n            .then(onNewData,onNewDataError);\n    }\n\n\n    function onNewData(response) {\n        vm.widgetData = response.data;\n        vm.isLoaded = true;\n        vm.hasError = false;\n    }\n\n    function onNewDataError(response) {\n        vm.hasError = true;\n    }\n\n    function onDestroy() {\n\n    }\n\n}\n","var module = angular.module('components');\nmodule.component('caAddress', {\n    templateUrl: 'components/genericcomponents/address.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        address: '=',\n        isEditing: '<',\n        removeAddress: '&',\n        showTools: '<'\n    },\n    controller: [addressController]\n});\n\nfunction addressController() {\n    var vm = this;\n\n    vm.remove = remove;\n    if (vm.showTools === undefined) { vm.showTools = true; }\n\n    function remove() {\n        vm.removeAddress();\n    }\n}\n","var module = angular.module('components');\nmodule.component('caArticleList', {\n    templateUrl: 'components/genericcomponents/articlelist.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        articles: '=',\n        filter: '=',\n        currentPage: '=',\n        pageSize: '=',\n        onArticleSelected: '&',\n        onNew: '&',\n        showNewButton: '<',\n        showFilterDropdown: '<',\n        match : '=',\n        inactive: '='\n    },\n    scope: true,\n    controller: ['$state', '$stateParams', '$rootScope', '$scope', 'ProductsApiService', 'loadSpinnerService', controller]\n});\n\nfunction controller($state, $stateParams, $rootScope, $scope, ProductsApiService, loadSpinnerService) {\n    var vm = this;\n    vm.$onChanges = onChanges;\n    vm.$onInit = onInit;\n\n    //Properties\n    vm.totalItems = [];\n    vm.filterDropdownIsVisisble = false;\n    vm.articleListIsVisible = true;\n    vm.selectedArticleId = $state.params.articleId === undefined ? 0 : parseInt($state.params.articleId,10);\n    vm.useElasticProductSearch = false;\n\n    //Methods\n    vm.loadArticles = loadArticles;\n    vm.selectArticle = selectArticle;\n    vm.getShowFilterDropDown = getShowFilterDropDown;\n    vm.getSearchTooltipText = getSearchTooltipText;\n    vm.searchTermChange = searchTermChange;\n    vm.goToNew = goToNew;\n    vm.forceReloadUrl = forceReloadUrl;\n    vm.toggleHideArticleList = toggleHideArticleList;\n\n    function onInit() {\n        searchTermChange();\n\n        loadArticles();\n\n        $scope.$watch(function() { return $state.params.articleId; }, function(newValue, oldValue) {\n            vm.selectedArticleId = parseInt($state.params.articleId,10);\n        });\n        var productChangedListener = $rootScope.$on('Product.Changed', function(event, response) {\n            loadArticles();\n        });\n        $scope.$on('$destroy', function() {\n            //Clean up usage of $rootScope listener when controller is destoyed\n            productChangedListener();\n        });\n    }\n\n    function onChanges(changes) {\n    }\n\n    function loadArticles() {\n        if(vm.isLoading) return;\n\n        vm.isLoading = true;\n\n        var companyId; // companyId = undefined\n        loadSpinnerService.start('mainSpinner');\n        var request = {\n            currentPage: vm.currentPage,\n            filter: vm.filter,\n            pageSize: vm.pageSize,\n            companyId: companyId,\n            showInactiveArticles: vm.inactive,\n            matchEntireSearchTerm: vm.match\n        };\n        \n        ProductsApiService.getProducts(request).then(function(response) {\n            vm.articles = response.data.results;\n            vm.totalItems = response.data.total;\n            vm.pageSize = response.data.limit;\n            vm.currentPage = response.data.page;\n\n            if (_.find(response.links, function(o) { return o.rel === 'show_elastic_search'; })) {\n                vm.useElasticProductSearch = true;\n            }\n\n            $stateParams.filter = vm.filter;\n            $stateParams.currentPage = vm.currentPage;\n            $stateParams.pageSize = vm.pageSize;\n            $stateParams.inactive = vm.inactive;\n            $stateParams.match = vm.match;\n        }).finally(function afterGetAllArticles() {\n            loadSpinnerService.stop('mainSpinner',{force: true});\n            if (vm.currentPage === 1 && vm.articles.length === 1 && vm.totalItems === 1) {\n                selectArticle(vm.articles[0]);\n            }\n\n            vm.isLoading = false;\n        });\n    }\n\n    function toggleHideArticleList(){\n        vm.articleListIsVisible = !vm.articleListIsVisible;\n        $state.params.showArticleList = vm.articleListIsVisible;\n    }\n\n    function getSearchTooltipText() {\n        var tooltipString = 'Sökning med partiella ord görs med en stjärna i slutet, ex. \"Ja*\" för \"Jacka\"';\n        if (!vm.useElasticProductSearch) { tooltipString = ''; }\n\n        return tooltipString;\n    }\n\n    function getShowFilterDropDown() {\n        return vm.showFilterDropdown && !vm.useElasticProductSearch;\n    }\n\n    function goToNew() {\n        vm.onNew();\n    }\n\n    function selectArticle(article) {\n        vm.onArticleSelected({\n            article: {\n                articleId: article.id,\n                searchTerms: {\n                    currentPage: vm.currentPage,\n                    pageSize: vm.pageSize,\n                    filter: vm.filter,\n                    inactive: vm.inactive,\n                    match: vm.match\n                }\n            }\n        });\n    }\n\n    function searchTermChange() {\n        if (vm.isLoading) { return; }\n\n        if ($stateParams.filter && $stateParams.filter !== vm.filter) {\n            vm.currentPage = 1;\n        }\n\n        vm.filter = vm.filter.replace(/#/g, \"\");\n\n        $stateParams.filter = vm.filter;\n        $stateParams.currentPage = vm.currentPage;\n        $stateParams.pageSize = vm.pageSize;\n        $stateParams.inactive = vm.inactive;\n        $stateParams.match = vm.match;\n\n        forceReloadUrl();\n\n        if (vm.filter.length > 2) {\n            loadArticles();\n        } else if (vm.filter.length === 0) {\n            loadArticles();\n        }\n    }\n\n    function forceReloadUrl(){\n        $state.go($state.current.name, \n        {\n            articleId: vm.selectedArticleId,\n            currentPage: vm.currentPage,\n            pageSize: vm.pageSize,\n            filter: vm.filter,\n            inactive: vm.inactive,\n            match: vm.match\n        },\n            {notify: false}\n        );\n    }\n}\n","var module = angular.module('components');\nmodule.component('caArticleSearchSingleSelect', {\n    templateUrl: 'components/genericcomponents/articlesearchsingleselect.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        pageSize: '<',\n        disabledBy: '<',\n        onArticleSelected: '&',\n        onArticleRemoved: '&'\n    },\n    controller: ['$q', '$scope', 'ProductsApiService', 'loadSpinnerService', 'ToasterService', controller]\n});\n\nfunction controller($q, $scope, ProductsApiService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.searchResultArticles = [];\n    vm.selectedArticle = undefined;\n    vm.currentPage = 1;\n\n    vm.refreshArticles = refreshArticles;\n    vm.selectArticle = selectArticle;\n    vm.removeArticle = removeArticle;\n\n    function onInit() {\n        if (!vm.pageSize) {\n            vm.pageSize = 20;\n        }\n\n        $scope.$on('clearArticleEvent', function(e) {\n            vm.selectedArticle = undefined;\n        });\n    }\n\n    function onChanges(changes) {\n        if (changes.disabledBy &&\n            changes.disabledBy.currentValue !== changes.disabledBy.previousValue &&\n            changes.disabledBy.currentValue === true) {\n            vm.selectedArticle = undefined;\n        }\n    }\n\n    function onDestroy() {\n    }\n\n    // Refreshes the contents of the drop-down-list of selectable articles.\n    function refreshArticles(filter) {\n        var companyId = null;\n        var showInactiveArticles = true;\n        var request = {\n            currentPage: vm.currentPage,\n            filter: filter,\n            pageSize: vm.pageSize,\n            companyId: companyId,\n            showInactiveArticles: showInactiveArticles\n        };\n        ProductsApiService.getProducts(request).then(function(response) {\n            vm.searchResultArticles = [];\n\n            for (var i = 0; i < response.data.results.length; i++) {\n                var article = response.data.results[i];\n                vm.searchResultArticles.push(article);\n            }\n        }, function(error) {\n            ToasterService.showError(error.errors);\n        });\n    }\n\n    function selectArticle() {\n        vm.onArticleSelected({article: vm.selectedArticle});\n    }\n\n    function removeArticle() {\n        vm.selectedArticle = undefined;\n        vm.onArticleRemoved();\n    }\n}\n","var module = angular.module('components');\nmodule.component('caConfirmButton', {\n    templateUrl: 'components/genericcomponents/confirmbutton.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        confirmTitle: '<',\n        disabledBy: '<',\n        onConfirmPressed: '&'\n    },\n    controller: ['GenericComponentService', controller]\n});\n\n\nfunction controller(GenericComponentService)  {\n    var vm = this;\n\n    vm.toggleConfirmationVisiblity = toggleConfirmationVisiblity;\n    vm.confirm = confirm;\n\n    function toggleConfirmationVisiblity() {\n        vm.confirmationVisible = !vm.confirmationVisible;\n    }\n\n    function confirm() {\n        vm.onConfirmPressed();\n    }\n}\n","var module = angular.module('components');\nmodule.component('caContactInfo', {\n    templateUrl: 'components/genericcomponents/contactinfo.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        contactInfo: '=',\n        isEditing: '<',\n        removeContactInfo: '&'\n    },\n    controller: [contactInfoController]\n});\n\nfunction contactInfoController() {\n    var vm = this;\n\n    vm.remove = remove;\n\n    function remove() {\n        vm.removeContactInfo();\n    }\n}\n","var module = angular.module('components');\nmodule.component('caErrorList', {\n    templateUrl: 'components/genericcomponents/errorlist.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        label: '<',\n        errorList: '<',\n        filterBy: '<'\n    },\n    scope: true,\n    controller: [controller]\n});\n\nfunction controller($scope) {\n    var vm = this;\n    vm.$onChanges = onChanges;\n    vm.$onInit = onInit;\n\n    //Properties\n    vm.filteredErrorList = vm.errorList;\n\n    //Methods\n\n    function onInit() {\n        filterList();\n    }\n\n    function onChanges(changes) {\n        if (changes.errorList) {\n            filterList();\n        }\n    }\n\n    function filterList() {\n        vm.filteredErrorList = vm.errorList;\n        if (vm.filterBy && vm.filterBy.length > 0) {\n            vm.filteredErrorList = [];\n            _.forEach(vm.errorList, function(error) {\n                if (error.code && error.code === vm.filterBy) {\n                    vm.filteredErrorList.push(error);\n                }\n            });\n        }\n    }\n}\n","var module = angular.module('components');\nmodule.component('caFormGroupRow', {\n    templateUrl: 'components/genericcomponents/formgrouprow.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        label: '<'\n    },\n    transclude: true\n});\n","var module = angular.module('components');\nmodule.component('caFormGroupRowOther', {\n    templateUrl: 'components/genericcomponents/formgrouprowother.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        label: '<'\n    },\n    transclude: true\n});\n","var module = angular.module('components');\n\nmodule.factory('GenericComponentService', Service);\n\nfunction Service() {\n\n    return {\n        resolveSelectRenderer: resolveSelectRenderer,\n        getSelectFilter: getSelectFilter\n    };\n\n\n    function getSelectFilter(query, filterBy) {\n        var filterKeys = null;\n        if (filterBy) {\n            filterKeys = {};\n            for (var index in filterBy) {\n                filterKeys[filterBy[index]] = true;\n            }\n        }\n\n        return function (item) {\n\n            if (!query) {\n                return true;\n            }\n            query = query.toLowerCase();\n\n            var keys = (filterKeys) ? filterKeys : item;\n\n            for (var key in keys) {\n                ///Exkludera att söka på id\n                if (key === 'id') {\n                    continue;\n                }\n\n                if (typeof key === \"string\") {\n                    var value = item[key];\n                    if (typeof value !== \"string\" || !value) {\n                        continue;\n                    }\n                    if (value.toLowerCase().indexOf(query) > -1) {\n                        return true;\n                    }\n                }\n            }\n\n\n            return false;\n        };\n    }\n\n    function resolveSelectRenderer(renderer) {\n        if (!renderer) {\n            return getRenderItemNone(renderer);\n        }\n        if (typeof renderer === 'string') {\n            return getRenderItemSingle(renderer);\n        }\n        if (renderer instanceof Array) {\n            return getRenderItemArray(renderer);\n        }\n\n        return getRenderItemNone(renderer);\n    }\n\n    function getRenderItemNone(renderer) {\n        return function(context, item) {\n            return '';\n        };\n    }\n\n    function getRenderItemArray(renderer) {\n        return function(context, item) {\n            var value = '';\n            if (!item) {\n                return '';\n            }\n            _.forEach(renderer, function(property) {\n                value+= (item[property]) ? item[property] + ' ' : '' + ' ';\n            });\n\n            return value;\n        };\n    }\n\n    function getRenderItemSingle(renderer) {\n        return function(context, item) {\n            if (!item) {\n                return '';\n            }\n\n            if (item[renderer] instanceof Date) {\n                return getDateStringRepresentation(item[renderer]);\n            }\n\n            return item[renderer];\n        };\n    }\n\n    function getDateStringRepresentation(date) {\n        var value = '';\n        var year = date.getFullYear();\n        var month = (date.getMonth().toString().length === 1) ? '0' + date.getMonth().toString() : date.getMonth().toString();\n        var day = (date.getDay().toString().length === 1) ? '0' + date.getDay().toString() : date.getDay().toString();\n        var hour = (date.getHours().toString().length === 1) ? '0' + date.getHours().toString() : date.getHours().toString();\n        var minutes = (date.getMinutes().toString().length === 1) ? '0' + date.getMinutes().toString() : date.getMinutes().toString();\n        value = year + '-' + month + '-' + day;\n\n        if (hour !== '00' && minutes !== '00') {\n            value += ' ' + hour + ':' + minutes;\n        }\n\n        return value;\n    }\n\n}\n","var module = angular.module('components');\nmodule.component('caMultiselect', {\n    templateUrl: 'components/genericcomponents/multiselect.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        model: '=',\n        lockChoice: '<',\n        choices: '<',\n        placeholder: '<',\n        itemRenderer: '<',\n        orderBy: '<',\n        disabledBy: '<'\n    },\n    controller: ['GenericComponentService',controller]\n});\n\n\nfunction controller(GenericComponentService)  {\n    var vm = this;\n\n    vm.$onChanges = onChanges;\n    vm.$onInit = onInit;\n\n    return;\n\n    function onInit() {\n        resolveRenderer();\n    }\n\n    function onChanges(changes) {\n        if (changes.itemRenderer) {\n             resolveRenderer();\n        }\n    }\n\n    function resolveRenderer() {\n        vm.renderItem = GenericComponentService.resolveSelectRenderer(vm.itemRenderer);\n    }\n\n}\n","var module = angular.module('components');\nmodule.component('caSearchListContactInfos', {\n    templateUrl: 'components/genericcomponents/searchlist/searchlist-contactinfo.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        contactInfos: '<'\n    }\n});\n","var module = angular.module('components');\nmodule.component('caSingleselect', {\n    templateUrl: 'components/genericcomponents/singleselect.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        model: '=',\n        choices: '<',\n        placeholder: '<',\n        itemRenderer: '<',\n        orderBy: '<',\n        filterBy: '<',\n        disabledBy: '<',\n        mandatory: '<' //Boolean: Tells the component to NOT add a default null value choice\n    },\n    controller: ['GenericComponentService', controller]\n});\n\n\nfunction controller(GenericComponentService)  {\n    var vm = this;\n\n    vm.$onChanges = onChanges;\n    vm.$onInit = onInit;\n\n    vm.filter = filter;\n\n    return;\n\n    function onInit() {\n        resolveRenderer();\n        addNullValueChoice();\n    }\n\n    function onChanges(changes) {\n        if (changes.itemRenderer) {\n             resolveRenderer();\n             addNullValueChoice();\n        }\n        if (changes.choices) {\n            addNullValueChoice();\n        }\n    }\n\n    function resolveRenderer() {\n        vm.renderItem = GenericComponentService.resolveSelectRenderer(vm.itemRenderer);\n    }\n\n    function filter(query) {\n        return GenericComponentService.getSelectFilter(query, vm.filterBy);\n    }\n\n    function addNullValueChoice() {\n        //If select is mandatory, do not add null value choice\n        if (vm.mandatory && vm.mandatory === true) {\n            return;\n        }\n\n        //Make sure there is a null value choice in the dropdown\n        if (vm.choices && vm.choices.length > 0) {\n            //Only add if not aleady present\n            if (!_.find(vm.choices, function(c) { return c.id === -1; })) {\n                var choiceCopy = { id: -1 };\n                if (vm.itemRenderer && Object.prototype.toString.call(vm.itemRenderer) === '[object Array]') {\n                    _.forEach(vm.itemRenderer, function(ir) {\n                        choiceCopy[ir] = ' ';\n                    });\n                } else if (vm.itemRenderer && typeof vm.itemRenderer === 'string') {\n                    choiceCopy[vm.itemRenderer] = ' ';\n                }\n\n                vm.choices.unshift(choiceCopy);\n            }\n        }\n    }\n}\n","var module = angular.module('components');\nmodule.component('caSortTableDataHeader', {\n    templateUrl: 'components/genericcomponents/sortingtabledataheader.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        orderBy: '=',\n        reverse: '=',\n        header: '<',\n        valueName: '<',\n    },\n    controller: ['$q', '$scope', '$translate', controller]\n});\n\nfunction controller($q, $scope, $translate) {\n    var vm = this;\n\n    vm.changeSortOrder = changeSortOrder;\n    vm.getTooltipText = getTooltipText;\n\n    function changeSortOrder(){\n        if(vm.orderBy === vm.valueName){\n            if(vm.reverse){\n                vm.orderBy = undefined;\n                vm.reverse = undefined;\n            }\n            else{\n                vm.reverse = true;\n            }\n        }\n        else{\n            vm.orderBy = vm.valueName;\n            vm.reverse = false;\n        }\n    }\n\n    function getTooltipText(){\n        var text = \"\";\n\n        if(vm.reverse === true && vm.orderBy === vm.valueName)\n            text += $translate.instant('common.reset');\n        else{\n            text += $translate.instant('analysis.sort') + \" \";\n            \n            text += vm.reverse === false && vm.orderBy === vm.valueName ? \n                        $translate.instant('analysis.sort.descending') : \n                        $translate.instant('analysis.sort.ascending')\n        }\n\n        return text;\n    }\n}\n","var module = angular.module('components');\nmodule.component('caVariantDetailSearchSingleSelect', {\n    templateUrl: 'components/genericcomponents/variantdetailsearchsingleselect.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        model: '=',\n        pageSize: '<',\n        disabledBy: '<',\n        onSelected: '&',\n        onRemoved: '&'\n    },\n    controller: ['$q', '$scope', '$timeout', 'ProductsApiService', 'loadSpinnerService', 'ToasterService', controller]\n});\n\nfunction controller($q, $scope, $timeout, ProductsApiService, loadSpinnerService, ToasterService) {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n\n    vm.searchResultVariantDetail = [];\n    vm.currentPage = 1;\n\n    vm.refresh = refresh;\n    vm.select = select;\n    vm.remove = remove;\n\n    function onInit() {\n        if (!vm.pageSize) {\n            vm.pageSize = 20;\n        }\n    }\n\n    function onChanges(changes) {\n        if (changes.disabledBy &&\n            changes.disabledBy.currentValue !== changes.disabledBy.previousValue &&\n            changes.disabledBy.currentValue === true) {\n            vm.model = undefined;\n        }\n    }\n\n    function onDestroy() {\n    }\n\n    // Refreshes the contents of the drop-down-list of selectable articles.\n    function refresh(filter) {\n        var request = {\n            currentPage: vm.currentPage,\n            filter: filter,\n            pageSize: vm.pageSize,\n            variantDetailType: 1\n        };\n        ProductsApiService.getVariantDetailOptionsPaged(request).then(function(response) {\n            vm.searchResultVariantDetail = [];\n\n            _.forEach(response.data.results, function(obj){\n                vm.searchResultVariantDetail.push(obj);\n            });\n\n        }, function(error) {\n            ToasterService.showError(error.errors);\n        });\n    }\n\n    function select() {\n        vm.onSelected();\n    }\n\n    function remove() {\n        vm.model = undefined;\n        $timeout(function() { vm.onRemoved();}, 100);\n    }\n}\n","// @ngInject\nfunction Service($q) {\n\n    var nodes = createMenuNodes();\n\n    var service = {};\n    service.getNavigationNodes = getNavigationNodes;\n\n    return service;\n\n    function getNavigationNodes() {\n        var deferred = $q.defer();\n\n        deferred.resolve(nodes);\n        return deferred.promise;\n    }\n\n\n    function createMenuNodes() {\n        var nav = { nodes: [] };\n\n        var dashboard = {\n            licenseModules: { baseModule: true },\n            stateLink: 'main.dashboard',\n            label: ['common.dashboard'],\n            iconClass: 'fa fa-dashboard',\n            nodes: []\n        };\n\n        var contacts = {\n            name: 'contacts',\n            label: ['common.contacts'],\n            iconClass: 'fa fa-users',\n            licenseModules: { baseModule: true },\n            claims: { user: { read: true }, location: { read: true }, company: { read: true }, role: { read: true } },\n            nodes: [\n                { stateLink: 'contacts.users', label: ['contacts.users'], licenseModules: { baseModule: true }, claims: { user: { read: true } } },\n                { stateLink: 'contacts.locations', label: ['contacts.locations'], licenseModules: { baseModule: true }, claims: { location: { read: true } } },\n                { stateLink: 'contacts.companies', label: ['contacts.companies'], licenseModules: { baseModule: true }, claims: { company: { read: true } } },\n                { stateLink: 'contacts.roles', label: ['contacts.roles'], licenseModules: { baseModule: true }, claims: { role: { read: true } } },\n                { stateLink: 'contacts.bulkoperation', label: ['contacts.bulkoperation'], licenseModules: { baseModule: true }, claims: { role: { read: true } } }\n            ]\n        };\n\n        var product = {\n            name: 'product',\n            label: ['common.products'],\n            iconClass: 'fa fa-cube',\n            licenseModules: { productModule: true },\n            claims: { article: { read: true }, brand: { read: true }, articlesOrdersImport: { read: true }, mainGroup: { read: true } },\n            nodes: [\n                { stateLink: 'product.articles', params: {currentPage: 1, pageSize: 20, filter: '', inactive: false, match: true }, label: ['article.articles'], licenseModules: { productModule: true }, claims: { article: { read: true } } },\n                //Deprecated #8046: { stateLink: 'product.priceListSearch', label: ['article.pricelist'], licenseModules: { productModule: true }, claims: { pricelist: { read: true } } },\n                //Deprecated #10429: { stateLink: 'product.importfileslist', label: ['article.articleimport'], licenseModules: { productModule: true }, claims: { articlesOrdersImport: { read: true } } },\n                { stateLink: 'product.productimport', label: ['article.articleimport'], licenseModules: { productModule: true }, claims: { articlesOrdersImport: { read: true } } },\n                { stateLink: 'product.maingroups', label: ['article.maingroup'], licenseModules: { productModule: true }, claims: { mainGroup: { read: true } } },\n                { stateLink: 'product.brands', label: ['article.brand'], licenseModules: { productModule: true }, claims: { brand: { read: true } } }\n            ]\n        };\n\n        var budget = {\n            licenseModules: { budgetModule: true },\n            name: 'budget',\n            label: ['common.budget'],\n            iconClass: 'fa fa-bar-chart-o',\n            nodes: [\n                { stateLink: 'budget.budgets', label: ['common.budget'], licenseModules: { budgetModule: true }, claims: { economy: { read: true } } }\n            ]\n        };\n\n\n        var order = {\n            name: 'order',\n            label: ['common.purchasing'],\n            iconClass: 'fa fa-clipboard',\n            licenseModules: { orderModule: true },\n            claims: { order: { read: true }, purchaseOrder: { read: true }, customerInvoice: { read: true } },\n            nodes: [\n                { stateLink: 'order.ordersearch', label: ['common.order'], licenseModules: { orderModule: true }, claims: { order: { read: true } } },\n                { stateLink: 'order.purchaseordersearch', label: ['order.purchaseorder'], licenseModules: { orderModule: true }, claims: { purchaseOrder: { read: true } } },\n                { stateLink: 'order.purchaseorderanalysis', label: ['purchaseorderanalysis.purchaseOrderAnalysisNavigationName'], licenseModules: { orderModule: true }, claims: { order: { read: true } } },\n                { stateLink: 'customerinvoice.customerinvoicesearch', label: ['customerinvoice.customerinvoices'], licenseModules: { ecommerceModule: true }, claims: { customerInvoice: { read: true } } },\n                {\n                    label: ['stock.reports'], licenseModules: { orderModule: true }, claims: { order: { read: true } }, nodes: [\n                        { stateLink: 'order.transitReports', label: ['reports.ui.transit'], licenseModules: { orderModule: true }, claims: { order: { read: true } } },\n                        { stateLink: 'order.intrastatReports', label: ['flexmonster.intrastat'], licenseModules: { orderModule: true }, claims: { order: { read: true } } }\n                    ]\n                }\n            ]\n        };\n\n        var sales = {\n            name: 'sales',\n            label: ['common.sales'],\n            iconClass: 'fa fa-shopping-cart',\n            licenseModules: { orderModule: true },\n            claims: { order: { read: true }, purchaseOrder: { read: true }, customerInvoice: { read: true } },\n            nodes: [\n                { stateLink: 'customerorder.customerordersearch', label: ['customerorder.customerorders'], licenseModules: { ecommerceModule: true }, claims: { customerOrder: { read: true } } },\n                { stateLink: 'discountManagement.discounts', params: {show: false, filter: '', canc: false, appr: true, comp: false, months: 2, currPage: 1, pageSize: 10 }, label: ['discountManagement.discounts'], licenseModules: { discountManagementModule: true }, claims: { discount: { read: true } } },\n                { stateLink: 'resellerorder.resellerordersearch', label: ['resellerorder.resellerorders'], licenseModules: { ecommerceModule: true }, claims: { resellerOrder: { read: true } } },\n                { stateLink: 'resellerorder.createfulfillment', label: ['resellerorder.createfulfillment'], licenseModules: { ecommerceModule: true }, claims: { resellerOrder: { read: true } } },\n                {\n                    label: ['resellerorder.manageFulfillment'], licenseModules: { ecommerceModule: true }, claims: { resellerOrder: { read: true } }, nodes: [\n                        { stateLink: 'resellerorder.manageorders', label: ['resellerorder.manageOrderFulfillments'], licenseModules: { ecommerceModule: true }, claims: { resellerOrder: { read: true } } },\n                        { stateLink: 'resellerorder.manageproducts', label: ['resellerorder.manageProductFulfillments'], licenseModules: { ecommerceModule: true }, claims: { resellerOrder: { read: true } } }\n                    ]\n                },\n                // { stateLink: 'resellerorder.resellerOrderInvoice', label: ['resellerorder.resellerOrderInvoice'], licenseModules: { ecommerceModule: true }, claims: { resellerOrder: { read: true } } }\n            ]\n        };\n\n        var stock = {\n            name: 'stock',\n            label: ['common.stock'],\n            iconClass: 'fa fa-cubes',\n            licenseModules: { orderModule: true },\n            claims: { stock: { read: true }, inventorying: { read: true } },\n            nodes: [\n                { stateLink: 'stock.articlesearch', label: ['stock.article'], licenseModules: { orderModule: true }, claims: { stock: { read: true } } },\n                { stateLink: 'stock.modelinventorysearch', label: ['stock.inventorymodel'], licenseModules: { orderModule: true }, claims: { inventorying: { read: true } } },\n                { stateLink: 'stock.scannerinventorying', label: ['stock.scannerinventorying'], licenseModules: { orderModule: true }, claims: { inventorying: { read: true } } },\n                { stateLink: 'stock.stockpickinglist', label: ['stock.stockpickinglist'], licenseModules: { orderModule: true }, claims: { stock: { read: true } } },\n                {\n                    label: ['stock.reports'], licenseModules: { orderModule: true }, claims: { stock: { read: true }, seepurchasecost: { read: true } }, nodes: [\n                        { stateLink: 'stock.stockValueReports', label: ['stock.stockValueReports'], licenseModules: { orderModule: true }, claims: { stock: { read: true }, seepurchasecost: { read: true } } },\n                        { stateLink: 'stock.soldStockReports', label: ['stock.soldStockReports'], licenseModules: { orderModule: true }, claims: { stock: { read: true }, seepurchasecost: { read: true } } },\n                    ]\n                }\n            ]\n        };\n\n        var stocklogistics = {\n            name: 'stocklogistics',\n            label: ['common.stocklogistics'],\n            iconClass: 'fa fa-truck',\n            licenseModules: { logisticsModule: true },\n            claims: { stockLogistics: { read: true }, order: { read: true } },\n            nodes: [\n                { stateLink: 'stock.orderingpointssearch', label: ['stock.orderingpoints'], licenseModules: { logisticsModule: true }, claims: { stockLogistics: { read: true } } },\n                // Hidden: Not complete  { stateLink: 'stocklogistics.masshandlingorderingpoints', label: ['Masshantering av ','stock.orderingpoints'], licenseModules: { logisticsModule: true }, claims: { stockLogistics: { read: true } } },\n                { stateLink: 'stocklogistics.articletransfer', label: ['stocklogistics.internaltransfer'], licenseModules: { logisticsModule: true }, claims: { order: { read: true } } },\n                { stateLink: 'stocklogistics.eshopreplenishment', label: ['stocklogistics.eshopreplenishment'], licenseModules: { logisticsModule: true }, claims: { order: { read: true } } }\n            ]\n        };\n\n        var analysis = {\n            name: 'analysis',\n            label: ['common.analysis'],\n            iconClass: 'fa fa-pie-chart',\n            licenseModules: { analysisModule: true },\n            claims: { analysis: { read: true } },\n            nodes: [\n                //#5140: { stateLink: 'analysis.reports', label: ['analyse.analysis'], licenseModules: { analysisModule: true }, claims: { analysis: { read: true } } },\n                { stateLink: 'analysis.userReports', label: ['analyse.userReports'], licenseModules: { analysisModule: true }, claims: { analysis: { read: true } } },\n                //#10657: { stateLink: 'sales.salestotal', label: ['salestotal.salestotal'], licenseModules: { ecommerceModule: true }, claims: { analysis: { read: true }, location: { read: true } } },\n                { stateLink: 'stock.saleThroughputReports', label: ['stock.saleThroughputReports'], licenseModules: { orderModule: true }, claims: { analysis: { read: true }, seepurchasecost: { read: true } } }\n            ]\n        };\n\n        var crm = {\n            licenseModules: { crmModule: true },\n            name: 'crm',\n            label: ['common.crm'],\n            iconClass: 'fa fa-smile-o',\n            nodes: []\n        };\n\n        var administration = {\n            name: 'product',\n            label: ['common.administration'],\n            iconClass: 'fa fa-database',\n            licenseModules: { productModule: true, economyModule: true, orderModule: true, baseModule: true, deliveryPlanningModule: true },\n            claims: {\n                article: { read: true }, salesChannel: { read: true }, intrastat: { read: true }, psychologicalPrice: { read: true }, subCategory: { read: true },\n                timeStamping: { read: true }, pricelist: { read: true }, economy: { read: true }, currency: { read: true }, paymentTerm: { read: true }, deliveryTerm: { read: true }, shippingMethod: { read: true }, customerGroup: { read: true }, invoiceType: { read: true }, businessArea: { read: true }\n            },\n            nodes: [\n                {\n                    label: ['admin.product'], licenseModules: { productModule: true }, claims: { department: { read: true }, subCategory: { read: true }, article: { read: true }, businessArea: { read: true } }, nodes: [\n                        { stateLink: 'product.departments', label: ['article.department'], licenseModules: { productModule: true }, claims: { department: { read: true } } },\n                        { stateLink: 'product.subcategories', label: ['article.subcategory'], licenseModules: { productModule: true }, claims: { subCategory: { read: true } } },\n                        { stateLink: 'base.articletypes', label: ['article.articletypes'], licenseModules: { productModule: true }, claims: { article: { read: true } } },\n                        { stateLink: 'product.variants', label: ['article.variants'], licenseModules: { productModule: true }, claims: { article: { read: true } } },\n                        { stateLink: 'product.variantgroups', label: ['article.variantgroups'], licenseModules: { productModule: true }, claims: { article: { read: true } } },\n                        { stateLink: 'product.businessareas', label: ['role.businessArea'], licenseModules: { productModule: true }, claims: { businessArea: { read: true } } }\n                    ]\n                },\n                {\n                    label: ['admin.purchase'], licenseModules: { baseModule: true }, claims: { paymentTerm: { read: true }, shippingMethod: { read: true }, intrastat: { read: true }, deliveryTerm: { read: true }, country: { read: true }, currency: { read: true }, invoiceType: { read: true } }, nodes: [\n                        { stateLink: 'base.paymentterms', label: ['role.paymentTerm'], licenseModules: { baseModule: true }, claims: { paymentTerm: { read: true } } },\n                        { stateLink: 'base.shippingmethods', label: ['role.shippingMethod'], licenseModules: { baseModule: true }, claims: { shippingMethod: { read: true } } },\n                        { stateLink: 'product.intrastats', label: ['article.intrastats'], licenseModules: { productModule: true }, claims: { intrastat: { read: true } } },\n                        { stateLink: 'base.deliveryterms', label: ['role.deliveryTerm'], licenseModules: { baseModule: true }, claims: { deliveryTerm: { read: true } } },\n                        { stateLink: 'base.countries', label: ['base.countries'], licenseModules: { baseModule: true }, claims: { country: { read: true } } },\n                        //#3577: { stateLink: 'base.articlecollections', label: ['articlecollection.articleCollections'], licenseModules: { baseModule: true }, claims: { article: { read: true } } },\n                        //#3577: { stateLink: 'base.ordercollections', label: ['articlecollection.orderCollections'], licenseModules: { baseModule: true }, claims: { order: { read: true } } },\n                        { stateLink: 'base.currencies', label: ['base.currencies'], licenseModules: { baseModule: true }, claims: { currency: { read: true } } },\n                        { stateLink: 'base.ordertypes', label: ['base.ordertypes'], licenseModules: { baseModule: true }, claims: { orderType: { read: true } } },\n                        // Hidden: Not complete { stateLink: 'base.deliveryplanningtemplates', label: ['base.deliveryplanningtemplates'], licenseModules: { deliveryPlanningModule: true }, claims: { deliveryPlanningTemplate: { read: true } } },\n                        { stateLink: 'base.invoicetypes', label: ['role.invoiceType'], licenseModules: { baseModule: true }, claims: { invoiceType: { read: true } } }\n                    ]\n                },\n                {\n                    label: ['admin.price'], licenseModules: { productModule: true }, claims: { salesChannel: { read: true }, pricelist: { read: true }, customerGroup: { read: true } }, nodes: [\n                        { stateLink: 'product.saleschannels', label: ['article.saleschannel'], licenseModules: { productModule: true }, claims: { salesChannel: { read: true } } },\n                        { stateLink: 'product.pricelists', label: ['article.pricelists'], licenseModules: { productModule: true }, claims: { pricelist: { read: true } } },\n                        { stateLink: 'product.pricelisteditor', label: ['article.pricelisteditor'], licenseModules: { productModule: true }, claims: { pricelist: { read: true } } },\n                        { stateLink: 'product.psychologicalprices', label: ['article.psychologicalprices'], licenseModules: { productModule: true }, claims: { psychologicalPrice: { read: true } } },\n                        { stateLink: 'product.volumediscounts', label: ['role.volumeDiscount'], licenseModules: { productModule: true }, claims: { volumeDiscount: { read: true } } },\n                        { stateLink: 'base.customergroups', label: ['role.customerGroup'], licenseModules: { baseModule: true }, claims: { customerGroup: { read: true } } }\n                    ]\n                },\n                { stateLink: 'main.siefileexport', label: ['economy.siefileexport'], licenseModules: { economyModule: true }, claims: { economy: { read: true } } },\n                { stateLink: 'base.accounts', label: ['role.account'], licenseModules: { baseModule: true }, claims: { account: { read: true } } },\n                { stateLink: 'base.vats', label: ['role.vat'], licenseModules: { baseModule: true }, claims: { vat: { read: true } } },\n                { stateLink: 'base.paymenttypes', label: ['role.paymentType'], licenseModules: { baseModule: true }, claims: { paymentType: { read: true } } },\n                { stateLink: 'base.returnreasons', label: ['role.returnReason'], licenseModules: { baseModule: true }, claims: { returnReason: { read: true } } },\n                { stateLink: 'contacts.timestampingmanagement', label: ['contacts.timestamping'], licenseModules: { baseModule: true }, claims: { timeStamping: { read: true } } }\n            ]\n        };\n\n        nav.nodes.push(dashboard);\n        nav.nodes.push(contacts);\n        nav.nodes.push(product);\n        nav.nodes.push(budget);\n        nav.nodes.push(order);\n        nav.nodes.push(sales);\n        nav.nodes.push(stock);\n        nav.nodes.push(stocklogistics);\n        nav.nodes.push(analysis);\n        nav.nodes.push(administration);\n\n        return nav;\n    }\n\n\n}\n\nangular\n    .module('navigation.api', [])\n    .factory('NavigationApiService', Service);\n","var module = angular.module('components');\nmodule.component('navigationNode', {\n    templateUrl: 'components/navigation/navigationNode.component.tpl.html',\n    controllerAs: 'vm',\n    bindings: {\n        node: '<',\n        level: '<',\n        claims: '<',\n        root: '<',\n        branch: '<',\n        licenseModules: '<'\n    },\n    controller: ['$state','AuthService','$window','$rootScope', '$translate',controller]\n});\n\n\nfunction controller($state, AuthService, $window, $rootScope, $translate)  {\n    var vm = this;\n\n    vm.$onInit = onInit;\n    vm.$onChanges = onChanges;\n    vm.$onDestroy = onDestroy;\n    vm.onClick = onClick;\n    vm.hasFocus = hasFocus;\n    vm.shouldRender = shouldRender;\n    vm.getIndentation = getIndentation;\n    vm.getNodeLabel = getNodeLabel;\n\n    function onInit() {\n        vm.node.expanded = false;\n    }\n\n    function onChanges(changes) {\n    }\n\n    function onDestroy() {\n    }\n\n    function onClick() {\n        if (vm.node.stateLink) {\n            $rootScope.$emit('NavigatingTo', vm.node.stateLink);\n            $state.go(vm.node.stateLink, vm.node.params == undefined ? {} : vm.node.params);\n            $window.scrollTo(0, 0);\n            return;\n        }\n        toggleMenuExpansion();\n    }\n\n    function hasFocus() {\n        if (vm.node.stateLink) {\n            if ($state.includes(vm.node.stateLink)) {\n                 return true;\n            }\n        }\n        return false;\n    }\n\n    function shouldRender(type) {\n        if (type === 'root' && vm.level > 0) {\n            return false;\n        }\n\n        if (type === 'leaf' && vm.level === 0) {\n            return false;\n        }\n\n        if (vm.node.claims && !AuthService.matchAnyDemand(vm.node.claims, vm.claims)) {\n            return false;\n        }\n\n        if (vm.node.licenseModules && !AuthService.matchAnyDemand(vm.node.licenseModules, vm.licenseModules)) {\n            return false;\n        }\n\n        if (vm.node.claims && !AuthService.matchTwoDemand(vm.node.claims, vm.claims, type, \"seepurchasecost\", \"stock\")) {\n            return false;\n        }\n\n        return true;\n    }\n\n    function getNodeLabel(node) {\n        var label = _.map(node.label, function(o) {\n            return $translate.instant(o);\n        });\n\n        return _.join(label, ' ');\n    }\n\n    function getIndentation(level) {\n        if (level > 1) {\n            return Array(level).join('-') + ' ';\n        }\n        return '';\n    }\n\n    function toggleMenuExpansion() {\n        vm.node.expanded = !vm.node.expanded;\n\n        if (vm.node.expanded) {\n            _.forEach(vm.root.nodes, function(branch) {\n                if (branch !== vm.branch) {\n                    branch.expanded = false;\n                }\n            });\n\n        }\n    }\n\n}\n","// @ngInject\nfunction bootstrapModal($provide) {\n    $provide.decorator('$uibModalStack',bootstrapModalDelegate);\n}\n\n// @ngInject\nfunction bootstrapModalDelegate($delegate,loadSpinnerService) {\n\n    var openFn = $delegate.open;\n\n\n    $delegate.open = function() {\n        var args = Array.prototype.slice.call(arguments);\n\n        var spinnerName = \"modalSpinner\" + Math.random();\n\n        args[1].content = '<div load-spinner spinner-name=\"' + spinnerName + '\"></div>' + args[1].content;\n\n        args[0].startLoadingSpinner = function() {\n            loadSpinnerService.start(spinnerName);\n        };\n        args[0].stopLoadingSpinner = function() {\n            loadSpinnerService.stop(spinnerName);\n        };\n\n        openFn.apply(null,args);\n    };\n\n    return $delegate;\n}\n\nangular\n    .module('decorators.bootstrapModal', [])\n    .config(bootstrapModal);\n","// @ngInject\nfunction dashboard(DashboardApiService, $debounce) {\n  return {\n    templateUrl: 'directives/dashboard/dashboard.tpl.html',\n    link: function($scope) {\n      $scope.addNewWidget = function(widget) {\n        var newWidget = angular.copy(widget);\n        $scope.widgets.push(newWidget);\n      };\n      \n      $scope.gridsterOpts = {\n        columns: 24,\n        margins: [5, 5],\n        outerMargin: true,\n        pushing: true,\n        floating: true,\n        swapping: true,\n        mobileBreakPoint: 500,\n        resizable: {\n          enabled: true,\n          handles: ['e', 's', 'se'],\n          start: function(event, $element, widget) {},  // optional callback fired when resize is started,\n          resize: function(event, $element, widget) {}, // optional callback fired when item is resized,\n          stop: function(event, $element, widget) {}    // optional callback fired when item is finished resizing\n        },\n        draggable: {\n          enabled: true, // whether dragging items is supported\n          handle: '.wgt-heading',\n          start: function(event, $element, widget) {},  // optional callback fired when drag is started,\n          drag: function(event, $element, widget) {},   // optional callback fired when item is moved,\n          stop: function(event, $element, widget) {}    // optional callback fired when item is finished dragging\n        }\n      };\n\n      $scope.$watch('widgets', function() {\n        $debounce($scope.saveDashboard, 2500);\n      }, true);\n      $scope.saveDashboard = function() {\n        DashboardApiService.saveWidgets($scope.widgets)\n          .then(function(response) {\n          });\n      };\n\n    }\n  };\n}\n\nangular\n  .module('directives.dashboard', [])\n  .directive('dashboard', ['DashboardApiService', '$debounce', dashboard])\n  .filter('cmdate', [\n    '$filter',\n    function($filter) {\n      return function(input, format) {\n        return $filter('date')(new Date(input.replace(new RegExp('-', 'g'), '/')), format); // replace is used for IE to understand the date\n      };\n    }\n  ])\n  .factory('$debounce', ['$rootScope', '$browser', '$q', '$exceptionHandler',\n    function($rootScope, $browser, $q, $exceptionHandler) {\n      var deferreds = {},\n        methods = {},\n        uuid = 0;\n\n      function debounce(fn, delay, invokeApply) {\n        var deferred = $q.defer(),\n          promise = deferred.promise,\n          skipApply = (angular.isDefined(invokeApply) && !invokeApply),\n          timeoutId, cleanup,\n          methodId, bouncing = false;\n\n        // check we dont have this method already registered\n        angular.forEach(methods, function(value, key) {\n          if (angular.equals(methods[key].fn, fn)) {\n            bouncing = true;\n            methodId = key;\n          }\n        });\n\n        // not bouncing, then register new instance\n        if (!bouncing) {\n          methodId = uuid++;\n          methods[methodId] = {\n            fn: fn\n          };\n        } else {\n          // clear the old timeout\n          deferreds[methods[methodId].timeoutId].reject('bounced');\n          $browser.defer.cancel(methods[methodId].timeoutId);\n        }\n\n        var debounced = function() {\n          // actually executing? clean method bank\n          delete methods[methodId];\n\n          try {\n            deferred.resolve(fn());\n          } catch (e) {\n            deferred.reject(e);\n            $exceptionHandler(e);\n          }\n\n          if (!skipApply) {\n            $rootScope.$apply();\n          }\n        };\n\n        timeoutId = $browser.defer(debounced, delay);\n\n        // track id with method\n        methods[methodId].timeoutId = timeoutId;\n\n        cleanup = function(reason) {\n          delete deferreds[promise.$$timeoutId];\n        };\n\n        promise.$$timeoutId = timeoutId;\n        deferreds[timeoutId] = deferred;\n        promise.then(cleanup, cleanup);\n\n        return promise;\n      }\n\n      // similar to angular's $timeout cancel\n      debounce.cancel = function(promise) {\n        if (promise && promise.$$timeoutId in deferreds) {\n          deferreds[promise.$$timeoutId].reject('canceled');\n          return $browser.defer.cancel(promise.$$timeoutId);\n        }\n        return false;\n      };\n\n      return debounce;\n    }\n  ]);\n","angular.module('directives.dashboard').directive('widgetBody',\n    ['$compile', '$uibModal',\n        function ($compile, $uibModal) {\n            return {\n                restrict: 'E',\n                templateUrl: 'directives/dashboard/widgetBody.tpl.html',\n                link: function (scope, element, attrs) {\n                    var newElement = angular.element(scope.item.template);\n                    element.append(newElement);\n                    $compile(newElement)(scope);\n\n                    scope.close = function () {\n                        scope.widgets.splice(scope.widgets.indexOf(scope.item), 1);\n                    };\n\n                    if (scope.item.setting !== undefined) {\n\n                        var settings = JSON.parse(scope.item.setting);\n                        var locationIds = settings.locationIds === undefined ? [settings] : settings.locationIds;\n                        var selectedLocations = [];\n\n                        _.forEach(scope.currentUser.locations, function(loc){\n                            if(_.some(locationIds, function(id){ return parseInt(id) === loc.id })){\n                                selectedLocations.push(loc);\n                            }\n                        })\n\n                        scope.selectedWidgetTimeFrame = settings.selectedWidgetTimeFrame ? \"0\" : settings.selectedWidgetTimeFrame.toString();\n                        scope.selectedBusinessAreaId = settings.businessAreaId;\n                        scope.selectedLocation = (selectedLocations.length) ? selectedLocations[0].locationName : '';\n                        scope.selectedLocationNumber = (selectedLocations.length) ? selectedLocations[0].locationNumber : '';\n                        scope.selectedLocationId = (selectedLocations.length) ? selectedLocations[0].id : NaN;\n                        scope.selectedLocations = selectedLocations;\n                    }\n\n                    if (scope.item.settingController) {\n                        scope.settings = function () {\n                            var options = {\n                                templateUrl: scope.item.settingTemplateUrl,\n                                controller: scope.item.settingController,\n                                scope: scope\n                            };\n                            $uibModal.open(options);\n                        };\n                    }\n\n                    scope.iconClicked = function () {\n                        // empty, don't remove it\n                    };\n                }\n            };\n        }\n    ]);\n","angular.module('directives.dashboard').controller('wgtSettings',\n    ['$scope', '$rootScope',\n        function ($scope, $rootScope) {\n            if ($scope.item.setting === undefined || $scope.item.setting === null ) {\n                $scope.selectedSettingItem = '';\n            } else {\n                var selectedItem = parseInt($scope.item.setting);\n                if(isNaN(selectedItem) && $scope.item.setting !== \"\"){\n                    selectedItem = JSON.parse($scope.item.setting).locationIds[0];\n                }\n                $scope.selectedSettingItem = selectedItem;\n            }\n            $scope.saveSettings = function () {\n                if ($scope.selectedSettingItem === null || $scope.selectedSettingItem === \"\" ) {\n                    $scope.$parent.selectedLocation = '';\n                    $scope.$parent.selectedLocationNumber = '';\n                    $scope.$parent.selectedLocationId = 0;\n                } else {\n                    var location = $.grep($scope.currentUser.locations, function (e) {\n                        return e.id === $scope.selectedSettingItem;\n                    })[0];\n                    $scope.$parent.selectedLocation = location.locationName;\n                    $scope.$parent.selectedLocationNumber = location.locationNumber;\n                    $scope.$parent.selectedLocationId = location.id;\n\n                    $scope.selectedSettingItem = {locationIds: [angular.copy(location.id)]};\n                }\n                $scope.item.setting = $scope.selectedSettingItem;\n                if ($scope.$parent) {\n                    if ($scope.$parent.loadWidget) {\n                        $scope.$parent.loadWidget();\n                    }\n                }\n                $rootScope.$emit(\"widget.changed\", $scope.item);\n\n                $scope.$close();\n            };\n        }]);\n","angular.module('directives.dashboard').controller('wgtSettingsBusinessArea',\n    ['$scope', '$rootScope', 'BusinessAreasApiService',\n        function ($scope, $rootScope, BusinessAreasApiService) {\n            $scope.businessAreas = [];\n            if ($scope.item.setting === undefined || $scope.item.setting === null ) {\n                $scope.selectedSettingItem = '';\n                $scope.selectedBusinessArea = undefined;\n                $scope.selectedWidgetTimeFrame = \"0\";\n            } else {    \n                $scope.selectedSettingItem = parseInt($scope.item.setting);\n                if(isNaN($scope.selectedSettingItem)){\n                    var parsedSettings = JSON.parse($scope.item.setting);\n                    $scope.selectedSettingItem = parsedSettings.locationIds ? parsedSettings.locationIds[0] : '';\n                    $scope.selectedBusinessAreaId = parsedSettings.businessAreaId ? parsedSettings.businessAreaId : 0;\n                    $scope.selectedWidgetTimeFrame = parsedSettings.selectedWidgetTimeFrame ? parsedSettings.selectedWidgetTimeFrame.toString(): \"0\"\n                }\n            }\n            BusinessAreasApiService.getBusinessAreas().then(function (response){\n                $scope.businessAreas = response;\n                if($scope.selectedBusinessAreaId && $scope.selectedBusinessAreaId !== 0){\n                    $scope.selectedBusinessArea = $scope.businessAreas.filter(x => x.id === $scope.selectedBusinessAreaId)[0];\n                }\n            });\n            $scope.saveSettings = function () {\n                if ($scope.selectedSettingItem === null || $scope.selectedSettingItem === \"\" ) {\n                    $scope.$parent.selectedLocation = '';\n                    $scope.$parent.selectedLocationNumber = '';\n                    $scope.$parent.selectedLocationId = 0;\n                    $scope.$parent.selectedBusinessArea = $scope.selectedBusinessArea;\n                    $scope.$parent.selectedBusinessAreaId = $scope.selectedBusinessArea && $scope.selectedBusinessArea.id > 0 ? $scope.selectedBusinessArea.id : undefined;\n                    $scope.selectedSettingItem = {};\n                    if($scope.selectedBusinessArea){\n                        $scope.$parent.selectedBusinessArea = $scope.selectedBusinessArea;\n                        $scope.selectedSettingItem.businessAreaId = $scope.selectedBusinessArea.id;\n                    }\n                    $scope.$parent.selectedWidgetTimeFrame = $scope.selectedWidgetTimeFrame ? parseInt($scope.selectedWidgetTimeFrame) : 0;\n                    if($scope.selectedWidgetTimeFrame){\n                        $scope.selectedSettingItem.selectedWidgetTimeFrame = parseInt($scope.selectedWidgetTimeFrame);\n                    }\n                } else {\n                    var location = $.grep($scope.currentUser.locations, function (e) {\n                        return e.id === $scope.selectedSettingItem;\n                    })[0];\n                    $scope.$parent.selectedLocation = location.locationName;\n                    $scope.$parent.selectedLocationNumber = location.locationNumber;\n                    $scope.$parent.selectedLocationId = location.id;\n                    $scope.$parent.selectedBusinessArea = $scope.selectedBusinessArea;\n                    $scope.$parent.selectedBusinessAreaId = $scope.selectedBusinessArea && $scope.selectedBusinessArea.id > 0 ? $scope.selectedBusinessArea.id : undefined;\n                    $scope.$parent.selectedWidgetTimeFrame =  $scope.selectedWidgetTimeFrame ? parseInt($scope.selectedWidgetTimeFrame) : 0\n\n                    $scope.selectedSettingItem = {\n                        locationIds: [angular.copy(location.id)], \n                        businessAreaId: $scope.selectedBusinessArea && $scope.selectedBusinessArea.id > 0 ? $scope.selectedBusinessArea.id : undefined, \n                        selectedWidgetTimeFrame: parseInt($scope.$parent.selectedWidgetTimeFrame)\n                    };\n                }\n                $scope.item.setting = $scope.selectedSettingItem;\n                if ($scope.$parent) {\n                    if ($scope.$parent.loadWidget) {\n                        $scope.$parent.loadWidget();\n                    }\n                }\n                $rootScope.$emit(\"widget.changed\", $scope.item);\n\n                $scope.$close();\n            };\n        }]);\n","angular.module('directives.dashboard').controller('wgtSettingsHideTooltipLocation',\n    ['$scope', '$rootScope',\n        function ($scope, $rootScope) {\n            if ($scope.item.setting === undefined) {\n                $scope.selectedSettingItem = '';\n            } else {\n                if(angular.isString($scope.item.setting)){\n                    $scope.item.setting = JSON.parse($scope.item.setting);\n                }\n\n                $scope.selectedSettingItem = {\n                    locationIds : $scope.item.setting.locationIds[0],\n                    hideTooltip: $scope.item.setting.hideTooltip\n                }\n            }\n            $scope.saveSettings = function () {\n                if ($scope.selectedSettingItem.locationIds === null || $scope.selectedSettingItem.locationIds === undefined || $scope.selectedSettingItem.locationIds === 0) {\n                    $scope.$parent.selectedLocation = '';\n                    $scope.$parent.selectedLocationId = 0;\n                    $scope.$parent.hideTooltip = $scope.selectedSettingItem.hideTooltip ? $scope.selectedSettingItem.hideTooltip: false;\n                } else {\n                    var location = $.grep($scope.currentUser.locations, function (e) {\n                        return e.id === $scope.selectedSettingItem.locationIds;\n                    })[0];\n                    $scope.$parent.selectedLocation = location.locationName;\n                    $scope.$parent.selectedLocationId = location.id;\n                    $scope.$parent.hideTooltip = $scope.selectedSettingItem.hideTooltip;\n\n                }\n                $scope.selectedSettingItem = {locationIds: [$scope.$parent.selectedLocationId], hideTooltip: $scope.$parent.hideTooltip};\n                $scope.item.setting = $scope.selectedSettingItem;\n                if ($scope.$parent) {\n                    if ($scope.$parent.loadWidget) {\n                        $scope.$parent.loadWidget();\n                    }\n                }\n                $rootScope.$emit(\"widget.changed\", $scope.item);\n\n                $scope.$close();\n            };\n        }]);\n","angular.module('directives.dashboard').controller('wgtSettingsMultipleLocations',\n    ['$scope', '$rootScope',\n        function ($scope, $rootScope) {\n            if ($scope.item.setting === undefined) {\n                $scope.selectedSettingItems = '';\n            } else {\n                var selectedLocationIds = $scope.item.setting.locationIds;\n                \n                if(angular.isString($scope.item.setting)){\n                    selectedLocationIds = JSON.parse($scope.item.setting).locationIds;\n                }\n\n                $scope.selectedSettingItems = [];\n\n                _.forEach($scope.currentUser.locations, function(loc){\n                    if(_.some(selectedLocationIds, function(id){ return parseInt(id) === loc.id })){\n                        $scope.selectedSettingItems.push(loc);\n                    }\n                })\n            }\n            $scope.saveSettings = function () {\n                if ($scope.selectedSettingItems === null) {\n                    $scope.$parent.selectedLocations = [];\n                } else {     \n\n                    var settingsObject = { locationIds : [] };\n                    _.forEach($scope.currentUser.locations, function(loc){\n                        if(_.some($scope.selectedSettingItems, function(item){ return item.id === loc.id })){\n                            settingsObject.locationIds.push(loc.id);\n                        }\n                    })\n\n                    $scope.$parent.selectedLocations = angular.copy($scope.selectedSettingItems);\n                    $scope.selectedSettingItems = settingsObject;\n                }\n                $scope.item.setting = $scope.selectedSettingItems;\n                if ($scope.$parent) {\n                    if ($scope.$parent.loadWidget) {\n                        $scope.$parent.loadWidget();\n                    }\n                }\n                $rootScope.$emit(\"widget.changed\", $scope.item);\n\n                $scope.$close();\n            };\n        }]);\n","angular.module('directives.dashboard').controller('wgtSettingsTimePeriod',\n['$scope', '$rootScope',\n    function ($scope, $rootScope) {\n        if ($scope.item.setting === undefined) {\n            $scope.selectedSettingItem = {\n                locationIds : null,\n                selectedWidgetTimeFrame: \"0\"\n            };\n        } else {\n            if(angular.isString($scope.item.setting)){\n                $scope.item.setting = JSON.parse($scope.item.setting);\n            }\n\n            $scope.selectedSettingItem = {\n                locationIds : $scope.item.setting.locationIds[0],\n                selectedWidgetTimeFrame: $scope.item.setting.selectedWidgetTimeFrame !== undefined ? $scope.item.setting.selectedWidgetTimeFrame.toString(): \"0\"\n            }\n        }\n        $scope.saveSettings = function () {\n            if ($scope.selectedSettingItem.locationIds === null || $scope.selectedSettingItem.locationIds === undefined || $scope.selectedSettingItem.locationIds === 0) {\n                $scope.$parent.selectedLocation = '';\n                $scope.$parent.selectedLocationNumber = '';\n                $scope.$parent.selectedLocationId = 0;\n                $scope.$parent.selectedWidgetTimeFrame = $scope.selectedSettingItem.selectedWidgetTimeFrame ? parseInt($scope.selectedSettingItem.selectedWidgetTimeFrame) : 0;\n            } else {\n                var location = $.grep($scope.currentUser.locations, function (e) {\n                    return e.id === $scope.selectedSettingItem.locationIds;\n                })[0];\n                $scope.$parent.selectedLocation = location.locationName;\n                $scope.$parent.selectedLocationNumber = location.locationNumber;\n                $scope.$parent.selectedLocationId = location.id;\n                $scope.$parent.selectedWidgetTimeFrame = parseInt($scope.selectedSettingItem.selectedWidgetTimeFrame)\n            }\n            $scope.selectedSettingItem = {locationIds: [$scope.$parent.selectedLocationId], selectedWidgetTimeFrame: parseInt($scope.$parent.selectedWidgetTimeFrame)};\n            $scope.item.setting = $scope.selectedSettingItem;\n            if ($scope.$parent) {\n                if ($scope.$parent.loadWidget) {\n                    $scope.$parent.loadWidget();\n                }\n            }\n            $rootScope.$emit(\"widget.changed\", $scope.item);\n\n            $scope.$close();\n        };\n    }]);\n","angular.module('directives.dashboard').directive('wgtArticleNegativeBalance', ['DashboardApiService','$state',\n    function (DashboardApiService, $state) {\n        return {\n            templateUrl: 'directives/dashboard/widgets/wgtArticleNegativeBalance/wgtArticleNegativeBalance.tpl.html',\n            link: function ($scope) {\n                $scope.isLoaded = false;\n                $scope.hasError = false;\n\n                $scope.loadWidget = function () {\n                    DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                        .then(function (response) {\n                            if (response.data === '') {\n                                //No data, leaving\n                                return;\n                            }\n                            $scope.widgetData = response.data;\n                            $scope.isLoaded = true;\n                        }, function (response) {\n                            $scope.hasError = true;\n                        });\n                };\n\n                $scope.gotoArticle = function(articleId)  {\n                     $state.go('stock.articlesearch.article', { articleId: articleId });\n                };\n                $scope.loadWidget();\n            }\n        };\n    }\n]);\n","angular.module('directives.dashboard').directive('wgtCalHeatmap', ['DashboardApiService', '$compile',\n  function(DashboardApiService, $compile) {\n    return {\n      templateUrl: 'directives/dashboard/widgets/wgtCalHeatmap/wgtCalHeatmap.tpl.html',\n      link: function($scope, $element) {\n\n        $scope.elId = 'chart-' + Math.floor((Math.random() * 6000) + 1);\n        $element.find('.heatmap-container')\n          .append($compile(\"<div class='svg-container' id='\" + $scope.elId + \"'></div>\")($scope));\n\n        $scope.isLoaded = false;\n        $scope.hasError = false;\n        $scope.loadWidget = function() {\n          DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n            .then(function(response) {\n\n              if (response.data === '') {\n                //No data, leaving\n                return;\n              }\n\n              $scope.widgetData = response.data;\n              $scope.isLoaded = true;\n\n              var margin = {\n                  top: 50,\n                  right: 0,\n                  bottom: 100,\n                  left: 50\n                },\n                width = 960 - margin.left - margin.right,\n                height = 430 - margin.top - margin.bottom,\n                gridSize = Math.floor(width / 24),\n                legendElementWidth = gridSize * 2,\n                buckets = 9,\n                colors = [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#253494\", \"#081d58\"],\n                days = [\"må\", \"ti\", \"on\", \"to\", \"fr\", \"lö\", \"sö\"],\n                times = [\"07\", \"08\", \"09\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"20\", \"21\"];\n              var timeHacked = 6;\n              draw($scope.widgetData);\n\n              function draw(data) {\n\n                var colorScale = d3.scale.quantile()\n                  .domain([0, buckets - 1, d3.max(data, function(d) {\n                    return d.value;\n                  })])\n                  .range(colors);\n                $(\"#\" + $scope.elId).empty();\n                var svg = d3.select(\"#\" + $scope.elId).append(\"svg\")\n                  .attr(\"width\", \"100%\")\n                  .attr(\"height\", \"100%\")\n                  .attr(\"viewBox\", \"0 0 800 600\")\n                  .attr(\"preserveAspectRatio\", \"xMinYMin meet\")\n                  .attr(\"class\", \"svg-content\")\n                  .append(\"g\")\n                  .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n                var dayLabels = svg.selectAll(\".dayLabel\")\n                  .data(days)\n                  .enter().append(\"text\")\n                  .text(function(d) {\n                    return d;\n                  })\n                  .attr(\"x\", 0)\n                  .attr(\"y\", function(d, i) {\n                    return i * gridSize;\n                  })\n                  .style(\"text-anchor\", \"end\")\n                  .attr(\"transform\", \"translate(-6,\" + gridSize / 1.5 + \")\")\n                  .attr(\"class\", function(d, i) {\n                    return ((i >= 0 && i <= 4) ? \"dayLabel mono axis axis-workweek\" : \"dayLabel mono axis\");\n                  });\n\n                var timeLabels = svg.selectAll(\".timeLabel\")\n                  .data(times)\n                  .enter().append(\"text\")\n                  .text(function(d) {\n                    return d;\n                  })\n                  .attr(\"x\", function(d, i) {\n                    return i * gridSize;\n                  })\n                  .attr(\"y\", 0)\n                  .style(\"text-anchor\", \"middle\")\n                  .attr(\"transform\", \"translate(\" + gridSize / 2 + \", -6)\")\n                  .attr(\"class\", function(d, i) {\n                    return ((i >= 7 && i <= 16) ? \"timeLabel mono axis axis-worktime\" : \"timeLabel mono axis\");\n                  });\n\n                var heatMap = svg.selectAll(\".hour\")\n                  .data(data)\n                  .enter().append(\"rect\")\n                  .attr(\"x\", function(d) {\n                    return (d.hour - 1 - timeHacked) * gridSize;\n                  })\n                  .attr(\"y\", function(d) {\n                    return (d.day - 1) * gridSize;\n                  })\n                  .attr(\"rx\", 4)\n                  .attr(\"ry\", 4)\n                  .attr(\"class\", \"hour bordered\")\n                  .attr(\"width\", gridSize)\n                  .attr(\"height\", gridSize)\n                  .style(\"fill\", colors[0]);\n\n                heatMap.transition().duration(1000)\n                  .style(\"fill\", function(d) {\n                    return colorScale(d.value);\n                  });\n\n                heatMap.append(\"title\").text(function(d) {\n                  return d.value;\n                });\n\n                var legend = svg.selectAll(\".legend\")\n                  .data([0].concat(colorScale.quantiles()), function(d) {\n                    return d;\n                  })\n                  .enter().append(\"g\")\n                  .attr(\"class\", \"legend\");\n\n                legend.append(\"rect\")\n                  .attr(\"x\", function(d, i) {\n                    return legendElementWidth * i;\n                  })\n                  .attr(\"y\", height)\n                  .attr(\"width\", legendElementWidth)\n                  .attr(\"height\", gridSize / 2)\n                  .style(\"fill\", function(d, i) {\n                    return colors[i];\n                  });\n\n                legend.append(\"text\")\n                  .attr(\"class\", \"mono\")\n                  .text(function(d) {\n                    return \"≥ \" + Math.round(d);\n                  })\n                  .attr(\"x\", function(d, i) {\n                    return legendElementWidth * i;\n                  })\n                  .attr(\"y\", height + gridSize);\n              }\n\n            }, function(response) {\n              $scope.hasError = true;\n            });\n        };\n        $scope.loadWidget();\n\n      }\n    };\n  }\n]);\n","angular.module('directives.dashboard').directive('wgtChart', function() {\n    return {\n        templateUrl: 'directives/dashboard/widgets/wgtChart/wgtChart.tpl.html',\n        restrict: 'E',\n        controller: wgtChartController\n    };\n});\n\n// @ngInject\nfunction wgtChartController($scope, $q, googleChartApiPromise, $element, $debounce, $rootScope, BusinessAreasApiService, $translate, DashboardApiService, $compile) {\n    $scope.chart = {\n\n        dataModel: {\n            visual: {},\n            metaData: {},\n            data: {}\n        },\n        type: {},\n        options: {}\n    };\n    $scope.activateChart = false;\n    $scope.isLoaded = false;\n    $scope.hasError = false;\n\n    $scope.loadWidget = function () {\n        var dataPromise = DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting);\n\n        $q.all({\n            data: dataPromise,\n            api: googleChartApiPromise\n        })\n            .then(apiLoadSuccess);\n    };\n    $scope.loadWidget();\n    BusinessAreasApiService.getBusinessAreas().then(function(data){\n        $scope.businessAreas = data;\n    });\n\n    function apiLoadSuccess(response) {\n\n        $rootScope.chartColorAssocArray = $rootScope.chartColorAssocArray || {};\n\n        $scope.chart.type = 'BarChart';\n\n        var _data = response.data.data;\n        // Set chart options\n        $scope.chart.options = {\n            width: '100%',\n            height: '100%',\n            colors: [\n                '#8dd3c7', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'\n            ],\n            animation: {\n                duration: 1000,\n                easing: 'out'\n            },\n            is3D: true,\n            keepAspectRatio: 'false'\n        };\n\n        if (_data) {\n            $scope.isLoaded = true;\n        }\n\n        var _array = [];\n\n        var i;\n        var data;\n        var _seriesColor;\n        var x;\n        var __date;\n        switch ($scope.item.name) {\n\n            case 'sale-top-sold':\n                for (i = 0; i < _data.length; i++) {\n                    _array.push([_data[i].article.articleName, parseInt(_data[i].quantity)]);\n                }\n                data = new google.visualization.DataTable();\n                data.addColumn('string', 'Name');\n                data.addColumn('number', 'Quantity');\n                data.addRows(_array);\n                $scope.chart.dataModel.dataTable = data;\n                $scope.chart.options.legend = {\n                    position: 'none'\n                };\n                $scope.chart.type = 'BarChart';\n                break;\n\n            case 'sale-top-refund':\n                for (i = 0; i < _data.length; i++) {\n                    _array.push([_data[i].article.articleName, parseInt(_data[i].quantity)]);\n                }\n                data = new google.visualization.DataTable();\n                data.addColumn('string', 'Name');\n                data.addColumn('number', 'dashboard.quantity');\n                data.addRows(_array);\n                $scope.chart.options = {\n                    colors: ['#e0440e', '#e6693e', '#ec8f6e', '#f3b49f', '#f6c7b6']\n                };\n                $scope.chart.options.legend = {\n                    position: 'none'\n                };\n                $scope.chart.type = 'BarChart';\n                $scope.chart.dataModel.dataTable = data;\n                break;\n\n            case 'sale-main-group':\n                if($scope.selectedBusinessAreaId && $scope.selectedBusinessAreaId > 0 && $scope.businessAreas && $scope.businessAreas.length > 0){\n                    $scope.selectedBusinessArea = $scope.businessAreas.filter(x => x.id === $scope.selectedBusinessAreaId)[0];\n                }\n\n                _seriesColor = [];\n\n                for (i = 0; i < _data.length; i++) {\n                    x = parseInt(_data[i].sum);\n                    if (x > 0) {\n                        _array.push([_data[i].mainGroupDescription, x]);\n                        _seriesColor.push({color: getMySeriesColor(_data[i].mainGroupDescription)});\n                    }\n                }\n\n                data = new google.visualization.DataTable();\n                data.addColumn('string', 'Name');\n                data.addColumn('number', 'Price');\n                data.addRows(_array);\n                $scope.chart.dataModel.dataTable = data;\n                $scope.chart.type = 'PieChart';\n                $scope.chart.options.title =  $scope.selectedBusinessArea && $scope.selectedBusinessArea.id > 0 ? $translate.instant(\"maingroup.businessarea\") + \": \" + $scope.selectedBusinessArea.code + \" \" + $scope.selectedBusinessArea.name : \"\";\n                $scope.chart.options.slices = _seriesColor;\n                $scope.chart.options.chartArea = {left:15,top:30};\n                $scope.chart.options.width = 600;\n                $scope.chart.options.height = 300;\n                $scope.chart.options.fontSize = 11;\n                $scope.chart.options.isStacked = true;\n                break;\n\n            case 'sale-stock-main-group':\n                _seriesColor = [];\n                for (i = 0; i < _data.length; i++) {\n                    x = parseInt(_data[i].sum);\n                    if (x > 0) {\n                        _array.push([_data[i].mainGroupDescription, x]);\n                        _seriesColor.push({color: getMySeriesColor(_data[i].mainGroupDescription)});\n                    }\n                }\n\n                data = new google.visualization.DataTable();\n                data.addColumn('string', 'Name');\n                data.addColumn('number', 'Price');\n                data.addRows(_array);\n                $scope.chart.dataModel.dataTable = data;\n                $scope.chart.type = 'PieChart';\n                $scope.chart.options.slices = _seriesColor;\n                break;\n\n            case 'sale-30days':\n                data = new google.visualization.DataTable();\n                data.addColumn('date', 'Name');\n\n                var j;\n\n                //TODO: check this later when you have time\n                for (j in $scope.currentUser.locations) {\n                    data.addColumn('number', $scope.currentUser.locations[j].locationName);\n                }\n\n                for (i = 0; i < _data.length; i++) {\n\n                    __date = new Date(_data[i].transactionDate.replace(new RegExp('-', 'g'), '/'));\n\n                    var __marray = [];\n                    __marray.push(__date);\n\n                    for (j in $scope.currentUser.locations) {\n                        x = 0;\n                        try {\n                            for (var t in _data[i].locationGroup) {\n                                if (_data[i].locationGroup[t].location === $scope.currentUser.locations[j].locationName) {\n                                    x = parseInt(_data[i].locationGroup[t].sum);\n                                }\n                            }\n                        } catch (err) {\n                        }\n\n                        __marray.push({\n                            v: x,\n                            f: x + ' kr'\n                        });\n                    }\n\n                    _array.push(__marray);\n                }\n\n\n                data.addRows(_array);\n                $scope.chart.options = {\n                    bar: {\n                        groupWidth: '25%'\n                    },\n                    is3D: true\n                };\n                $scope.chart.dataModel.dataTable = data;\n                $scope.chart.type = 'ColumnChart';\n                $scope.chart.options.legend = {\n                    position: 'right'\n                };\n                $scope.chart.options.isStacked = true;\n                break;\n\n            case 'sale-frequency':\n                for (i = 0; i < _data.length; i++) {\n                    x = parseInt(_data[i].quantity);\n                    __date = new Date(_data[i].transactionDate.replace(new RegExp('-', 'g'), '/'));\n\n                    _array.push([__date, null, 0, x]);\n                }\n                data = new google.visualization.DataTable();\n                data.addColumn('date', 'Name');\n                data.addColumn('number', 'Sum');\n                data.addColumn('number', 'Sum1');\n                data.addColumn('number', 'Sum2');\n                data.addRows(_array);\n                $scope.chart.options = {\n                    highlightOnMouseOver: true,\n                    maxDepth: 1,\n                    maxPostDepth: 2,\n                    minHighlightColor: '#8c6bb1',\n                    midHighlightColor: '#9ebcda',\n                    maxHighlightColor: '#edf8fb',\n                    minColor: '#009688',\n                    midColor: '#f7f7f7',\n                    maxColor: '#ee8100',\n                    headerHeight: 15,\n                    showScale: true,\n                    height: 500,\n                    useWeightedAverageForAggregation: true\n                };\n                $scope.chart.dataModel.dataTable = data;\n                $scope.chart.type = 'ColumnChart';\n                break;\n            case 'sale-top-sold-7days':\n                for (i = 0; i < _data.length; i++) {\n                    _array.push([_data[i].article.articleName, parseInt(_data[i].quantity)]);\n                }\n                data = new google.visualization.DataTable();\n                data.addColumn('string', 'Name');\n                data.addColumn('number', 'Quantity');\n                data.addRows(_array);\n                $scope.chart.dataModel.dataTable = data;\n                $scope.chart.options.legend = {\n                    position: 'none'\n                };\n                $scope.chart.type = 'BarChart';\n                break;\n        }\n\n        function getBusinessAreas(){\n            BusinessAreasApiService.getBusinessAreas().then(function (businessAreasResponse){\n                return businessAreasResponse\n            });\n        }\n\n        function getMySeriesColor(key) {\n            if (null !== key || key !== undefined) {\n                key = key.trim();\n                var colors = ['#8dd3c7', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'];\n\n                if ($rootScope.chartColorAssocArray[key] === undefined) {\n                    $rootScope.chartColorAssocArray[key] = colors[Object.keys($rootScope.chartColorAssocArray).length];\n                }\n\n                return $rootScope.chartColorAssocArray[key];\n            }\n        }\n\n        initChart();\n        drawChart();\n\n        function initChart() {\n            $element.find('.chart-container').empty();\n\n            $scope.chart.elId = 'chart-' + Math.floor((Math.random() * 6000) + 1);\n            $element.find('.chart-container')\n                .append($compile(\"<div google-chart class='google_chart chart' chart='chartObject' id='\" + $scope.chart.elId + \"'></div>\")($scope));\n\n        }\n\n        function drawChart() {\n            //check for data\n            var chart = new google.visualization[$scope.chart.type](document.getElementById($scope.chart.elId));\n            chart.draw($scope.chart.dataModel.dataTable, $scope.chart.options);\n        }\n\n\n        $scope.$on('gridster-resized', function (sizes, gridster) {\n            $debounce(drawChart, 1);\n        });\n\n        $scope.$on('gridster-item-resized', function (item) {\n            $debounce(drawChart, 1);\n        });\n    }\n\n}\n","angular.module('directives.dashboard').directive('wgtInfoLatestTransaction', ['DashboardApiService',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtInfoLatestTransaction/wgtInfoLatestTransaction.tpl.html',\n                link: function ($scope, $element) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                var _data = response.data;\n                                $scope.transactionDate = _data[0].transactionDate;\n                                $scope.isLoaded = true;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n                    $scope.loadWidget();\n\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtInfoQuickSaleFact', ['DashboardApiService',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtInfoQuickSaleFact/wgtInfoQuickSaleFact.tpl.html',\n                link: function ($scope) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.widgetData = response.data;\n                                $scope.isLoaded = true;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n                    $scope.loadWidget();\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtInfoSaleBusinessArea', ['DashboardApiService', 'googleChartApiPromise',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtInfoSaleBusinessArea/wgtInfoSaleBusinessArea.tpl.html',\n                link: function ($scope, $element, googleChartApiPromise) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.widgetData = response.data;\n                                if(angular.isString($scope.item.setting)){\n                                    $scope.item.setting = JSON.parse($scope.item.setting);\n                                }\n                                $scope.selectedWidgetTimeFrame = $scope.item.setting === undefined ? 0 : $scope.item.setting.selectedWidgetTimeFrame;\n                                setTimeout(() => {\n                                    google.charts.setOnLoadCallback($scope.drawChart);\n                                }, 250);\n\n                                $scope.isLoaded = true;\n                                $scope.hasError = false;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n                    $scope.formatHtmlTooltip = function (data) {\n                        return \"<div \" + \n                            \"class=\\\"pieChartBA\\\">\" + \"<b>\" + data.businessArea.name+\"</b>\" + \"<br>\" + \n                            data.totalSalesPrice.toLocaleString() + \": (\" + (data.totalSalesPercent * 100).toFixed(1) + \"%)\" + \n                        \"</div>\"\n                    }\n                    $scope.drawChart = function() {\n\n                        var dataArray = [];\n                        _.forEach($scope.widgetData.salesBusinessAreaData, function(data) {\n                            dataArray.push([\n                                data.businessArea.name, \n                                parseFloat(data.totalSalesPrice), \n                                $scope.formatHtmlTooltip(data)\n                            ])\n                        });\n\n                        var dataTable = new google.visualization.DataTable();\n                        dataTable.addColumn(\"string\", \"BusinessArea\");\n                        dataTable.addColumn(\"number\",\"TotalSales\");\n                        dataTable.addColumn({type: \"string\", role: \"tooltip\", p: {'html': true}});\n                        dataTable.addRows(dataArray);\n\n                        var options = {\n                            chartArea: {left:15,top:30},\n                            width:600,\n                            height:300,\n                            fontSize: 11,\n                            isStacked: true,\n                            sliceVisibilityThreshold: 0,\n                            is3D: true,\n                            tooltip: {\n                                showColorCode : true,\n                                isHtml : true\n                            }\n                        };\n\n                        $scope.chart = new google.visualization.PieChart(document.getElementById(\"pieChart-\" + $scope.$id));\n\n                        $scope.chart.draw(dataTable, options);\n                    };\n                    $scope.loadWidget();\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtInfoSaleToLastYear', ['DashboardApiService',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtInfoSaleToLastYear/wgtInfoSaleToLastYear.tpl.html',\n                link: function ($scope, $element) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.widgetData = response.data;\n                                if(angular.isString($scope.item.setting)){\n                                    $scope.item.setting = JSON.parse($scope.item.setting);\n                                    $scope.selectedWidgetTimeFrame = $scope.item.setting.selectedWidgetTimeFrame ? $scope.item.setting.selectedWidgetTimeFrame : 0;\n                                }\n                                $scope.isLoaded = true;\n                                $scope.hasError = false;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n\n                    $scope.getDifferenceColour = function(value){\n                        return  value > 0 ? \"green\" : \n                                value < 0 ? \"red\" : \n                                /*ELSE*/    \"gray\";\n                    };\n                    \n                    $scope.loadWidget();\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtInfoTodayOrder', ['DashboardApiService',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtInfoTodayOrder/wgtInfoTodayOrder.tpl.html',\n                link: function ($scope, $element) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.widgetData = response.data;\n                                $scope.isLoaded = true;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n                    $scope.loadWidget();\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtInfoUndeliveredInternalOrder', ['DashboardApiService',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtInfoUndeliveredInternalOrder/wgtInfoUndeliveredInternalOrder.tpl.html',\n                link: function ($scope) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.count = response.data;\n                                $scope.isLoaded = true;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n                    $scope.loadWidget();\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtInfoYesterdaySaleBrv', ['DashboardApiService',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtInfoYesterdaySaleBrv/wgtInfoYesterdaySaleBrv.tpl.html',\n                link: function ($scope, $element) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.widgetData = response.data;\n                                $scope.isLoaded = true;\n                                $scope.hasError = false;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n                    $scope.loadWidget();\n                    $scope.anyVisitors = function () {\n                        return $scope.widgetData !== undefined ? _.some($scope.widgetData.locations, function(location){ return location.numberOfVisitors > 0 }): false\n                    };\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtInfoYesterdaySale', ['DashboardApiService',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtInfoYesterdaySale/wgtInfoYesterdaySale.tpl.html',\n                link: function ($scope, $element) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.widgetData = response.data;\n                                $scope.isLoaded = true;\n                                $scope.hasError = false;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n                    $scope.loadWidget();\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtOrderAutoOrders', ['DashboardApiService', '$state', '$window',\n        function (DashboardApiService, $state, $window) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtOrderAutoOrders/wgtOrderAutoOrders.tpl.html',\n                link: function ($scope, $element) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.filter = {\n                        show: false,\n                        businessArea: { id: -1, name: ' ' },\n                        brand: { id: -1, name: ' ' },\n                        orderType: \"all\"\n                    };\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.widgetData = response.data.autoOrderData;\n                                $scope.originalWidgetData = response.data.autoOrderData;\n                                $scope.hideTooltip = response.data.hideTooltip;\n                                $scope.distinctBrandIds = response.data.distinctBrandIds;\n                                $scope.distinctBusinessAreaIds = response.data.distinctBusinessAreaIds;\n                                $scope.isLoaded = true;\n                                $scope.hasError = false;\n\n                                $scope.$watch(function() { return $scope.filter.businessArea }, function(newValue, oldValue) {\n                                    $scope.filterData();\n                                }, true);\n                                $scope.$watch(function() { return $scope.filter.brand }, function(newValue, oldValue) {\n                                    $scope.filterData();\n                                }, true);\n                                $scope.$watch(function() { return $scope.filter.orderType }, function(newValue, oldValue) {\n                                    $scope.filterData();\n                                }, true);\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n\n                    $scope.filterData = function () {\n                        var newWidgetData = angular.copy($scope.originalWidgetData);\n\n                        if($scope.filter.businessArea.id !== undefined && $scope.filter.businessArea.id !== -1){\n                            newWidgetData = newWidgetData.filter(x => x.businessAreaIds.filter(y => y.id === $scope.filter.businessArea.id).length > 0);\n                        }\n\n                        if($scope.filter.brand.id !== undefined && $scope.filter.brand.id !== -1){\n                            newWidgetData = newWidgetData.filter(x => x.brandIds.filter(y => y.id === $scope.filter.brand.id).length > 0);\n                        }\n\n                        if(newWidgetData !== undefined){\n                            $scope.widgetData = newWidgetData.filter(x => $scope.filter.orderType === \"all\" || x.orderSystemType === $scope.filter.orderType);\n                        }\n\n                        /*\n                        $scope.distinctBrandIds = [];\n                        $scope.distinctBusinessAreaIds = [];\n\n                        _.forEach($scope.originalWidgetData, function(data){\n                            _.forEach(data.businessAreaIds, function(ba){\n                                if($scope.distinctBusinessAreaIds.filter(x => x.id === ba.id).length === 0){\n                                    $scope.distinctBusinessAreaIds.push(ba);\n                                }\n                            });\n                            _.forEach(data.brandIds, function(b){\n                                if($scope.distinctBrandIds.filter(x => x.id === b.id).length === 0){\n                                    $scope.distinctBrandIds.push(b);\n                                }\n                            });\n                        });*/\n                    };\n\n                    $scope.goToOrder = function (orderId) {\n                        if(orderId !== undefined){\n                            var href = $state.href('order.ordersearch', { orderId: orderId });;\n                            $window.open(href);\n                        }\n                    };\n                    $scope.orderAutoOrder_OrderBy = 'orderCreatedDate';\n                    $scope.orderAutoOrder_Reverse = true;\n                    $scope.changeSortOrder = function (objectName) {\n                        if($scope.orderAutoOrder_OrderBy === objectName){\n                            if($scope.orderAutoOrder_Reverse){\n                                $scope.orderAutoOrder_OrderBy = undefined;\n                                $scope.orderAutoOrder_Reverse = undefined;\n                            }\n                            else{\n                                $scope.orderAutoOrder_Reverse = true;\n                            }\n                        }\n                        else{\n                            $scope.orderAutoOrder_OrderBy = objectName;\n                            $scope.orderAutoOrder_Reverse = false;\n                        }\n                    };\n                    $scope.loadWidget();\n                }\n            };\n        }]\n);\n","\r\n// function wgtPrintableImports(DashboardApiService) {\r\n//     return {\r\n//         templateUrl: '/directives/dashboard/widgets/wgtPrintableImports/wgtPrintableImports.tpl.html',\r\n//         link: function ($scope, $element) {\r\n//             $scope.isLoaded = false;\r\n//             $scope.hasError = false;\r\n//             $scope.loadWidget = loadWidget;\r\n//             $scope.loadWidget(DashboardApiService, $scope);\r\n\r\n//         }\r\n//     };\r\n// }\r\n\r\n// function loadWidget(dashboardApiService, scope) {\r\n//     dashboardApiService.getWidgetData(scope.item.name, scope.item.setting)\r\n//     .then(function (response) {\r\n//         var _data = response.data;\r\n//         scope.transactionDate = _data[0].transactionDate;\r\n//         scope.isLoaded = true;\r\n//     }, function (response) {\r\n//         scope.hasError = true;\r\n//     });\r\n\r\n// }\r\n\r\n// angular.module('directives.dashboard')\r\n//     .directive('wgtPrintableImports', wgtPrintableImports);\r\n\r\n\r\n// angular.module('directives.dashboard').directive('wgtPrintableImports', ['DashboardApiService',\r\n//     function (DashboardApiService) {\r\n//         return {\r\n//             templateUrl: 'directives/dashboard/widgets/wgtPrintableImports/wgtPrintableImports.tpl.html',\r\n//             link: function ($scope, $element) {\r\n//                 $scope.isLoaded = false;\r\n//                 $scope.hasError = false;\r\n//                 $scope.loadWidget = function () {\r\n//                     DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\r\n//                         .then(function (response) {\r\n//                             var _data = response.data;\r\n//                             $scope.transactionDate = _data[0].transactionDate;\r\n//                             $scope.isLoaded = true;\r\n//                         }, function (response) {\r\n//                             $scope.hasError = true;\r\n//                         });\r\n//                 };\r\n//                 $scope.loadWidget();\r\n//             }\r\n//         };\r\n//     }]\r\n// );\r\n\r\n\r\n\r\nangular\r\n    .module('directives.dashboard')\r\n    .directive('wgtPrintableImports', ['DashboardApiService', '$state', 'loadSpinnerService', 'FileDataImportApiServiceV2', 'ToasterService', '$translate', directiveFactory]);\r\n\r\n// @ngInject\r\nfunction directiveFactory (DashboardApiService, $state, loadSpinnerService, FileDataImportApiServiceV2, ToasterService, $translate) {\r\n    return {\r\n        templateUrl: 'directives/dashboard/widgets/wgtPrintableImports/wgtPrintableImports.tpl.html',\r\n        link: function ($scope, $element) {\r\n            $scope.isLoaded = false;\r\n            $scope.hasError = false;\r\n            $scope.loadWidget = function () {\r\n                DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\r\n                    .then(function (response) {\r\n                        var _data = response.data;\r\n                        $scope.importFiles = _data;\r\n                        $scope.isLoaded = true;\r\n                    }, function (response) {\r\n                        $scope.hasError = true;\r\n                    });\r\n            };\r\n            $scope.gotoImportFile = function(id) {\r\n                $state.go('product.productimporteditor', { importFileId: id });\r\n            };\r\n            $scope.printImportFile = function(id) {\r\n                loadSpinnerService.start('mainSpinner');\r\n                FileDataImportApiServiceV2.getPdfLabels(id, $scope.selectedLocationId).then(function(response) {\r\n                    // Success, reload widget\r\n                    $scope.loadWidget();\r\n                },function(error) {\r\n                    console.log(error);\r\n                    if (error.status === 444) {\r\n                        ToasterService.showInfo($translate.instant('widget.printable-imports.no-stock'));   \r\n                        $scope.loadWidget(); \r\n                    } else {\r\n                        ToasterService.showError($translate.instant('failure'));\r\n                    }\r\n                }).finally(function() {\r\n                    loadSpinnerService.stop('mainSpinner');\r\n                });\r\n            };\r\n            $scope.loadWidget();\r\n        }\r\n    };\r\n}\r\n","angular.module('directives.dashboard').directive('wgtSaleTop', ['DashboardApiService',\n    function (DashboardApiService) {\n        return {\n            templateUrl: 'directives/dashboard/widgets/wgtSaleTop/wgtSaleTop.tpl.html',\n            link: function ($scope) {\n                $scope.isLoaded = false;\n                $scope.hasError = false;\n\n                $scope.loadWidget = function () {\n                    DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                        .then(function (response) {\n                            if (response.data === '') {\n                                //No data, leaving\n                                return;\n                            }\n                            $scope.widgetData = response.data;\n                            $scope.isLoaded = true;\n                        }, function (response) {\n                            $scope.hasError = true;\n                        });\n                };\n                $scope.loadWidget();\n            }\n        };\n    }\n]);\n","angular.module('directives.dashboard').directive('wgtSaleTwoWeek', ['DashboardApiService',\n        function (DashboardApiService) {\n            return {\n                templateUrl: 'directives/dashboard/widgets/wgtSaleTwoWeek/wgtSaleTwoWeek.tpl.html',\n                link: function ($scope) {\n                    $scope.isLoaded = false;\n                    $scope.hasError = false;\n                    $scope.loadWidget = function () {\n                        DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                            .then(function (response) {\n                                $scope.data = response.data;\n                                $scope.isLoaded = true;\n                            }, function (response) {\n                                $scope.hasError = true;\n                            });\n                    };\n                    $scope.loadWidget();\n                }\n            };\n        }]\n);\n","angular.module('directives.dashboard').directive('wgtUndeliveredOrders', ['DashboardApiService','$state',\n    function (DashboardApiService, $state) {\n        return {\n            templateUrl: 'directives/dashboard/widgets/wgtUndeliveredOrders/wgtUndeliveredOrders.tpl.html',\n            link: function ($scope) {\n                $scope.isLoaded = false;\n                $scope.hasError = false;\n                $scope.loadWidget = function () {\n                    DashboardApiService.getWidgetData($scope.item.name, $scope.item.setting)\n                        .then(function (response) {\n                            if (response.data === '') {\n                                //No data, leaving\n                                return;\n                            }\n                            $scope.widgetData = response.data;\n                            $scope.isLoaded = true;\n                        }, function (response) {\n                            $scope.hasError = true;\n                        });\n                };\n                $scope.goToOrder = function(orderId)  {\n                    $state.go('order.orderdelivery', { orderId: orderId });\n                };\n                $scope.abs = function(value) {\n                    return Math.abs(value);\n                };\n                $scope.loadWidget();\n            }\n        };\n    }\n]);\n","angular.module('directives', [\n    'directives.restrictAccess',\n    'directives.loadSpinner',\n    'directives.uiNav',\n    'directives.uiToggleClass',\n    'directives.editableDecimal',\n    'directives.smartDecimal',\n    'directives.percentInput',\n    'directives.dashboard',\n    'directives.enterAsTab'\n]);\n","// @ngInject\nfunction editableDecimal(editableDirectiveFactory) {\n    return editableDirectiveFactory({\n        directiveName: 'editableDecimal',\n        inputTpl: '<input type=\"text\" smart-decimal class=\"form-control\">'\n    });\n}\n\nangular\n    .module('directives.editableDecimal', [])\n    .directive('editableDecimal', editableDecimal);\n","// @ngInject\nfunction enterAsTab() {\n    return function(scope, element, attrs) {\n        element.bind(\"keydown keypress\", function(event) {\n            var fields = $(this).parents('form:eq(0), body').find('input.enterAsTab, textarea.enterAsTab, select.enterAsTab, ui-select.enterAsTab');\n            var index = fields.index(this);\n\n            if (event.which === 13 && event.shiftKey) {\n                event.preventDefault();\n                if (index > -1 && (index - 1) >= 0) {\n                  fields.eq(index - 1).focus().select();\n                }\n            } else if (event.which === 13) {\n                event.preventDefault();\n                if (index > -1 && (index + 1) < fields.length) {\n                  fields.eq(index + 1).focus().select();\n                }\n            }\n        });\n    };\n}\n\n// Moves the focus to the next input area instead of submitting the form.\nangular.module('directives.enterAsTab', [])\n    .directive('enterAsTab', enterAsTab);\n","// @ngInject\nfunction loadSpinnerService($rootScope) {\n    return {\n        start: start,\n        stop: stop\n    };\n\n    function start(name, opt) {\n        var options = opt || { message: '' };\n        options.message = options.message || '';\n        $rootScope.$applyAsync(function() {\n            $rootScope.$emit(name + '-start', options);\n        });\n    }\n\n    function stop(name, opt) {\n        var options = opt || {};\n        options.force = options.force || false;\n        $rootScope.$applyAsync(function() {\n            $rootScope.$emit(name + '-stop', options);\n        });\n    }\n}\n\n// @ngInject\nfunction loadSpinner($rootScope,usSpinnerService) {\n    return {\n        templateUrl: 'directives/loadSpinner/loadSpinner.tpl.html',\n        restrict: 'EA',\n        replace: true,\n        scope: {\n            spinnerName: '@',\n            spinnerMessage: '@'\n        },\n        link: function($scope) {\n            var loaders = 0;\n\n            $rootScope.$on($scope.spinnerName + '-start', function(event, data) {\n                $scope.isLoading = true;\n                $scope.spinnerMessage = data.message;\n                usSpinnerService.spin($scope.spinnerName);\n                loaders = loaders + 1;\n            });\n\n            $rootScope.$on($scope.spinnerName + '-stop', function(event, data) {\n                loaders = loaders > 0 ? loaders - 1 : loaders;\n                if (loaders === 0 || data.force === true) {\n                    usSpinnerService.stop($scope.spinnerName);\n                    $scope.isLoading = false;\n                }\n            });\n        }\n    };\n}\n\nangular\n    .module('directives.loadSpinner', ['angularSpinner'])\n    .service('loadSpinnerService', loadSpinnerService)\n    .directive('loadSpinner', loadSpinner);\n","// @ngInject\nfunction percentInput($filter) {\n    var onViewChange = function(viewValue) {\n        var m = viewValue.match(/^(\\d+)\\/(\\d+)/);\n        if (m != null) {\n          var newValueParsed = $filter('number')(parseInt(m[1])/parseInt(m[2]), 2);\n          newValueParsed = newValueParsed.replace(/,/, '.');\n          return newValueParsed;\n        }\n        var newValueUnparsed = $filter('number')(parseFloat(viewValue) / 100, 2);\n        newValueUnparsed = newValueUnparsed.replace(/,/, '.');\n        return newValueUnparsed;\n    };\n\n    var onModelChange = function(modelValue) {\n        var newValue = $filter('number')(parseFloat(modelValue) * 100);\n        newValue = newValue.replace(/,/, '.');\n        return newValue;\n    };\n\n    return {\n        require: 'ngModel',\n        link: function(scope, ele, attr, ctrl) {\n            ctrl.$parsers.unshift(onViewChange);\n            ctrl.$formatters.unshift(onModelChange);\n        }\n    };\n}\n\nangular\n    .module('directives.percentInput', [])\n    .directive(\"percentInput\", percentInput);\n","// @ngInject\nfunction restrictAccess(AuthService) {\n    return {\n        restrict: 'A',\n        scope: false,\n        compile:  function(element, attr) {\n            if (!attr.access || AuthService.canAccess(attr.access, attr.permission)) {\n                return;\n            }\n\n            // For IE 8\n            angular.forEach(element.children(), function(elm) {\n                try {\n                    elm.remove();\n                }\n                catch (ignore) {}\n            });\n\n            element.remove();\n        }\n    };\n}\n\nangular\n    .module('directives.restrictAccess', [])\n    .directive('access', restrictAccess);\n","// @ngInject\nfunction smartDecimal() {\n    var DECIMAL_REGEXP_1 = /^\\$?\\d+.(\\d{3})*(\\,\\d*)$/;  // Matches: 1.123,56\n    var DECIMAL_REGEXP_2 = /^\\$?\\d+,(\\d{3})*(\\.\\d*)$/;  // Matches: 1,123.56\n    var DECIMAL_REGEXP_3 = /^\\$?\\d+(\\.\\d*)?$/;          // Matches: 1123.56\n    var DECIMAL_REGEXP_4 = /^\\$?\\d+(\\,\\d*)?$/;          // Matches: 1123,56\n\n    return {\n        require: 'ngModel',\n        link: function(scope, elm, attrs, ctrl) {\n            ctrl.$parsers.unshift(function(viewValue) {\n                if (DECIMAL_REGEXP_1.test(viewValue)) {\n                    ctrl.$setValidity('decimal', true);\n                    return parseFloat(viewValue.replace('.', '').replace(',', '.'));\n                } else if (DECIMAL_REGEXP_2.test(viewValue)) {\n                    ctrl.$setValidity('decimal', true);\n                    return parseFloat(viewValue.replace(',', ''));\n                } else if (DECIMAL_REGEXP_3.test(viewValue)) {\n                    ctrl.$setValidity('decimal', true);\n                    return parseFloat(viewValue);\n                } else if (DECIMAL_REGEXP_4.test(viewValue)) {\n                    ctrl.$setValidity('decimal', true);\n                    return parseFloat(viewValue.replace(',', '.'));\n                } else {\n                    ctrl.$setValidity('decimal', false);\n                    return undefined;\n                }\n            });\n        }\n    };\n}\n\nangular\n    .module('directives.smartDecimal', [])\n    .directive('smartDecimal', smartDecimal);\n","// jscs:disable\n// jshint ignore: start\nangular.module('directives.uiNav', [])\n  .directive('uiNav', ['$timeout', function($timeout) {\n    return {\n      restrict: 'AC',\n      link: function(scope, el, attr) {\n          var _window, _mb, wrap, next, backdrop;\n          _window = $(window);\n          _mb = 768;\n          wrap = $('.app-aside');\n          backdrop = '.dropdown-backdrop';\n        // unfolded\n        el.on('click', 'a', function(e) {\n          if (next) {next.trigger('mouseleave.nav');}\n          var _this = $(this);\n          _this.parent().siblings(\".active\").toggleClass('active');\n          if (_this.next().is('ul')) {\n              if(this.parent) {\n                this.parent().toggleClass('active');\n              }\n              e.preventDefault();\n          }\n          // mobile\n          _this.next().is('ul') || ((_window.width() < _mb) && $('.app-aside').removeClass('show off-screen'));\n        });\n\n        // folded & fixed\n        el.on('mouseenter', 'a', function(e) {\n          next && next.trigger('mouseleave.nav');\n          $('> .nav', wrap).remove();\n          if (!$('.app-aside-fixed.app-aside-folded').length || (_window.width() < _mb) || $('.app-aside-dock').length) return;\n          var _this = $(e.target), top, w_h = $(window).height(), offset = 50, min = 150;\n          !_this.is('a') && (_this = _this.closest('a'));\n          if (_this.next().is('ul')) {\n             next = _this.next();\n          } else {\n            return;\n          }\n          _this.parent().addClass('active');\n          top = _this.parent().position().top + offset;\n          next.css('top', top);\n          if (top + next.height() > w_h) {\n            next.css('bottom', 0);\n          }\n          if (top + min > w_h) {\n            next.css('bottom', w_h - top - offset).css('top', 'auto');\n          }\n          next.appendTo(wrap);\n\n          next.on('mouseleave.nav', function(e) {\n            $(backdrop).remove();\n            next.appendTo(_this.parent());\n            next.off('mouseleave.nav').css('top', 'auto').css('bottom', 'auto');\n            _this.parent().removeClass('active');\n          });\n\n          $('.smart').length && $('<div class=\"dropdown-backdrop\"/>').insertAfter('.app-aside').on('click', function(next) {\n            next && next.trigger('mouseleave.nav');\n          });\n\n        });\n\n        wrap.on('mouseleave', function(e) {\n          next && next.trigger('mouseleave.nav');\n          $('> .nav', wrap).remove();\n        });\n      }\n    };\n  }]);\n","angular.module('directives.uiToggleClass', [])\n  .directive('uiToggleClass', ['$timeout', '$document', function($timeout, $document) {\n    return {\n      restrict: 'AC',\n      link: function(scope, el, attr) {\n        /* jshint ignore:start */\n        el.on('click', function(e) {\n          e.preventDefault();\n          var classes = attr.uiToggleClass.split(','),\n              targets = (attr.target && attr.target.split(',')) || new Array(el),\n              key = 0;\n          angular.forEach(classes, function(_class) {\n            var target = targets[(targets.length && key)];\n            if (_class.indexOf('*') !== -1) { magic(_class, target); }\n            $(target).toggleClass(_class);\n            key++;\n          });\n          $(el).toggleClass('active');\n\n          function magic(_class, target) {\n            var patt = new RegExp('\\\\s' + _class.replace(/\\*/g, '[A-Za-z0-9-_]+').split(' ').join('\\\\s|\\\\s') + '\\\\s', 'g');\n            var cn = ' ' + $(target)[0].className + ' ';\n            while (patt.test(cn)) {\n              cn = cn.replace(patt, ' ');\n            }\n            $(target)[0].className = $.trim(cn);\n          }\n        });\n        /* jshint ignore:end */\n      }\n    };\n  }]);\n","angular.module('filters', ['filters.propsFilter',\n                           'filters.multiPartFilter'\n]);\n","// @ngInject\nfunction multiPartFilter() {\n    return function(items, search, searchables, limit) {\n        var out = [];\n\n        if (limit && limit.minimumInputLength && search.searchTerm.length < limit.minimumInputLength) {\n            return out;\n        }\n\n        var ks = Object.keys(search);\n        var searchTerms = search[ks[0]].split(\" \");\n        var searchableTerms = searchables.searchableTerms;\n\n        if (angular.isArray(items) && searchTerms[0] !== \"\") {\n            var matchingItems = _.filter(items, function(item) {\n                var searchTermsThatMatches = [];\n\n                _.forEach(searchTerms, function(searchTerm) {\n                    _.forEach(searchableTerms, function(key) {\n                        if (item[key].toString().toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1 && item[key].toString() !== \"[object Object]\") {\n                            searchTermsThatMatches.push(searchTerm);\n                        }\n                    });\n                });\n\n                if (searchTerms.length <= searchTermsThatMatches.length) { // If every search term is a match.\n                    return true;\n                } else {\n                    return false;\n                }\n            });\n\n            _.forEach(matchingItems, function(item) {\n               out.push(item);\n            });\n        } else {\n            // Let the output be the input untouched\n            out = items;\n        }\n\n        return out;\n    };\n}\n\nangular.module('filters.multiPartFilter', [])\n    .filter('multiPartFilter',multiPartFilter);\n","// @ngInject\nfunction propsFilter() {\n    return function(items, props) {\n        var out = [];\n\n        if (angular.isArray(items)) {\n            items.forEach(function(item) {\n                var itemMatches = false;\n\n                var keys = Object.keys(props);\n                for (var i = 0; i < keys.length; i++) {\n                    var prop = keys[i];\n                    var text = props[prop].toLowerCase();\n                    if (item[prop].toString().toLowerCase().indexOf(text) !== -1) {\n                        itemMatches = true;\n                        break;\n                    }\n                }\n\n                if (itemMatches) {\n                    out.push(item);\n                }\n            });\n        } else {\n            // Let the output be the input untouched\n            out = items;\n        }\n\n        return out;\n    };\n}\n\nangular.module('filters.propsFilter', [])\n    .filter('propsFilter',propsFilter);\n","// @ngInject\nfunction FileDataImportApiService($q, DS, DSHttpAdapter, ResourcesService) {\n    return {\n        createArticlesOrders: createArticlesOrders,\n        getImportFiles: getImportFiles,\n        getImportFile: getImportFile,\n        updateArticlesOrdersImportFile: updateArticlesOrdersImportFile,\n        updateAndFinalizeArticlesOrdersImportFile: updateAndFinalizeArticlesOrdersImportFile,\n        deleteArticlesOrdersImportFile: deleteArticlesOrdersImportFile,\n        getArticlesOrdersImportColumnMapping: getArticlesOrdersImportColumnMapping,\n        setArticlesOrdersImportColumnMapping: setArticlesOrdersImportColumnMapping,\n        getSuppliers: getSuppliers,\n        getArticleCollections: getArticleCollections,\n        getLocations: getLocations,\n        getItemGroups: getItemGroups\n    };\n\n    function createArticlesOrders(requestDto) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'articlesorders', requestDto).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getImportFiles(page, filter, pageSize) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articlesorders', {params: params}).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getImportFile(importFileId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articlesorders/' + importFileId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateArticlesOrdersImportFile(importFileData) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'articlesorders/', importFileData).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateAndFinalizeArticlesOrdersImportFile(importFileData) {\n        var deferred = $q.defer();\n\n        console.log(\"Finalizing with data:\");\n        console.log(importFileData);\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'articlesorders/finalize', importFileData).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteArticlesOrdersImportFile(importId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.DEL(DS.defaults.basePath + 'articlesorders/' + importId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getArticlesOrdersImportColumnMapping(companyId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articlesorders/mapping/company/' + companyId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function setArticlesOrdersImportColumnMapping(companyId, mappingRequest) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'articlesorders/mapping/company/' + companyId, mappingRequest).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getSuppliers() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articlesorders/suppliers').then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getArticleCollections() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articlesorders/articlecollections').then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getLocations() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articlesorders/locations').then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getItemGroups() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'articlesorders/itemgroupbriefs').then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular.module('filedataimport.api', [])\n    .factory('FileDataImportApiService', FileDataImportApiService);\n","// @ngInject\nfunction FileDataImportApiServiceV2($q, DS, DSHttpAdapter, ResourcesService, $window) {\n\n    var endpoint = 'productimport';\n\n    return {\n        checkForConnectionWithArticleData: checkForConnectionWithArticleData,\n        connectWithArticleData: connectWithArticleData,\n        createProductImportEntry: createProductImportEntry,\n        deleteProductImportFile: deleteProductImportFile,\n        getArticleCollections: getArticleCollections,\n        getArticleTypes: ResourcesService.apiFactory.get(endpoint + '/articletypesbrief'),\n        getColumnMapping: getColumnMapping,\n        getImportFiles: getImportFiles,\n        getImportFile: getImportFile,\n        getLocations: getLocations,\n        getOrderCollections: getOrderCollections,\n        getSuppliers: getSuppliers,\n        getCompanies:getCompanies,\n        saveColumnMapping: saveColumnMapping,\n        updateImportFile: updateImportFile,\n        updateFileRow: updateFileRow,\n        updateFileRows: updateFileRows,\n        deleteFileRow: deleteFileRow,\n        finalizeImport: finalizeImport,\n        getItemGroups: getItemGroups,\n        getItemGroupsOnFileId: getItemGroupsOnFileId,\n        getDepartments: ResourcesService.apiFactory.get(endpoint + '/departmentsbrief'),\n        getSubCategories: ResourcesService.apiFactory.get(endpoint + '/subcategoriesbrief'),\n        getCurrencyDefault: ResourcesService.apiFactory.get(endpoint + '/currencies/default'),\n        getCurrencies: ResourcesService.apiFactory.get(endpoint + '/currencies'),\n        validateImportFileWithId: validateImportFileWithId,\n        checkImportFileDataExistence: checkImportFileDataExistence,\n        getSalesChannels: ResourcesService.apiFactory.get(endpoint + '/saleschannels'),\n        getCountries: ResourcesService.apiFactory.get(endpoint + '/countries'),\n        getMissingSiblingRows: getMissingSiblingRows,\n        getPdfLabels: getPdfLabels,\n        existsSiblingPrices: existsSiblingPrices,\n        getTenantConfig: getTenantConfig\n    };\n\n    function getTenantConfig() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + \"/tenantconfig\").then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function existsSiblingPrices(importFileId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + \"/existssiblingprices/\" + importFileId).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getMissingSiblingRows(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + \"/siblingrows/\", request).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s]){1,}.pdf/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n\n    function getPdfLabels(importFileId, locationId) {\n        var deferred = $q.defer();\n        var request = {\n            importFileId: importFileId,\n            locationId: locationId\n        };\n\n        DSHttpAdapter.GET(DS.defaults.basePath + endpoint + \"/labels\", {params: request, responseType: 'arraybuffer'}).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'labels.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;   \n    }\n\n    function checkForConnectionWithArticleData(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/check/articledata', request).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function connectWithArticleData(request) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + endpoint + '/connect/articledata', request).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function createProductImportEntry(requestDto) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'productimport/create', requestDto).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getImportFiles(page, filter, pageSize) {\n        var deferred = $q.defer();\n        var params = {};\n\n        if (page && page > 1) {\n            params.page = page - 1;\n        }\n\n        if (pageSize && pageSize > 0) {\n            params.pageSize = pageSize;\n        }\n\n        if (!_.isEmpty(filter)) {\n            params.searchTerm = filter;\n        }\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/files', {params: params}).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getImportFile(importFileId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/files/' + importFileId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getSuppliers() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/suppliers').then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getLocations() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/locations').then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getArticleCollections(onlyCurrent) {\n        var deferred = $q.defer();\n\n        var request = {\n            onlyCurrent: onlyCurrent\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'productimport/articlecollections', request).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getOrderCollections(onlyCurrent) {\n        var deferred = $q.defer();\n\n        var request = {\n            onlyCurrent: onlyCurrent\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'productimport/ordercollections', request).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n\n\n    function saveColumnMapping(companyId, mappingRequest) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'productimport/mapping/' + companyId, mappingRequest).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateImportFile(importFile) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'productimport/', importFile).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateFileRow(importRow) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'productimport/row', importRow).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function updateFileRows(importRows) {\n        var deferred = $q.defer();\n\n        var request = {\n            rows: importRows\n        };\n\n        DSHttpAdapter.PUT(DS.defaults.basePath + 'productimport/rows', request).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteFileRow(importRow) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.DEL(DS.defaults.basePath + 'productimport/row/' + importRow.id).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function finalizeImport(importFileId, priceUpdateGroupingLevel) {\n        var deferred = $q.defer();\n\n        var request = {\n            importFileId: importFileId,\n            grouping: priceUpdateGroupingLevel\n        };\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'productimport/finalize/', request).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        // DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/finalize/' + importFileId).then(function(response) {\n        //     deferred.resolve(response.data);\n        // }, function(error) {\n        //     deferred.reject(handleError(error));\n        // });\n\n        return deferred.promise;\n    }\n\n    function getColumnMapping(companyId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/mapping/' + companyId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function deleteProductImportFile(importId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.DEL(DS.defaults.basePath + 'productimport/files/' + importId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getItemGroups() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/itemgroupbriefs').then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getItemGroupsOnFileId(fileId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/itemgroupbriefs/' + fileId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function getCompanies() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/suppliers').then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function validateImportFileWithId(importFileId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/validatefile/' + importFileId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function checkImportFileDataExistence(importFileId) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'productimport/checkimportfile/' + importFileId).then(function(response) {\n            deferred.resolve(response.data);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular.module('filedataimportv2.api', [])\n    .factory('FileDataImportApiServiceV2', FileDataImportApiServiceV2);\n","// @ngInject\nfunction FileOperationsApiService($q, $cookies, $window, DS, DSHttpAdapter, ResourcesService) {\n\n    return {\n        downloadLabels: downloadLabels,\n        downloadPdfFile: downloadPdfFile\n    };\n\n    function getFileName(contentDisposition, defaultValue) {\n        //\"attachment; filename=PickingList36013.pdf\"\n        var filename = defaultValue;\n        if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {\n            var filenameRegex = /(?![=]{1})([\\w\\d\\s]){1,}.pdf/ig;\n            var matches = new RegExp(filenameRegex).exec(contentDisposition);\n            if (matches != null && matches[0]) {\n                filename = matches[0];\n            }\n        }\n        return filename;\n    }\n\n    function downloadLabels(fileName) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'file/labels/' + fileName, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'labels.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function downloadPdfFile(fileName) {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'file/' + fileName, { responseType: 'arraybuffer' }).then(function(response) {\n            var blob = new Blob([response.data], {type: 'application/pdf'});\n            var contentDisposition = response.headers('Content-Disposition');\n            var fileName = getFileName(contentDisposition, 'file.pdf');\n\n            if ($window.navigator.msSaveBlob) {\n                $window.navigator.msSaveBlob(blob, fileName);\n            } else {\n                var a = document.createElement(\"a\");\n                document.body.appendChild(a);\n                a.style = \"display: none\";\n\n                var url = window.URL.createObjectURL(blob);\n                a.href = url;\n                a.download = fileName;\n                a.click();\n                window.URL.revokeObjectURL(url);\n\n                a.parentNode.removeChild(a);\n            }\n\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular.module('fileoperations.api', [])\n    .factory('FileOperationsApiService', FileOperationsApiService);\n","// @ngInject\nfunction ResourcesService($translate, $q,DS, DSHttpAdapter, $rootScope) {\n    var savedTimestamps = [];\n    var apiFactory = {\n        get: apiFactoryGet,\n        create: apiFactoryCreate,\n        update: apiFactoryUpdate,\n        save: apiFactorySave,\n        delete: apiFactoryDelete\n    };\n\n    var apiRms2Factory = {\n        get: apiRms2FactoryGet,\n        create: apiRms2FactoryCreate,\n        update: apiRms2FactoryUpdate,\n        save: apiRms2FactorySave,\n        delete: apiRms2FactoryDelete\n    };\n\n    return {\n        handleResourceError: handleResourceError,\n        updateSavedTimestamp: updateSavedTimestamp,\n        getSavedTimestamp: getSavedTimestamp,\n        apiFactory: apiFactory,\n        apiRms2Factory: apiRms2Factory\n    };\n\n\n    function apiFactoryGet(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = null;\n            if (!req && !isNaN(args)) {\n                req = DSHttpAdapter.GET(DS.defaults.basePath + relativeUrl + '/' + args);\n            }\n            if (!req) {\n                if (args && !args.params) {\n                    args = { params: args};\n                }\n                req = DSHttpAdapter.GET(DS.defaults.basePath + relativeUrl, args);\n            }\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function apiFactoryDelete(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = null;\n            if (!req && !isNaN(args)) {\n                req = DSHttpAdapter.DEL(DS.defaults.basePath + relativeUrl + '/' + args);\n            }\n            if (!req) {\n                req = DSHttpAdapter.DEL(DS.defaults.basePath + relativeUrl, args);\n            }\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n                $rootScope.$emit(typeName + '.Deleted', response.data);\n                $rootScope.$emit(typeName + '.Changed', response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function apiFactoryUpdate(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        if (!typeName) {\n            typeName = 'Object';\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = DSHttpAdapter.PUT(DS.defaults.basePath + relativeUrl, args);\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n                $rootScope.$emit(typeName + '.Updated', response.data);\n                $rootScope.$emit(typeName + '.Changed', response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function apiFactorySave(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        if (!typeName) {\n            typeName = 'Object';\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = DSHttpAdapter.POST(DS.defaults.basePath + relativeUrl, args);\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n                $rootScope.$emit(typeName + '.Saved', response.data);\n                $rootScope.$emit(typeName + '.Changed', response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function apiFactoryCreate(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        if (!typeName) {\n            typeName = 'Object';\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = DSHttpAdapter.POST(DS.defaults.basePath + relativeUrl, args);\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n                $rootScope.$emit(typeName + '.Created', response.data);\n                $rootScope.$emit(typeName + '.Changed', response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    \n    function apiRms2FactoryGet(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = null;\n            if (!req && !isNaN(args)) {\n                req = DSHttpAdapter.GET(DS.defaults.rms2Path + relativeUrl + '/' + args);\n            }\n            if (!req) {\n                if (args && !args.params) {\n                    args = { params: args};\n                }\n                req = DSHttpAdapter.GET(DS.defaults.rms2Path + relativeUrl, args);\n            }\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function apiRms2FactoryDelete(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = null;\n            if (!req && !isNaN(args)) {\n                req = DSHttpAdapter.DEL(DS.defaults.rms2Path + relativeUrl + '/' + args);\n            }\n            if (!req) {\n                req = DSHttpAdapter.DEL(DS.defaults.rms2Path + relativeUrl, args);\n            }\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n                $rootScope.$emit(typeName + '.Deleted', response.data);\n                $rootScope.$emit(typeName + '.Changed', response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function apiRms2FactoryUpdate(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        if (!typeName) {\n            typeName = 'Object';\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = DSHttpAdapter.PUT(DS.defaults.rms2Path + relativeUrl, args);\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n                $rootScope.$emit(typeName + '.Updated', response.data);\n                $rootScope.$emit(typeName + '.Changed', response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function apiRms2FactorySave(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        if (!typeName) {\n            typeName = 'Object';\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = DSHttpAdapter.POST(DS.defaults.rms2Path + relativeUrl, args);\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n                $rootScope.$emit(typeName + '.Saved', response.data);\n                $rootScope.$emit(typeName + '.Changed', response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function apiRms2FactoryCreate(relativeUrl, typeName, errorHandler) {\n\n        if (!errorHandler) {\n            errorHandler = handleResourceError;\n        }\n\n        if (!typeName) {\n            typeName = 'Object';\n        }\n\n        return function(args) {\n\n            var deferred = $q.defer();\n            var req = DSHttpAdapter.POST(DS.defaults.rms2Path + relativeUrl, args);\n\n            req.then(function(response) {\n                deferred.resolve(response.data);\n                $rootScope.$emit(typeName + '.Created', response.data);\n                $rootScope.$emit(typeName + '.Changed', response.data);\n            }, function(error) {\n                deferred.reject(errorHandler(error));\n            });\n\n            return deferred.promise;\n\n        };\n    }\n\n    function handleResourceError(httpError) {\n        var error = {\n            status: httpError.status,\n            message: \"\",\n            errors: []\n        };\n\n        // Add child errors\n        if (httpError.data && !_.isEmpty(httpError.data.errors)) {\n            error.errors = _.transform(httpError.data.errors, function(result, n, key) {\n                result[key] = {message: n.errorMessage};\n            });\n        }\n\n        // Add correct error message\n        if (httpError.data && !_.isEmpty(httpError.data.message)) {\n            error.message = httpError.data.message;\n        } else {\n            switch (httpError.status) {\n                case 0:\n                    error.message = $translate.instant('errors.noconnection');\n                    break;\n                case 401:\n                    error.message = $translate.instant('errors.unauthorized');\n                    break;\n                case 404:\n                    error.message = $translate.instant('errors.notfound');\n                    break;\n                default:\n                    error.message = $translate.instant('errors.other');\n                    break;\n            }\n        }\n\n        return error;\n    }\n\n    function updateSavedTimestamp(resource) {\n        savedTimestamps[resource] = Date.now();\n    }\n\n    function getSavedTimestamp(resource) {\n        return savedTimestamps[resource] || 0;\n    }\n}\n\nangular\n    .module('resources', [\n            'fileoperations.api',\n            'filedataimport.api',\n            'filedataimportv2.api',\n            'navigation.api'\n    ])\n    .factory('ResourcesService', ResourcesService);\n","// @ngInject\nfunction AuthService($rootScope, $cookies, $location, DS, DSHttpAdapter, $q, $state,$window, ToasterService, UsersApiService,apiToken,LoginDialogService, ResourcesService, $translate) {\n    var _isAuthenticating = false;\n    var _isAuthenticated = false;\n    var _user = null;\n    return {\n        isAuthenticated: isAuthenticated,\n        hasToken: hasToken,\n        canAccess: canAccess,\n        hasUser: hasUser,\n        getUser: getUser,\n        setToken: setToken,\n        showLogin: showLogin,\n        logOut: logOut,\n        matchAnyDemand: matchAnyDemand,\n        matchAllDemand: matchAllDemand,\n        matchTwoDemand: matchTwoDemand,\n        resetPassword: resetPassword,\n        confirmNewPassword: confirmNewPassword,\n        getAuth0Token: getAuth0Token,\n        getTokenExpired: getTokenExpired,\n        refreshSession: refreshSession\n    };\n\n    function refreshSession(callback){\n        var json = {\n            token: apiToken.token\n        }\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'auth/refreshsession', json).then(function() {\n            callback(true);\n        },function(error) { \n            callback(false, error.data.message);\n            ToasterService.showError(error.data.message, $translate.instant('common.error'));\n        }).finally(function (){\n        });\n    }\n\n    function getTokenExpired(){\n        var deferred = $q.defer();\n    \n        var params = {};\n        params.token = apiToken.token;\n\n        DSHttpAdapter.GET(DS.defaults.basePath + 'auth/expire', {params : params}).then(function(response) {\n            deferred.resolve(response);\n        \n        },function(error) { \n            deferred.reject(handleError(error));\n        });\n        \n        return deferred.promise;//.$$state.value.data.expireDate;\n    }\n\n    function getAuth0Token() {\n        var deferred = $q.defer();\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'auth/auth0', {}).then(function(response) {\n            deferred.resolve(response);\n        },function(error) {\n            deferred.reject(handleError(error));\n        });\n\n        return deferred.promise;\n    }\n\n    function isAuthenticated() {\n        return _isAuthenticated;\n    }\n\n    function hasToken() {\n        return angular.isDefined(apiToken.token) && apiToken.token !== null;\n    }\n\n    function canAccess(objectType, permission) {\n        if (!isAuthenticated() || !_user.claims) { return false; }\n\n        var lowerCaseObjectType = _.toLower(objectType);\n\n        return _user.claims[lowerCaseObjectType] && (!permission || _user.claims[lowerCaseObjectType][permission]);\n    }\n\n    function hasUser() {\n        return angular.isDefined(_user) && _user !== null;\n    }\n\n    function getUser() {\n        var deferred = $q.defer();\n\n        // If we already have the user, just return it\n        if (hasUser()) {\n            deferred.resolve(_user);\n        } else {\n            UsersApiService.getSelf().then(function(user) {\n                var objectTypes = Object.keys(user.claims);\n                var licenseTypes = Object.keys(user.licenseConfig);\n                var claims = {};\n                var licenseConfig = {};\n                _.forEach(objectTypes, function(objectType) { claims[_.toLower(objectType)] = user.claims[objectType]; });\n                _.forEach(licenseTypes, function(licenseType) { licenseConfig[_.toLower(licenseType)] = user.licenseConfig[licenseType]; });\n                _user = user;\n                _user.claims = claims;\n                _user.licenseConfig = licenseConfig;\n                _isAuthenticated = true;\n                if (user.tenant && user.tenant.languageLocale) {\n                    $translate.use(user.tenant.languageLocale);\n                }\n                $translate.refresh();\n                deferred.resolve(_user);\n            }, function() {\n                expireSession();\n                deferred.reject();\n            });\n        }\n\n        return deferred.promise;\n    }\n\n    function showLogin(message) {\n        if (!_isAuthenticating) {\n            _isAuthenticating = true;\n            LoginDialogService.showDialog({isLoginState:isLoginState(),authMessage:message}).then(function(result) {\n                setToken(result.Token, result.Tenant);\n                if (isLoginState()) {\n                    // Go to the stated if it exists, else go to root url\n                    if ($rootScope.toState !== null && $rootScope.toState.name !== \"login\") {\n                        $state.go($rootScope.toState.name, $rootScope.toParams, {replace: true});\n                    } else {\n                        $location.path(\"/\");\n                    }\n                }\n            }).finally(function() {_isAuthenticating = false;});\n        }\n    }\n    function logOut() {\n        expireSession();\n        // Reload the app\n        $window.location.href = '/';\n    }\n    function expireSession() {\n        apiToken.token = null;\n        _user = null;\n        _isAuthenticated = false;\n        // Remove the cookie\n        $cookies.remove('X-JetsoftToken');\n\n        // Remove header\n        DSHttpAdapter.defaults.httpConfig.headers = { Authorization: function() { return null;} };\n    }\n    function isLoginState() {\n        return !!($rootScope.$state.current.abstract || $rootScope.$state.current.name === \"login\");\n    }\n    function setToken(token, tenantName) {\n        if (token) {\n            $cookies.putObject(\"X-JetsoftToken\", token);\n            $cookies.putObject(\"X-JetsoftTenant\", tenantName);\n            $cookies.putObject(\"x-cleverapps-tenant\", tenantName);\n        } else {\n            token = $cookies.getObject('X-JetsoftToken');\n            tenantName = $cookies.getObject('X-JetsoftTenant');\n        }\n\n        if (token) {\n            apiToken.token = token;\n            DSHttpAdapter.defaults.httpConfig.headers = { Authorization: apiToken.token, Tenant: tenantName };\n            DSHttpAdapter.defaults.httpConfig.headers['x-cleverapps-tenant'] = tenantName;\n        }\n    }\n\n    function matchAnyDemand(demand, rights) {\n        for (var propertyName in demand) {\n\n            if (!rights) {\n                 continue;\n            }\n            var rightNode = rights[_.toLower(propertyName)];\n            if (rightNode && demand[propertyName] === rightNode) {\n                return true;\n            }\n            if (matchAnyDemand(demand[propertyName],rightNode)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    function matchAllDemand(demand, rights) {\n        for (var propertyName in demand) {\n            var rightNode = rights[propertyName];\n            if (!rightNode) {\n                return false;\n            }\n            return matchAllDemand(demand[propertyName],rightNode);\n        }\n        return true;\n    }\n\n    //matchAllDemand dont work properly with the data from navigation.api.js   \n    function matchTwoDemand(demand, rights, type, seepurchasecost, stock) {\n        if(demand.hasOwnProperty(seepurchasecost) && demand.hasOwnProperty(stock) && type === 'leaf'){\n            if(rights.seepurchasecost != undefined){\n                if(!rights.seepurchasecost.read || !rights.stock.read){\n                    return false\n                }\n            }\n        }\n\n       return true\n    }\n\n    function resetPassword(user) {\n        var deferred = $q.defer();\n\n        var param = {};\n        param.tenantName = user.tenantName;\n        if (user.username.length > 0) { param.username = user.username; }\n        if (user.email.length > 0) { param.email = user.email; }\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'auth/reset', param).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n        return deferred.promise;\n    }\n\n    function confirmNewPassword(user) {\n        var deferred = $q.defer();\n\n        var param = {};\n        param.tenantName = user.tenantName;\n        param.newPassword = user.newPassword;\n        param.confirmPassword = user.confirmPassword;\n        param.securityCode = user.securityCode;\n\n        DSHttpAdapter.POST(DS.defaults.basePath + 'auth/confirm', param).then(function(response) {\n            deferred.resolve(response);\n        }, function(error) {\n            deferred.reject(handleError(error));\n        });\n        return deferred.promise;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('services.authService', [])\n    .factory('AuthService', AuthService);\n","// @ngInject\nfunction BarcodeService() {\n    return {\n        cleanBarcode: cleanBarcode,\n        formatBarcodesString: formatBarcodesString\n    };\n\n    function cleanBarcode(barcode) {\n        var cleanedBarcode = barcode;\n\n        cleanedBarcode = cleanedBarcode.replace(/#/g, '');\n        cleanedBarcode = cleanedBarcode.replace(/p/gi, '');\n\n        cleanedBarcode = cleanedBarcode.trim();\n\n        return cleanedBarcode;\n    }\n\n    function formatBarcodesString(string) {\n        var formattedString = string;\n\n        formattedString = formattedString.replace(/##/g, '\\n');\n        formattedString = formattedString.replace(/#/g, '');\n        formattedString = formattedString.replace(/p/gi, '');\n\n        return formattedString;\n    }\n}\n\nangular\n    .module('services.barcodeService', [])\n    .factory('BarcodeService', BarcodeService);\n","// @ngInject\nfunction invoiceConfirmationDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, deliveryDate, earliestAllowedDeliveryDate) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'invoiceConfirmationDialogController as vm',\n            templateUrl: 'services/dialogs/InvoiceConfirmationDialog/InvoiceConfirmationDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            deliveryDate: function() {\n                return deliveryDate;\n            },\n            earliestAllowedDeliveryDate: function() {\n                return earliestAllowedDeliveryDate;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction invoiceConfirmationDialogController($uibModalInstance, message, deliveryDate, earliestAllowedDeliveryDate, $sce) {\n    var vm = this;\n\n    //Properties\n    vm.message = $sce.trustAsHtml(message);\n    vm.deliveryDate = deliveryDate;\n    vm.earliestAllowedDeliveryDate = earliestAllowedDeliveryDate;\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.setWijmoInputDateLimits = setWijmoInputDateLimits;\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close({ isCompleted: isCompleted, deliveryDate: vm.deliveryDate });\n    }\n\n    function setWijmoInputDateLimits(s) {\n        if (vm.earliestAllowedDeliveryDate) {\n            s.min = parseDate(vm.earliestAllowedDeliveryDate);\n        } else {\n            s.min = new Date(2016, 1, 1, 0, 0, 0, 0);\n        }\n        s.max = parseDate(new Date());\n    }\n\n    //Transform from string to Date, and make sure date has correct timezone and no time information\n\tfunction parseDate(input) {\n\t\tif (!(input instanceof Date)) {\n            var newDate = new Date(input);\n            return new Date(Date.UTC(newDate.getFullYear(), newDate.getMonth(), newDate.getDate()));\n\t\t} else {\n\t\t\treturn new Date(Date.UTC(input.getFullYear(), input.getMonth(), input.getDate()));\n\t\t}\n\t}\n}\n\nangular\n    .module('services.dialogs.InvoiceConfirmationDialog', [])\n    .service('invoiceConfirmationDialogService', invoiceConfirmationDialogService)\n    .controller('invoiceConfirmationDialogController', invoiceConfirmationDialogController);\n","import { reactEvents } from \"../../../../bridge/reactEvents\";\nimport { angularEvents } from \"../../../../bridge/angularEvents\";\n// @ngInject\nfunction colourChangeDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(articleId, colourName) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'colourChangeDialogController as vm',\n            templateUrl: 'services/dialogs/colourChangeDialog/colourChangeDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            articleId: function() {\n                return articleId;\n            },\n            colourName: function() {\n                return colourName;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction colourChangeDialogController(articleId, colourName, Rms2ProductsApiService, $q, $uibModalInstance, ToasterService) {\n    var vm = this;\n    \n    vm.closeModal = closeModal;\n    vm.saveColourChange = saveColourChange;\n    vm.ongoingRequest = false;\n    vm.articleId = articleId;\n    vm.articleColours = {};\n    vm.uniqueColourNames = [];\n    vm.selectedColour = \"\";\n    vm.replacementColourName = \"\";\n    vm.colourNameIsTheSame = colourNameIsTheSame;\n\n    // var unsubSaveColourChangeEvent = reactEvents.saveColourChange.subscribe((colourChange) => {\n    //     ProductsApiService.upsertMetaFields(colourChange).then(function(response) {\n    //         console.log(\"ColourChange successfully saved\", response);\n    //     }, function(error) {\n    //         ToasterService.showError(error.message);\n    //     });\n    // });\n\n    Rms2ProductsApiService.getArticleColours(vm.articleId).then(function(response) {\n        vm.articleColours = response;\n        console.log(\"Rms2 getArticleColours response: \", vm.articleColours);\n\n        prepareColourNames(vm.articleColours);\n\n        // When we decide to migrate this dialog to react\n        // angularEvents.articleColoursHasChanged.dispatch(vm.articleColours);\n    }, function(error) {\n        console.log(error);\n    });\n\n    function prepareColourNames(articleColours) {\n        vm.uniqueColourNames = [];\n        var colours = articleColours.colourNames;\n\n        vm.uniqueColourNames = [];\n\n        var count = 1; \n        _.forEach(colours, function(c) {\n            vm.uniqueColourNames.push({ id: count, colourName: c });\n            count++;\n        });\n\n        vm.selectedColour = vm.uniqueColourNames[0];\n\n        if (colourName) {\n            var foundValue = _.find(vm.uniqueColourNames, function (n) { return n.colourName === colourName });\n            if (foundValue) {\n                vm.selectedColour = foundValue;\n            }\n        }\n    }\n\n    function closeModal(confirmation) {\n        var response = {};\n        \n        // When we decide to migrate this dialog to react\n        // unsubSaveColourChangeEvent();\n\n        $uibModalInstance.close(confirmation);\n    }\n\n    function saveColourChange() {\n        vm.ongoingRequest = true;\n        var request = {\n            articleId: vm.articleId,\n            oldValue: vm.selectedColour.colourName,\n            newValue: vm.replacementColourName\n        }; \n\n        Rms2ProductsApiService.createColourChange(request).then(function(response) {\n            ToasterService.showSuccess();\n            closeModal(true);\n        }, function(error) {\n            ToasterService.showError(error.message);\n        })\n        .then(function() {\n            vm.ongoingRequest = false; \n        });\n    }\n\n    function colourNameIsTheSame() {\n        return vm.replacementColourName.toLowerCase() === vm.selectedColour.colourName.toLowerCase();\n    }\n}\n\nangular\n    .module('services.dialogs.colourChangeDialog', [])\n    .service('colourChangeDialogService', colourChangeDialogService)\n    .controller('colourChangeDialogController', colourChangeDialogController);","// @ngInject\nfunction confirmationDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, level, modalSize = 'md') {\n\n        if(modalSize != 'xs' && modalSize != 'sm' && modalSize != 'md' && modalSize != 'lg')\n            modalSize = 'md'\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'confirmationDialogController as vm',\n            templateUrl: 'services/dialogs/confirmationDialog/confirmationDialog.tpl.html',\n            size: modalSize\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            level: function() {\n                return level;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction confirmationDialogController($uibModalInstance, message, level, $sce) {\n    var vm = this;\n\n    vm.message = $sce.trustAsHtml(message);\n    vm.level = level;\n\n    vm.closeModal = closeModal;\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close(isCompleted);\n    }\n}\n\nangular\n    .module('services.dialogs.confirmationDialog', [])\n    .service('confirmationDialogService', confirmationDialogService)\n    .controller('confirmationDialogController', confirmationDialogController);\n","// @ngInject\nfunction deliveryConfirmationDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, deliveryDate, earliestAllowedDeliveryDate) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'deliveryConfirmationDialogController as vm',\n            templateUrl: 'services/dialogs/deliveryConfirmationDialog/deliveryConfirmationDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            deliveryDate: function() {\n                return deliveryDate;\n            },\n            earliestAllowedDeliveryDate: function() {\n                return earliestAllowedDeliveryDate;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction deliveryConfirmationDialogController($uibModalInstance, message, deliveryDate, earliestAllowedDeliveryDate, $sce) {\n    var vm = this;\n\n    //Properties\n    vm.message = $sce.trustAsHtml(message);\n    vm.deliveryDate = deliveryDate;\n    vm.earliestAllowedDeliveryDate = earliestAllowedDeliveryDate;\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.setWijmoInputDateLimits = setWijmoInputDateLimits;\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close({ isCompleted: isCompleted, deliveryDate: vm.deliveryDate });\n    }\n\n    function setWijmoInputDateLimits(s) {\n        if (vm.earliestAllowedDeliveryDate) {\n            s.min = parseDate(vm.earliestAllowedDeliveryDate);\n        } else {\n            s.min = new Date(2016, 1, 1, 0, 0, 0, 0);\n        }\n        s.max = parseDate(new Date());\n    }\n\n    //Transform from string to Date, and make sure date has correct timezone and no time information\n\tfunction parseDate(input) {\n\t\tif (!(input instanceof Date)) {\n            var newDate = new Date(input);\n            return new Date(Date.UTC(newDate.getFullYear(), newDate.getMonth(), newDate.getDate()));\n\t\t} else {\n\t\t\treturn new Date(Date.UTC(input.getFullYear(), input.getMonth(), input.getDate()));\n\t\t}\n\t}\n}\n\nangular\n    .module('services.dialogs.deliveryConfirmationDialog', [])\n    .service('deliveryConfirmationDialogService', deliveryConfirmationDialogService)\n    .controller('deliveryConfirmationDialogController', deliveryConfirmationDialogController);\n","// @ngInject\nfunction deliveryDocumentDownloadDialogService($uibModal, OrdersApiService) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(orderId) {\n\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: true,\n            controller: 'deliveryDocumentDownloadDialogServiceController as vm',\n            templateUrl: 'services/dialogs/deliveryDocumentDownloadDialog/deliveryDocumentDownloadDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            orderId: function() {\n                return orderId;\n            }\n        };\n        \n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction deliveryDocumentDownloadDialogServiceController($uibModalInstance, $scope, orderId, OrdersApiService, ToasterService, loadSpinnerService) {\n    var vm = this;\n\n    vm.deliveryDate = {};\n    vm.deliveryTimeProximity = 10;\n    vm.deliveryTimeType = '1';\n    vm.deliveryTimeOptions = [\n        {value: '0', name:'sec'},\n        {value: '1', name:'min'},\n        {value: '2', name:'hr'},\n        {value: '3', name:'day'}\n    ];\n\n    vm.closeModal = closeModal;\n    vm.downloadDocument = downloadDocument;\n    vm.isFetchingData = false;\n\n    activate();\n\n    function activate() {\n        loadDateSelections();\n\n\n        $scope.$watch(function() { return vm.deliveryTimeType; }, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                loadDateSelections();\n            }\n        });\n        $scope.$watch(function() { return vm.deliveryTimeProximity; }, function(oldValue, newValue) {\n            if (oldValue !== newValue) {\n                loadDateSelections();\n            }\n        });\n    }\n\n    function loadDateSelections() {\n        vm.isFetchingData = true;\n        OrdersApiService.getWholeDeliveryDates(orderId, vm.deliveryTimeProximity, vm.deliveryTimeType).then(function(response) {\n            vm.deliveryDate = {};\n            // modify the date format\n            response.data.deliveryDates.forEach(function(entry) {\n                var dateObj = new Date(entry.startDate);\n\n                entry.id = entry.startDate;\n                //entry.description = getDeliveryDateString(dateObj);\n            });\n            vm.deliveryDates = response.data.deliveryDates;\n            vm.orderId = orderId;\n        }, function(error) {\n            ToasterService.ShowError(error);\n        }).finally(function() {\n            vm.isFetchingData = false;\n        });\n    }\n\n    function getDeliveryDateString(date) {\n        if (!date) { return ''; }\n\n        var dateStr = date.getFullYear() + '-' + zeroFill(date.getMonth() + 1, 2) + '-' + zeroFill(date.getDate(), 2) + ' ' + zeroFill(date.getHours(), 2) + ':' + zeroFill(date.getMinutes(), 2);\n        if (date.getHours() === 0 && date.getMinutes() === 0) {\n            dateStr = date.getFullYear() + '-' + zeroFill(date.getMonth() + 1, 2) + '-' + zeroFill(date.getDate(), 2);\n        }\n\n        return dateStr;\n    }\n\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            return new Array(width + ((/\\./).test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close(isCompleted);\n    }\n\n    function downloadDocument() {\n        vm.isFetchingData = true;\n        OrdersApiService.downloadDeliveryDocument(orderId, vm.deliveryDate.startDate, vm.deliveryDate.endDate).then(function() {\n        }, function(error) {\n            ToasterService.ShowError(error);\n        }).finally(function() {\n            closeModal(true);\n        });;\n    }\n}\n\nangular\n    .module('services.dialogs.deliveryDocumentDownloadDialog', [])\n    .service('deliveryDocumentDownloadDialogService', deliveryDocumentDownloadDialogService)\n    .controller('deliveryDocumentDownloadDialogServiceController', deliveryDocumentDownloadDialogServiceController);\n","angular.module('services.dialogs', [\n            'services.dialogs.loginDialog',\n            'services.dialogs.newInventoryDialog',\n            'services.dialogs.inventoryCorrectionsModal',\n            'services.dialogs.deliveryDocumentDownloadDialog',\n            'services.dialogs.confirmationDialog',\n            'services.dialogs.informationDialog',\n            'services.dialogs.setFieldConfirmationDialog',\n            'services.dialogs.deliveryConfirmationDialog',\n            'services.dialogs.InvoiceConfirmationDialog',\n            'services.dialogs.printInvoiceDialog',\n            'services.dialogs.printPickingListDialog',\n            'services.dialogs.printLanguageConfirmationDialog',\n            'services.dialogs.printInventoryReportDialog',\n            'services.dialogs.purchaseOrderAnalysisFilterDialog',\n            'services.dialogs.salesTotalFilterDialog',\n            'services.dialogs.updateOrderNoteDialog',\n            'services.dialogs.labelPrintingDialog',\n            'services.dialogs.updateAddressDialog',\n            'services.dialogs.createVariantFulfillmentDialogService',\n            'services.dialogs.createVariantDeliveryDateDialogService',\n            'services.dialogs.importFinalizationDialog',\n            'services.dialogs.colourChangeDialog'\n        ]);\n","// @ngInject\r\nfunction importFinalizationDialogService($uibModal) {\r\n\r\n    return {\r\n        showDialog: showDialog\r\n    };\r\n\r\n    function showDialog() {\r\n\r\n        var modalDefaults = {\r\n            backdrop: true,\r\n            keyboard: true,\r\n            controller: 'importFinalizationDialogController as vm',\r\n            // templateUrl: 'main/product/productimporteditor/components/dialogs/importFinalizationDialog.tpl.html',\r\n            templateUrl: 'services/dialogs/importFinalizationDialog/importFinalizationDialog.tpl.html',\r\n            size: 'md'\r\n        };\r\n        \r\n        return $uibModal.open(modalDefaults).result;\r\n    }\r\n}\r\n\r\n// @ngInject\r\nfunction importFinalizationDialogController($uibModalInstance) {\r\n    var vm = this;\r\n\r\n    vm.selectionChoices = [\r\n        {\r\n            label:\"productimport.nopriceupdate\",\r\n            selection: 'None'\r\n        },\r\n        {\r\n            label:\"productimport.updatesamecolor\",\r\n            selection: 'Color'\r\n        },\r\n        // { // Disabled until further notice\r\n        //     label:\"productimport.updateallvariants\",\r\n        //     selection: 'AllVariants'\r\n        // }\r\n    ];\r\n    vm.selected = vm.selectionChoices[0];\r\n\r\n    console.log(\"FinalizationModal opened\");\r\n\r\n    vm.closeModal = closeModal;\r\n\r\n    function closeModal() {\r\n        $uibModalInstance.close(vm.selected.selection);\r\n    }\r\n}\r\n\r\nangular\r\n    .module('services.dialogs.importFinalizationDialog', [])\r\n    .service('importFinalizationDialogService', importFinalizationDialogService)\r\n    .controller('importFinalizationDialogController', importFinalizationDialogController);","// @ngInject\nfunction informationDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'informationDialogController as vm',\n            templateUrl: 'services/dialogs/informationDialog/informationDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction informationDialogController($uibModalInstance, message, $sce) {\n    var vm = this;\n\n    vm.message = $sce.trustAsHtml(message);\n\n    vm.closeModal = closeModal;\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close(isCompleted);\n    }\n}\n\nangular\n    .module('services.dialogs.informationDialog', [])\n    .service('informationDialogService', informationDialogService)\n    .controller('informationDialogController', informationDialogController);\n","// @ngInject\nfunction inventoryCorrectionsDialogService($uibModal, InventoryingApiService, ProductsApiService) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(inventoryId, articleId) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'inventoryCorrectionsDialogServiceController as vm',\n            templateUrl: 'services/dialogs/inventoryCorrectionsDialog/inventoryCorrectionsDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            inventoryRows: function() {\n                return InventoryingApiService.getInventoryRowsRelatedToArticle(inventoryId, articleId);\n            },\n            stocks: function() {\n                return ProductsApiService.getProductStocks(articleId);\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction inventoryCorrectionsDialogServiceController($uibModalInstance, inventoryRows, stocks, InventoryingApiService, ResourcesService) {\n    var vm = this;\n\n    var flexGrid = {};\n    var rowData = [];\n    var rowCollection = new wijmo.collections.CollectionView(rowData);\n    var originalCellValue = '';\n\n    var totalsGrid = {};\n\n    var locationId = inventoryRows.data[0].inventory.location.id;\n\n    vm.inventoryRows = inventoryRows.data;\n    vm.articleVariants = pickOutArticleVariants(vm.inventoryRows);\n    vm.stocksData = stocks.data;\n    vm.totals = [\n        {\n            sumName: \"Total\",\n            theoreticalTotal: 0,\n            inventoriedTotal: 0,\n            difference: 0\n        }\n    ];\n\n    vm.closeModal = closeModal;\n    vm.captureVariantsGrid = captureVariantsGrid;\n    vm.beginEditing = beginEditing;\n    vm.editEnded = editEnded;\n    vm.saveChanges = saveChanges;\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close(isCompleted);\n    }\n\n    function saveChanges() {\n        var inventoryToSend = {\n            id: vm.inventoryRows[0].inventory.id,\n            inventoryRows: []\n        };\n\n        _.forEach(rowData, function(data) {\n            var keys = Object.keys(data);\n            var variant1Name = data['variantDetails1Name'];\n            _.forEach(keys, function(key) {\n                if (key !== \"variantDetails1Name\") {\n\n                    var relatedArticleVariant = _.find(vm.articleVariants, function(articleVariant) {\n                        return articleVariant.variantDetail1.variantDetailName === variant1Name &&\n                            articleVariant.variantDetail2.variantDetailName === key;\n                    });\n\n                    var specifiedQuantity = data[key].split('(')[0].trim();\n\n                    var inventoryRow = {\n                        articleVariant: relatedArticleVariant,\n                        quantity: parseInt(specifiedQuantity)\n                    };\n\n                    inventoryToSend.inventoryRows.push(inventoryRow);\n                }\n            });\n        });\n\n        InventoryingApiService.updateInventory(inventoryToSend).then(function(response) {\n            closeModal(response);\n        }, function(error) {\n            handleError(error);\n        });\n    }\n\n    function captureVariantsGrid(sender) {\n        flexGrid = sender;\n\n        flexGrid.initialize({\n            autoGenerateColumns: false,\n            selectionMode: wijmo.grid.SelectionMode.Cell,\n            allowDragging: wijmo.grid.AllowDragging.None,\n            allowResizing: wijmo.grid.AllowResizing.Columns,\n            headersVisibility: wijmo.grid.HeadersVisibility.Column,\n            isReadOnly: false,\n            frozenColumns: 1,\n            itemsSource: rowCollection\n        });\n\n        initializeGridColumns();\n    }\n\n    function captureTotalsGrid(sender) {\n        totalsGrid = sender;\n\n        // Setting the item formatter, coloring the first line (total sum) differently.\n        totalsGrid.itemFormatter = function(panel, r, c, cell) {\n            var style = cell.style;\n            var regularCellType = wijmo.grid.CellType.Cell;\n\n            if (r === 0 && panel.cellType === regularCellType) {\n                style.color = '#000000';\n                style.backgroundColor = '#dddddd';\n            }\n        };\n    }\n\n    function calculateNewTotals() {\n        var totalsObject = _.find(vm.totals, function(totalsEntry) {\n            return totalsEntry.sumName === \"Total\";\n        });\n\n        totalsObject.theoreticalTotal = 0;\n        totalsObject.inventoriedTotal = 0;\n        totalsObject.difference = 0;\n\n        _.forEach(rowData, function(data) {\n            var keys = Object.keys(data);\n            var variant1TotalsObject = _.find(vm.totals, function(variant1Entry) {\n                return variant1Entry.sumName === data['variantDetails1Name'];\n            });\n            if (variant1TotalsObject === undefined) {\n                variant1TotalsObject = {\n                    sumName: data['variantDetails1Name'],\n                    theoreticalTotal: 0,\n                    inventoriedTotal: 0,\n                    difference: 0\n                };\n                vm.totals.push(variant1TotalsObject);\n            }\n\n            variant1TotalsObject.theoreticalTotal = 0;\n            variant1TotalsObject.inventoriedTotal = 0;\n            variant1TotalsObject.difference = 0;\n\n            _.forEach(keys, function(key) {\n                if (key !== \"variantDetails1Name\") {\n                    var currentData = data[key].split('(');\n                    currentData[1] = currentData[1].substring(0, currentData[1].length - 1);\n\n                    totalsObject.theoreticalTotal += parseInt(currentData[1]);\n                    totalsObject.inventoriedTotal += parseInt(currentData[0]);\n\n                    variant1TotalsObject.theoreticalTotal += parseInt(currentData[1]);\n                    variant1TotalsObject.inventoriedTotal += parseInt(currentData[0]);\n\n                    variant1TotalsObject.difference = variant1TotalsObject.inventoriedTotal - variant1TotalsObject.theoreticalTotal;\n                }\n            });\n        });\n\n        totalsObject.difference = totalsObject.inventoriedTotal - totalsObject.theoreticalTotal;\n        if (totalsGrid.collectionView) {\n            totalsGrid.collectionView.refresh();\n        }\n    }\n\n    function initializeGridColumns() {\n        // Need to wait for the grid to be initialized\n        if (!flexGrid.columns) {\n            setTimeout(initializeGridColumns, 100);\n            return;\n        }\n\n        rowData.length = 0;\n        flexGrid.columns.clear();\n        rowCollection.refresh();\n\n        // Add first row header column\n        var rowHeader = new wijmo.grid.Column();\n        rowHeader.binding = \"variantDetails1Name\";\n        rowHeader.header = \"Variant\";\n        rowHeader.allowSorting = false;\n        rowHeader.allowResizing = true;\n        rowHeader.width = '*';\n        rowHeader.minWidth = 100;\n        rowHeader.isReadOnly = false;\n        flexGrid.columns.push(rowHeader);\n\n        var columns = getDataColumns();\n\n        // Add dynamic columns\n        _.forEach(columns, function (variantDetail) {\n            var c = new wijmo.grid.Column();\n            c.binding = variantDetail.variantDetailName;\n            c.header = variantDetail.variantDetailName;\n            c.width = \"*\";\n            c.minWidth = 100;\n            c.allowSorting = false;\n            c.allowResizing = true;\n            c.inputType = 'text';\n            c.isReadOnly = false;\n            c.align = \"right\";\n            flexGrid.columns.push(c);\n        });\n\n        loadGridData();\n    }\n\n    function getDataColumns() {\n        var columns = [];\n\n        // Group by nested variantDetail2 in the current articleVariants\n        columns = _.groupBy(vm.articleVariants, function(variant) {\n            return variant.variantDetail2.variantDetailName;\n        });\n        // Get the variantDetail2 from each group in an array\n        columns = _.reduce(columns, function(newArray, val, key) {\n            newArray.push(val[0].variantDetail2);\n            return newArray;\n        }, []);\n\n        return _.sortBy(columns, 'sortOrder');\n    }\n\n    function loadGridData() {\n        var articleVariants = _.groupBy(vm.articleVariants, function(articleVariant) {\n            return articleVariant.variantDetail1.variantDetailName;\n        });\n\n        _.forEach(articleVariants, function(variantRowValues) {\n            var r = {};\n            _.forEach(variantRowValues, function(variantRowValue) {\n                r.variantDetails1Name = variantRowValue.variantDetail1.variantDetailName;\n\n                var relatedStock = getStockFor(r.variantDetails1Name, variantRowValue.variantDetail2.variantDetailName);\n                var relatedInventoryRow = getInventoryRowFor(r.variantDetails1Name, variantRowValue.variantDetail2.variantDetailName);\n\n                if (relatedStock === undefined || relatedStock.location.id !== locationId) {\n                    relatedStock = {};\n                    relatedStock['quantity'] = 0;\n                }\n\n                if (relatedInventoryRow === undefined) {\n                    relatedInventoryRow = {};\n                    relatedInventoryRow['quantity'] = 0;\n                }\n\n                r[variantRowValue.variantDetail2.variantDetailName] = relatedInventoryRow.quantity + \" (\" + relatedStock.quantity + \")\";\n            });\n            rowData.push(r);\n        });\n        rowCollection.refresh();\n\n        calculateNewTotals();\n    }\n\n    function getStockFor(variantDetail1Name, variantDetail2Name) {\n        return _.find(vm.stocksData, function(stock) {\n            return stock.articleVariant.variantDetail1.variantDetailName === variantDetail1Name &&\n                stock.articleVariant.variantDetail2.variantDetailName === variantDetail2Name  &&\n                stock.location.id === locationId;\n        });\n    }\n\n    function getInventoryRowFor(variantDetail1Name, variantDetail2Name) {\n        var result = _.find(vm.inventoryRows, function(inventoryRow) {\n            return inventoryRow.articleVariant.variantDetail1.variantDetailName === variantDetail1Name &&\n                   inventoryRow.articleVariant.variantDetail2.variantDetailName === variantDetail2Name;\n        });\n\n        return result;\n    }\n\n    function beginEditing(sender, e) {\n        var rowNumber = flexGrid.selection.row;\n        var columnNumber = flexGrid.selection.col;\n\n        var columnHeader = flexGrid.columns[columnNumber].binding;\n\n        var keys = Object.keys(rowData[rowNumber]);\n\n        originalCellValue = angular.copy(rowData[rowNumber][columnHeader]);\n\n        rowData[rowNumber][columnHeader] = rowData[rowNumber][columnHeader].split('(')[0].trim();\n        rowCollection.refresh();\n    }\n\n    function editEnded(sender, e) {\n        var rowNumber = flexGrid.selection.row;\n        var columnNumber = flexGrid.selection.col;\n        var keys = Object.keys(rowData[rowNumber]);\n\n        var columnHeader = flexGrid.columns[columnNumber].binding;\n\n        rowData[rowNumber][columnHeader] = rowData[rowNumber][columnHeader] + \" (\" + originalCellValue.split('(')[1];\n        rowCollection.refresh();\n        calculateNewTotals();\n    }\n\n    function pickOutArticleVariants(inventoryRows) {\n        var articleVariants = [];\n\n        _.forEach(inventoryRows, function(inventoryRow) {\n            articleVariants.push(inventoryRow.articleVariant);\n        });\n\n        return articleVariants;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n}\n\nangular\n    .module('services.dialogs.inventoryCorrectionsModal', [])\n    .service('inventoryCorrectionsDialogService', inventoryCorrectionsDialogService)\n    .controller('inventoryCorrectionsDialogServiceController', inventoryCorrectionsDialogServiceController);\n","// @ngInject\nfunction labelPrintingDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(order) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'labelPrintingDialogController as vm',\n            templateUrl: 'services/dialogs/labelPrintingDialog/labelPrintingDialog.tpl.html',\n            size: 'lg'\n        };\n\n        modalDefaults.resolve = {\n            order: function() {\n                return order;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction labelPrintingDialogController($uibModalInstance, order, loadSpinnerService, OrdersApiService, $translate, ToasterService) {\n    var vm = this;\n\n    //Properties\n    vm.order = order;\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.printOrderLabels = printOrderLabels;\n\n    activate();\n\n    function activate() {\n        loadSpinnerService.start('mainSpinner');\n        OrdersApiService.getDeliveryDates(vm.order.id).then(function(response) {\n            vm.selectableDates = [];\n            _.forEach(response.data.deliveryDates, function(entry) {\n                var dateObj = new Date(entry.startDate);\n\n                entry.id = entry.startDate;\n                entry.description = $translate.instant(\"order.printlabel.deliveredto\") + ' ' + getDeliveryDateString(dateObj);\n\n                //if user wants to print labels for whole date\n                var useWholeDate = (dateObj.getHours() === 0 && dateObj.getMinutes() === 0);\n\n                vm.selectableDates.push({\n                    id: entry.id,\n                    description: entry.description,\n                    useWholeDate: useWholeDate\n                });\n            });\n\n            vm.selectableDates.unshift({ id: \"allDates\", description:$translate.instant(\"order.printlabel.ordered\")});\n\n            if (vm.selectableDates.length !== 0) {\n                vm.selectedDate = vm.selectableDates[0];\n            }\n        }, function(error) {\n            ToasterService.showError(error.message);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n\n    function getDeliveryDateString(date) {\n        if (!date) { return ''; }\n\n        var dateStr = date.getFullYear() + '-' + zeroFill(date.getMonth() + 1, 2) + '-' + zeroFill(date.getDate(), 2) + ' ' + zeroFill(date.getHours(), 2) + ':' + zeroFill(date.getMinutes(), 2);\n        if (date.getHours() === 0 && date.getMinutes() === 0) {\n            dateStr = date.getFullYear() + '-' + zeroFill(date.getMonth() + 1, 2) + '-' + zeroFill(date.getDate(), 2);\n        }\n\n        return dateStr;\n    }\n    function zeroFill(number, width)\n    {\n        width -= number.toString().length;\n        if (width > 0)\n        {\n            return new Array(width + ((/\\./).test(number) ? 2 : 1)).join('0') + number;\n        }\n        return number + ''; // always return a string\n    }\n\n    function printOrderLabels() {\n        if (vm.selectedDate.id !== \"allDates\") {\n            loadSpinnerService.start('mainSpinner');\n            var request = {\n                orderId: vm.order.id,\n                orderNumber: vm.order.orderNumber,\n                date: vm.selectedDate.id,\n                useWholeDate: vm.selectedDate.useWholeDate\n            };\n            OrdersApiService.downloadLabelsForDate(request).then(function(response) {\n                $uibModalInstance.close(true);\n            }, function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        } else {\n            loadSpinnerService.start('mainSpinner');\n            OrdersApiService.downloadLabels(vm.order.id, vm.order.orderNumber).then(function(response) {\n                $uibModalInstance.close(true);\n            }, function(error) {\n                ToasterService.showError(error.message);\n            }).finally(function() {\n                loadSpinnerService.stop('mainSpinner');\n            });\n        }\n    }\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close(isCompleted);\n    }\n}\n\nangular\n    .module('services.dialogs.labelPrintingDialog', [])\n    .service('labelPrintingDialogService', labelPrintingDialogService)\n    .controller('labelPrintingDialogController', labelPrintingDialogController);\n","// @ngInject\nfunction LoginDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(data) {\n        data = data || {};\n        data.authMessage = data.authMessage || null;\n        data.isLoginState = data.isLoginState || false;\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'LoginDialogController as vm',\n            templateUrl: 'services/dialogs/loginDialog/loginDialog.tpl.html',\n            size: 'sm'\n        };\n\n        modalDefaults.resolve = {\n            authMessage: function() {\n                return data.authMessage;\n            }\n        };\n\n        if (data.isLoginState) {\n            modalDefaults.backdrop = 'static';\n            modalDefaults.keyboard = false;\n        }\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction LoginDialogController($uibModalInstance,$location,authMessage,AuthApiService,UserTimeStampingDialogService, UserPasswordResetDialogService, AuthService, $translate) {\n    var vm = this;\n\n    //Parameters\n    vm.user = {};\n    vm.authError = null;\n    vm.showTenantInputField = false;\n    vm.tenantName = \"\";\n\n    //Methods\n    vm.showDialogTimeStamping = showDialogTimeStamping;\n    vm.authMessage = authMessage;\n    vm.login = login;\n    vm.showDialogResetPassword = showDialogResetPassword;\n\n    activate();\n\n    function activate() {\n        var absoluteUrl = $location.absUrl();\n        var match = absoluteUrl.match(/(?:\\/\\?)([A-Za-z0-9]*)(?:\\#?)/); //Find occurrences of \"/?string\"\n\n        var tenantName;\n        if (match !== null) {\n            tenantName = match[1];\n        }\n\n        if (tenantName === undefined) {\n            vm.showTenantInputField = true;\n            console.log(\"Tenant is not included in URL.\");\n        } else {\n            vm.showTenantInputField = false;\n            vm.tenantName = tenantName;\n            console.log(\"Tenant found. Tenant name is:\");\n            console.log(vm.tenantName);\n        }\n    }\n\n    function login() {\n        $uibModalInstance.startLoadingSpinner();\n        AuthApiService.getToken(vm.user.username, vm.user.password, vm.tenantName).then(function(token) {\n            $uibModalInstance.close({ Token: token, Tenant: vm.tenantName });\n        }, function(error) {\n            $uibModalInstance.stopLoadingSpinner();\n            vm.authError = error.message;\n        });\n    }\n\n    function showDialogTimeStamping() {\n        $uibModalInstance.startLoadingSpinner();\n\n        AuthApiService.getToken(vm.user.username, vm.user.password, vm.tenantName).then(function(token) {\n            AuthService.setToken(token, vm.tenantName);\n            UserTimeStampingDialogService.showDialogLoginless().then(function(response) {\n                console.log(\"Returned from time stamping. Response:\");\n                console.log(response);\n            }, function(error) {\n                vm.authError = error.message;\n            }).finally(function() {\n                $uibModalInstance.stopLoadingSpinner();\n            });\n\n        }, function(error) {\n            $uibModalInstance.stopLoadingSpinner();\n            vm.authError = error.message;\n        });\n\n    }\n\n    function showDialogResetPassword() {\n        $uibModalInstance.startLoadingSpinner();\n\n        //AuthApiService.getToken(vm.user.username, vm.user.password, vm.tenantName).then(function(token) {\n            //AuthService.setToken(token);\n            UserPasswordResetDialogService.showDialog().then(function(response) {\n                console.log(\"Returned from time stamping. Response:\");\n                console.log(response);\n            }, function(error) {\n                vm.authError = error.message;\n            }).finally(function() {\n                $uibModalInstance.stopLoadingSpinner();\n            });\n        //}, function(error) {\n            //$uibModalInstance.stopLoadingSpinner();\n            //vm.authError = error.message;\n        //});\n    }\n}\n\nangular\n    .module('services.dialogs.loginDialog', ['services.dialogs.resetLoginDialog'])\n    .service('LoginDialogService', LoginDialogService)\n    .controller('LoginDialogController', LoginDialogController);\n","// @ngInject\nfunction NewInventoryDialogService($uibModal, LocationsApiService, InventoryingApiService, StockApiService) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog() {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'NewInventoryDialogServiceController as vm',\n            templateUrl: 'services/dialogs/newInventoryDialog/newInventoryDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            locations: function() {\n                return StockApiService.getFilteredLocations();\n            },\n            inventoryTypes: function() {\n                return StockApiService.getInventoryTypes();\n            },\n            mainGroups: function() {\n                return StockApiService.getMainGroups();\n            },\n            brands: function() {\n                return StockApiService.getBrands();\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction NewInventoryDialogServiceController($uibModalInstance, locations, inventoryTypes, brands, ResourcesService, InventoryingApiService, mainGroups) {\n    var vm = this;\n    var currentTime = getCurrentTimeRoundedToNearestHour();\n\n    vm.locations = locations;\n    vm.inventoryTypes = inventoryTypes;\n    vm.mainGroups = insertEmptyMainGroupFirst(mainGroups);\n    vm.brands = insertEmptyBrandFirst(brands);\n\n    vm.isShowingScanningForm = false;\n    vm.toggleScanningForm = toggleScanningForm;\n    vm.scannedBarcodes = \"\";\n\n    vm.locationChanged = locationChanged;\n    vm.inventoryTypeChanged = inventoryTypeChanged;\n    vm.mainGroupChanged = mainGroupChanged;\n    vm.brandChanged = brandChanged;\n    vm.save = save;\n    vm.closeModal = closeModal;\n\n    vm.newInventoryRequestData = {\n        inventoryDescription: \"\",\n        inventoryDate: currentTime,\n        brand: { id: 0, brandDescription: ' ' },\n        itemGroup: { id: 0, itemGroupLongName: ' '},\n        inventoryType: { id: 0 },\n        location: { id: 0 },\n        itemGroups: [],\n        brands:[]\n    };\n\n    // testing support for mulitple main groups\n    vm.newInventoryRequestData.mainGroups = [];\n\n    function getCurrentTimeRoundedToNearestHour() {\n        var timeNonUtc = new Date();\n        var time = new Date();\n        time.setSeconds(0);\n        time.setMilliseconds(0);\n\n        if (time.getMinutes() < 30) {\n            time.setMinutes(0);\n        } else {\n            time.setMinutes(0);\n            if (time.getHours() <= 22) {\n                time.setHours(time.getHours() + 1);\n            } else {\n                time.setHours(23);\n            }\n        }\n        return time;\n    }\n\n    function closeModal(args) {\n        $uibModalInstance.close(args);\n    }\n\n    function save() {\n        $uibModalInstance.startLoadingSpinner();\n        InventoryingApiService.createInventory(vm.newInventoryRequestData).then(function(response) {\n            console.log(\"Success, id:\" + response.data.id);\n            vm.closeModal({ success: true, inventoryItem: response.data });\n        }, function(error) {\n            handleError(error);\n        }).finally(function() {\n            $uibModalInstance.stopLoadingSpinner();\n        });\n    }\n\n    function insertEmptyMainGroupFirst(mainGroups) {\n        var emptyMainGroup = {\n            id: 0,\n            mainGroupDescription: ' '\n        };\n        var newArr = [];\n        newArr.push(emptyMainGroup);\n        newArr = newArr.concat(mainGroups);\n        return newArr;\n    }\n\n    function insertEmptyBrandFirst(brands) {\n        var emptyBrand = {\n            id: 0,\n            brandDescription: ' '\n        };\n        var newArr = [];\n        newArr.push(emptyBrand);\n        newArr = newArr.concat(brands);\n        return newArr;\n    }\n\n    function toggleScanningForm() {\n        if (!vm.isShowingScanningForm) {\n            vm.isShowingScanningForm = true;\n        } else {\n            vm.isShowingScanningForm = false;\n            vm.scannedBarcodes = \"\";\n        }\n    }\n\n    function locationChanged(sender) {\n        vm.newInventoryRequestData.location = sender.selectedItem;\n    }\n\n    function inventoryTypeChanged(sender) {\n        vm.newInventoryRequestData.inventoryType = sender.selectedItem;\n    }\n\n    function mainGroupChanged(sender) {\n        vm.newInventoryRequestData.mainGroup = sender.selectedItem;\n    }\n\n    function brandChanged(sender) {\n        vm.newInventoryRequestData.brand = sender.selectedItem;\n    }\n\n    function handleError(error) {\n        return ResourcesService.handleResourceError(error);\n    }\n\n}\n\nangular\n    .module('services.dialogs.newInventoryDialog', [])\n    .service('NewInventoryDialogService', NewInventoryDialogService)\n    .controller('NewInventoryDialogServiceController', NewInventoryDialogServiceController);\n","// @ngInject\nfunction printInventoryReportDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, level) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'printInventoryReportDialogController as vm',\n            templateUrl: 'services/dialogs/printInventoryReportDialog/printInventoryReportDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            level: function() {\n                return level;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction printInventoryReportDialogController($uibModalInstance, $window, message, level, $sce) {\n    var vm = this;\n\n    //Properties\n    vm.message = $sce.trustAsHtml(message);\n    vm.level = level;\n    vm.printLanguage = 'se';\n    vm.printFormat = 'pdf';\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.setLanguage = setLanguage;\n    vm.setPrintFormat = setPrintFormat;\n\n    readSettingsFromLocalStorage();\n\n    function closeModal(isCompleted) {\n        var result = {\n            result: isCompleted,\n            languageCode: vm.printLanguage,\n            printFormat: vm.printFormat\n        };\n        saveSettingsToLocalStorage();\n        $uibModalInstance.close(result);\n    }\n\n    function setLanguage(language) {\n        vm.printLanguage = language;\n    }\n    function setPrintFormat(format) {\n        vm.printFormat = format;\n    }\n\n    function readSettingsFromLocalStorage() {\n        if ($window.localStorage.printInventoryReportSettings) {\n            if (!isJsonString($window.localStorage.getItem('printInventoryReportSettings'))) {\n                $window.localStorage.removeItem('printInventoryReportSettings');\n            }\n\n            var settingsStr = $window.localStorage.getItem('printInventoryReportSettings');\n            if (settingsStr !== null) {\n                var json = JSON.parse(settingsStr);\n                if (json.printLanguage) { vm.printLanguage = json.printLanguage; }\n                if (json.printFormat) { vm.printFormat = json.printFormat; }\n            }\n        }\n    }\n    function isJsonString(str) {\n        try {\n            JSON.parse(str);\n        } catch (e) {\n            return false;\n        }\n        return true;\n    }\n\n    function saveSettingsToLocalStorage() {\n        var request = {\n            printLanguage: angular.copy(vm.printLanguage),\n            printFormat: angular.copy(vm.printFormat)\n        };\n\n        $window.localStorage.setItem('printInventoryReportSettings', JSON.stringify(request));\n    }\n}\n\nangular\n    .module('services.dialogs.printInventoryReportDialog', [])\n    .service('printInventoryReportDialogService', printInventoryReportDialogService)\n    .controller('printInventoryReportDialogController', printInventoryReportDialogController);\n","// @ngInject\nfunction printInvoiceDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, level) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'printInvoiceDialogController as vm',\n            templateUrl: 'services/dialogs/printInvoiceDialog/printInvoiceDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            level: function() {\n                return level;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction printInvoiceDialogController($uibModalInstance, message, level, $sce) {\n    var vm = this;\n\n    //Properties\n    vm.message = $sce.trustAsHtml(message);\n    vm.level = level;\n    vm.printLanguage = 'en';\n    vm.weightSetting = 'kg';\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.setLanguage = setLanguage;\n    vm.setWeightSetting = setWeightSetting;\n\n    function closeModal(isCompleted) {\n        var result = {\n            result: isCompleted,\n            languageCode: vm.printLanguage,\n            weightSetting: vm.weightSetting\n        };\n        $uibModalInstance.close(result);\n    }\n\n    function setLanguage(language) {\n        vm.printLanguage = language;\n    }\n    function setWeightSetting(setting) {\n        vm.weightSetting = setting;\n    }\n}\n\nangular\n    .module('services.dialogs.printInvoiceDialog', [])\n    .service('printInvoiceDialogService', printInvoiceDialogService)\n    .controller('printInvoiceDialogController', printInvoiceDialogController);\n","// @ngInject\nfunction printLanguageConfirmationDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, level) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'printLanguageConfirmationDialogController as vm',\n            templateUrl: 'services/dialogs/printLanguageConfirmationDialog/printLanguageConfirmationDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            level: function() {\n                return level;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction printLanguageConfirmationDialogController($uibModalInstance, $window, message, level, $sce, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.message = $sce.trustAsHtml(message);\n    vm.level = level;\n    vm.printLanguage = 'se';\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.setLanguage = setLanguage;\n\n    activate();\n\n    function activate() {\n        readSettingsFromLocalStorage();\n    }\n\n    function closeModal(isCompleted) {\n        var result = {\n            result: isCompleted,\n            locale: vm.printLanguage\n        };\n        saveSettingsToLocalStorage();\n        $uibModalInstance.close(result);\n    }\n\n    function setLanguage(language) {\n        vm.printLanguage = language;\n    }\n\n    function readSettingsFromLocalStorage() {\n        if ($window.localStorage.printLanguageConfirmationSettings) {\n            if (!isJsonString($window.localStorage.getItem('printLanguageConfirmationSettings'))) {\n                $window.localStorage.removeItem('printLanguageConfirmationSettings');\n            }\n\n            var settingsStr = $window.localStorage.getItem('printLanguageConfirmationSettings');\n            if (settingsStr !== null) {\n                var json = JSON.parse(settingsStr);\n                if (json.printLanguage) { vm.printLanguage = json.printLanguage; }\n            }\n        }\n    }\n    function isJsonString(str) {\n        try {\n            JSON.parse(str);\n        } catch (e) {\n            return false;\n        }\n        return true;\n    }\n\n    function saveSettingsToLocalStorage() {\n        var request = {\n            printLanguage: angular.copy(vm.printLanguage)\n        };\n\n        $window.localStorage.setItem('printLanguageConfirmationSettings', JSON.stringify(request));\n    }\n}\n\nangular\n    .module('services.dialogs.printLanguageConfirmationDialog', [])\n    .service('printLanguageConfirmationDialogService', printLanguageConfirmationDialogService)\n    .controller('printLanguageConfirmationDialogController', printLanguageConfirmationDialogController);\n","// @ngInject\nfunction printPickingListDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, level) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'printPickingListDialogController as vm',\n            templateUrl: 'services/dialogs/printPickingListDialog/printPickingListDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            level: function() {\n                return level;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction printPickingListDialogController($uibModalInstance, $window, message, level, $sce, $translate) {\n    var vm = this;\n\n    //Properties\n    vm.message = $sce.trustAsHtml(message);\n    vm.level = level;\n    vm.printLanguage = 'se';\n    vm.includeStorageLocation = false;\n    vm.includeIsPhotographed = false;\n    vm.includePrices = false;\n    vm.groupings = [];\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.setLanguage = setLanguage;\n\n    activate();\n\n    function activate() {\n        vm.groupings = [\n            { id: 1, description: $translate.instant('article.articlenumber'), code: 'ArticleNumber' }, //'Produktnummer'\n            { id: 2, description: $translate.instant('article.itemgroup'), code: 'ItemGroupCode' }, //'Varugrupp'\n            { id: 3, description: $translate.instant('article.brand'), code: 'BrandCode' }, //'Varumärke'\n            { id: 4, description: $translate.instant('article.maingroup'), code: 'MainGroupCode' }, //'Huvudgrupp'\n            { id: 5, description: $translate.instant('article.department'), code: 'DepartmentCode' } //'Avdelning'\n        ];\n        vm.selectedGrouping = vm.groupings[0];\n        readSettingsFromLocalStorage();\n    }\n\n    function closeModal(isCompleted) {\n        var result = {\n            result: isCompleted,\n            languageCode: vm.printLanguage,\n            grouping: vm.selectedGrouping.code,\n            includeStorageLocation: vm.includeStorageLocation,\n            includeIsPhotographed: vm.includeIsPhotographed,\n            includePrices: vm.includePrices\n        };\n        saveSettingsToLocalStorage();\n        $uibModalInstance.close(result);\n    }\n\n    function setLanguage(language) {\n        vm.printLanguage = language;\n    }\n\n    function readSettingsFromLocalStorage() {\n        if ($window.localStorage.printOrderPickingListSettings) {\n            if (!isJsonString($window.localStorage.getItem('printOrderPickingListSettings'))) {\n                $window.localStorage.removeItem('printOrderPickingListSettings');\n            }\n\n            var settingsStr = $window.localStorage.getItem('printOrderPickingListSettings');\n            if (settingsStr !== null) {\n                var json = JSON.parse(settingsStr);\n                if (json.printLanguage) { vm.printLanguage = json.printLanguage; }\n                if (json.includeStorageLocation) { vm.includeStorageLocation = json.includeStorageLocation; }\n                if (json.includeIsPhotographed) { vm.includeIsPhotographed = json.includeIsPhotographed; }\n                if (json.includePrices) { vm.includePrices = json.includePrices; }\n                if (json.grouping && _.indexOf(vm.groupings, function(so) { return so.code === json.grouping; })) { vm.selectedGrouping = _.find(vm.groupings, function(so) { return so.code === json.grouping; }); }\n            }\n        }\n    }\n    function isJsonString(str) {\n        try {\n            JSON.parse(str);\n        } catch (e) {\n            return false;\n        }\n        return true;\n    }\n\n    function saveSettingsToLocalStorage() {\n        var request = {\n            printLanguage: angular.copy(vm.printLanguage),\n            grouping: angular.copy(vm.selectedGrouping.code),\n            includeStorageLocation: vm.includeStorageLocation ? angular.copy(vm.includeStorageLocation) : null,\n            includeIsPhotographed: vm.includeIsPhotographed ? angular.copy(vm.includeIsPhotographed) : null,\n            includePrices: vm.includeprices ? angular.copy(vm.includePrices) : null\n        };\n\n        $window.localStorage.setItem('printOrderPickingListSettings', JSON.stringify(request));\n    }\n}\n\nangular\n    .module('services.dialogs.printPickingListDialog', [])\n    .service('printPickingListDialogService', printPickingListDialogService)\n    .controller('printPickingListDialogController', printPickingListDialogController);\n","// @ngInject\nfunction purchaseOrderAnalysisFilterDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(selectedSupplier,\n                suppliers,\n                selectedNumberOfResultsPerPage,\n                numberOfResultsPerPage,\n                selectedArticleCollection,\n                articleCollections,\n                showAllCollections,\n                selectedMainGroup,\n                mainGroups,\n                selectedWeekLimit,\n                weekLimit,\n                keepProductTogether,\n                showWeeks,\n                showProduct,\n                includeInactive) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'purchaseOrderAnalysisFilterDialogController as vm',\n            templateUrl: 'services/dialogs/purchaseOrderAnalysisFilterDialog/purchaseOrderAnalysisFilterDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            selectedSupplier: function() {\n                return selectedSupplier;\n            },\n            suppliers: function() {\n                return suppliers;\n            },\n            selectedNumberOfResultsPerPage: function() {\n                return selectedNumberOfResultsPerPage;\n            },\n            numberOfResultsPerPage: function() {\n                return numberOfResultsPerPage;\n            },\n            selectedArticleCollection: function() {\n                return selectedArticleCollection;\n            },\n            articleCollections: function() {\n                return articleCollections;\n            },\n            showAllCollections: function() {\n                return showAllCollections;\n            },\n            selectedMainGroup: function() {\n                return selectedMainGroup;\n            },\n            mainGroups: function() {\n                return mainGroups;\n            },\n            selectedWeekLimit: function() {\n                return selectedWeekLimit;\n            },\n            weekLimit: function() {\n                return weekLimit;\n            },\n            keepProductTogether: function() {\n                return keepProductTogether;\n            },\n            showWeeks: function() {\n                return showWeeks;\n            },\n            showProduct: function() {\n                return showProduct;\n            },\n            includeInactive: function() {\n                return includeInactive;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction purchaseOrderAnalysisFilterDialogController($uibModalInstance,\n        selectedSupplier,\n        suppliers,\n        selectedNumberOfResultsPerPage,\n        numberOfResultsPerPage,\n        selectedArticleCollection,\n        articleCollections,\n        showAllCollections,\n        selectedMainGroup,\n        mainGroups,\n        selectedWeekLimit,\n        weekLimit,\n        keepProductTogether,\n        showWeeks,\n        showProduct,\n        includeInactive) {\n    var vm = this;\n\n    vm.closeModal = closeModal;\n    vm.selectedSupplier = selectedSupplier;\n    vm.suppliers = suppliers;\n    vm.selectedNumberOfResultsPerPage = selectedNumberOfResultsPerPage;\n    vm.numberOfResultsPerPage = numberOfResultsPerPage;\n    vm.selectedArticleCollection = selectedArticleCollection;\n    vm.articleCollections = articleCollections;\n    vm.showAllCollections = showAllCollections;\n    vm.selectedMainGroup = selectedMainGroup;\n    vm.mainGroups = mainGroups;\n    vm.selectedWeekLimit = selectedWeekLimit;\n    vm.weekLimit = weekLimit;\n    vm.keepProductTogether = keepProductTogether;\n    vm.showWeeks = showWeeks;\n    vm.showProduct = showProduct;\n    vm.includeInactive = includeInactive;\n\n    function closeModal(confirmation) {\n        var response = {\n            confirmation: confirmation,\n            selectedSupplier: vm.selectedSupplier,\n            selectedNumberOfResultsPerPage: vm.selectedNumberOfResultsPerPage,\n            selectedArticleCollection: vm.selectedArticleCollection,\n            showAllCollections: vm.showAllCollections,\n            selectedMainGroup: vm.selectedMainGroup,\n            selectedWeekLimit: vm.selectedWeekLimit,\n            keepProductTogether: vm.keepProductTogether,\n            showWeeks: vm.showWeeks,\n            showProduct: vm.showProduct,\n            includeInactive: vm.includeInactive\n        };\n        $uibModalInstance.close(response);\n    }\n}\n\nangular\n    .module('services.dialogs.purchaseOrderAnalysisFilterDialog', [])\n    .service('purchaseOrderAnalysisFilterDialogService', purchaseOrderAnalysisFilterDialogService)\n    .controller('purchaseOrderAnalysisFilterDialogController', purchaseOrderAnalysisFilterDialogController);\n","// @ngInject\nfunction UserPasswordResetDialogService($uibModal, $timeout) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog() {\n        var modalDefaults = {\n            backdrop: 'static',\n            keyboard: false,\n            controller: 'UserPasswordResetDialogServiceController as vm',\n            templateUrl: 'services/dialogs/resetLogin/resetLogin.tpl.html',\n            size: ''\n        };\n\n        modalDefaults.resolve = {\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction UserPasswordResetDialogServiceController($rootScope, $uibModalInstance, $scope, $interval, $translate,\n    AuthService, ToasterService, $timeout) {\n    var vm = this;\n\n    //Properties\n    vm.showPage = 0;\n    vm.currentUser = {};\n    vm.currentUser.email = '';\n    vm.currentUser.tenantName = '';\n    vm.currentUser.securityCode = '';\n    vm.currentUser.newPassword = '';\n    vm.currentUser.confirmPassword = '';\n    vm.usernameOrEmail = '';\n    vm.clickedResetPasswordButton = false;\n    vm.clickedConfirmPasswordButton = false;\n\n    //Methods\n    vm.closeModal = closeModal;\n    vm.resetPassword = resetPassword;\n    vm.confirmNewPassword = confirmNewPassword;\n\n    function activate() {\n        if ($rootScope.currentUser !== undefined) {\n            vm.currentUser = $rootScope.currentUser;\n        }\n    }\n\n    function closeModal() {\n        vm.showConfirmPassword = false;\n        $uibModalInstance.close();\n    }\n\n    function resetPassword() {\n        vm.clickedResetPasswordButton = true;\n        if (vm.usernameOrEmail.length === 0 || vm.currentUser.tenantName.length === 0) {\n            ToasterService.showError($translate.instant('common.errorMissingInputOrTenant'), $translate.instant('common.error'));\n            vm.clickedResetPasswordButton = false;\n            return;\n        }\n        if (!validateEmail(vm.usernameOrEmail)) {\n            vm.currentUser.username = vm.usernameOrEmail;\n            vm.currentUser.email = '';\n        } else {\n            vm.currentUser.email = vm.usernameOrEmail;\n            vm.currentUser.username = '';\n        }\n\n        AuthService.resetPassword(vm.currentUser).then(function(response) {\n            vm.showPage = 1;\n        }, function(error) {\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n            vm.clickedResetPasswordButton = false;\n        });\n    }\n\n    function confirmNewPassword() {\n        vm.clickedConfirmPasswordButton = false;\n        if (vm.currentUser.newPassword.length === 0 || vm.currentUser.confirmPassword.length === 0) {\n            vm.clickedConfirmPasswordButton = true;\n            ToasterService.showError($translate.instant('common.errorMissingPasswordOrConfirmation'), $translate.instant('common.error'));\n            return;\n        } else if (vm.currentUser.newPassword !== vm.currentUser.confirmPassword) {\n            vm.clickedConfirmPasswordButton = true;\n            ToasterService.showError($translate.instant('common.errorPasswordsNotMatching'), $translate.instant('common.error'));\n            return;\n        } else if (vm.currentUser.securityCode.length === 0) {\n            vm.clickedConfirmPasswordButton = true;\n            ToasterService.showError($translate.instant('common.errorMissingSecurityCode'), $translate.instant('common.error'));\n            return;\n        }\n\n        AuthService.confirmNewPassword(vm.currentUser).then(function(response) {\n            if (response !== null || response !== undefined) {\n                vm.showPage = 2;\n            }\n        }, function(error) {\n            ToasterService.showError($translate.instant(error.message), $translate.instant('common.error'));\n            vm.clickedConfirmPasswordButton = false;\n        });\n    }\n\n    function validateEmail(email) {\n        var EMAIL_REGEXP = /^[_a-z0-9]+(\\.[_a-z0-9]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$/;\n\n        return EMAIL_REGEXP.test(email);\n    }\n}\n\nangular\n    .module('services.dialogs.resetLoginDialog', [])\n    .service('UserPasswordResetDialogService', UserPasswordResetDialogService)\n    .controller('UserPasswordResetDialogServiceController', UserPasswordResetDialogServiceController);\n","// @ngInject\nfunction salesTotalFilterDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(periodStartDate,\n                periodEndDate,\n                locations,\n                selectedLocation,\n                includeApproved,\n                includeForProcessing) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'salesTotalFilterDialogController as vm',\n            templateUrl: 'services/dialogs/salesTotalFilterDialog/salesTotalFilterDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            periodStartDate: function() {\n                return periodStartDate;\n            },\n            periodEndDate: function() {\n                return periodEndDate;\n            },\n            locations: function() {\n                return locations;\n            },\n            selectedLocation: function() {\n                return selectedLocation;\n            },\n            includeApproved: function() {\n                return includeApproved;\n            },\n            includeForProcessing: function() {\n                return includeForProcessing;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction salesTotalFilterDialogController($uibModalInstance,\n        periodStartDate,\n        periodEndDate,\n        locations,\n        selectedLocation,\n        includeApproved,\n        includeForProcessing) {\n    var vm = this;\n\n    vm.closeModal = closeModal;\n    vm.periodStartDate = periodStartDate;\n    vm.periodEndDate = periodEndDate;\n    vm.locations = locations;\n    vm.selectedLocation = selectedLocation;\n    vm.includeApproved = includeApproved;\n    vm.includeForProcessing = includeForProcessing;\n\n    function closeModal(confirmation) {\n        var response = {\n            confirmation: confirmation,\n            periodStartDate: vm.periodStartDate,\n            periodEndDate: vm.periodEndDate,\n            selectedLocation: vm.selectedLocation.id,\n            includeApproved: vm.includeApproved,\n            includeForProcessing: vm.includeForProcessing\n        };\n        $uibModalInstance.close(response);\n    }\n}\n\nangular\n    .module('services.dialogs.salesTotalFilterDialog', [])\n    .service('salesTotalFilterDialogService', salesTotalFilterDialogService)\n    .controller('salesTotalFilterDialogController', salesTotalFilterDialogController);\n","// @ngInject\nfunction setFieldConfirmationDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, level, fieldType, minValue, maxValue) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'setFieldConfirmationDialogController as vm',\n            templateUrl: 'services/dialogs/setFieldConfirmationDialog/setFieldConfirmationDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            level: function() {\n                return level;\n            },\n            fieldType: function() {\n                return fieldType;\n            },\n            minValue: function() {\n                return minValue;\n            },\n            maxValue: function() {\n                return maxValue;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction setFieldConfirmationDialogController($uibModalInstance, message, level, fieldType, minValue, maxValue, $sce) {\n    var vm = this;\n\n    vm.message = $sce.trustAsHtml(message);\n    vm.level = level;\n    vm.fieldType = fieldType;\n    vm.dateValue = new Date();\n    vm.numberValue = 0;\n    if (fieldType === 'date') {\n        vm.minValue = minValue ? minValue : '' + (new Date().getFullYear() - 5) + '-' + new Date().getMonth() + '-' + new Date().getDate() + ' 00:00:00';\n        vm.maxValue = maxValue ? maxValue : '' + (new Date().getFullYear() + 5) + '-' + new Date().getMonth() + '-' + new Date().getDate() + ' 00:00:00';\n    } else if (fieldType) {\n        vm.minValue = minValue || minValue === 0 ? minValue : 0;\n        vm.maxValue = maxValue || maxValue === 0 ? maxValue : 100;\n    }\n\n    vm.closeModal = closeModal;\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close({\n            isCompleted: isCompleted,\n            dateValue: dateToUtc(vm.dateValue),\n            numberValue: vm.numberValue\n        });\n    }\n\n    function dateToUtc(date) {\n        var milliseconds = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n        var d = new Date(milliseconds);\n        return d;\n    }\n}\n\nangular\n    .module('services.dialogs.setFieldConfirmationDialog', [])\n    .service('setFieldConfirmationDialogService', setFieldConfirmationDialogService)\n    .controller('setFieldConfirmationDialogController', setFieldConfirmationDialogController);\n","// @ngInject\nfunction updateAddressDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(message, address) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'updateAddressDialogController as vm',\n            templateUrl: 'services/dialogs/updateAddressDialog/updateAddressDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            message: function() {\n                return message;\n            },\n            address: function() {\n                return address;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction updateAddressDialogController($uibModalInstance, message, address) {\n    var vm = this;\n\n    vm.message = message;\n    vm.address = address;\n\n    vm.closeModal = closeModal;\n    vm.save = save;\n\n    function closeModal(isCompleted) {\n        $uibModalInstance.close({\n            isCompleted: isCompleted,\n            address: null\n        });\n    }\n\n    function save() {\n        $uibModalInstance.close({\n            isCompleted: true,\n            address: vm.address\n        });\n    }\n}\n\nangular\n    .module('services.dialogs.updateAddressDialog', [])\n    .service('updateAddressDialogService', updateAddressDialogService)\n    .controller('updateAddressDialogController', updateAddressDialogController);\n","// @ngInject\nfunction updateOrderNoteDialogService($uibModal) {\n\n    return {\n        showDialog: showDialog\n    };\n\n    function showDialog(orderId, note, orderNumberExternal) {\n\n        var modalDefaults = {\n            backdrop: true,\n            keyboard: true,\n            controller: 'updateOrderNoteDialogController as vm',\n            templateUrl: 'services/dialogs/updateOrderNoteDialog/updateOrderNoteDialog.tpl.html',\n            size: 'md'\n        };\n\n        modalDefaults.resolve = {\n            orderId: function() {\n                return orderId;\n            },\n            note: function() {\n                return note;\n            },\n            orderNumberExternal: function() {\n                return orderNumberExternal;\n            }\n        };\n\n        return $uibModal.open(modalDefaults).result;\n    }\n}\n\n// @ngInject\nfunction updateOrderNoteDialogController($uibModalInstance, OrdersApiService, orderId, note, orderNumberExternal, loadSpinnerService,  $sce) {\n    var vm = this;\n\n    vm.orderId = orderId;\n    vm.note = note;\n    vm.orderNumberExternal = orderNumberExternal;\n\n    vm.closeModal = closeModal;\n    vm.save = save;\n\n    function closeModal(success, orderId, note, orderNumberExternal) {\n        $uibModalInstance.close(success, orderId, note, orderNumberExternal);\n    }\n\n    function save() {\n        loadSpinnerService.start('mainSpinner');\n        if (vm.orderId === undefined || vm.orderId === null) { console.log('Order must be saved before updating order note.'); }\n        if (vm.note === undefined || vm.note === null) { vm.note = ''; }\n        if (vm.orderNumberExternal === undefined || vm.orderNumberExternal === null) { vm.orderNumberExternal = ''; }\n        OrdersApiService.updateOrderNote(vm.orderId, vm.note, vm.orderNumberExternal).then(function(response) {\n            $uibModalInstance.close({ success:true, orderId: vm.orderId, note: vm.note, orderNumberExternal: vm.orderNumberExternal});\n        }, function(error) {\n            console.log(error);\n        }).finally(function() {\n            loadSpinnerService.stop('mainSpinner');\n        });\n    }\n}\n\nangular\n    .module('services.dialogs.updateOrderNoteDialog', [])\n    .service('updateOrderNoteDialogService', updateOrderNoteDialogService)\n    .controller('updateOrderNoteDialogController', updateOrderNoteDialogController);\n","// @ngInject\r\nfunction FeatureSwitchService($timeout, $rootScope, $q, DSHttpAdapter, DS, ResourcesService) {\r\n    return {\r\n        hasAdvancedReturnReason: hasAdvancedReturnReason,\r\n        hasAdvancedImport: hasAdvancedImport,\r\n        isAllowedToChangeColoursOnProducts: isAllowedToChangeColoursOnProducts\r\n    };\r\n\r\n    function hasAdvancedReturnReason() {\r\n        var licenses = getLicense();\r\n        var license = licenses['advancedreturnsmodule'];\r\n        return (license !== undefined) ? license : false;\r\n    }\r\n\r\n    function hasAdvancedImport() \r\n    {\r\n        var licenses = getLicense();\r\n        var license = licenses['advancedimportmodule'];\r\n        return (license !== undefined) ? license : false;\r\n    }\r\n\r\n    function isAllowedToChangeColoursOnProducts() {\r\n        var deferred = $q.defer();\r\n\r\n        DSHttpAdapter.GET(DS.defaults.basePath + 'products/isallowedtochangecolours').then(function (response) {\r\n            deferred.resolve(response.data);\r\n        }, function (error) {\r\n            deferred.reject(handleError(error));\r\n        });\r\n\r\n        return deferred.promise;\r\n    }\r\n\r\n    function getLicense() {\r\n        return $rootScope.currentUser.licenseConfig;\r\n    }\r\n\r\n    function handleError(error) {\r\n        return ResourcesService.handleResourceError(error);\r\n    }\r\n}\r\n\r\nangular\r\n    .module('services.featureSwitchService', [])\r\n    .factory('FeatureSwitchService', FeatureSwitchService);\r\n","// @ngInject\nfunction FlexGridHelperService() {\n\n    return {\n        assembleOrderArticleFlexGridData: assembleOrderArticleFlexGridData,\n        assembleArticleVariantsFlexGridData: assembleArticleVariantsFlexGridData\n    };\n\n    function assembleArticleVariantsFlexGridData(article, propertyToShow) {\n        var VARIANT_DETAIL_ONE_PROPERTY_NAME = \"variantDetail1\";\n        var VARIANT_DETAIL_TWO_PROPERTY_NAME = \"variantDetail2\";\n        var VARIANT_DETAIL_THREE_PROPERTY_NAME = \"variantDetail3\";  // Currently not in use (2015-05-25)\n        var VARIANT_DETAIL_FOUR_PROPERTY_NAME = \"variantDetail4\";   // Currently not in use (2015-05-25)\n        var sortedVar1s = getSortedUniqueVariants(article, VARIANT_DETAIL_ONE_PROPERTY_NAME);\n        var sortedVar2s = getSortedUniqueVariants(article, VARIANT_DETAIL_TWO_PROPERTY_NAME);\n        var articleVariantsHashTable = generateArticleVariantsHashTable(article);\n        var returnData = [];\n\n        for (var i = 0; i < sortedVar1s.length; i++) {\n            var gridRowData = {};\n            var variant1 = sortedVar1s[i];\n            gridRowData[\"v\"] = variant1.variantDetailName;\n            for (var j = 0; j < sortedVar2s.length; j++) {\n                var variant2 = sortedVar2s[j];\n                var currentArtVar = articleVariantsHashTable[variant1.variantDetailName + variant2.variantDetailName];\n\n                gridRowData[variant2.variantDetailName] = (currentArtVar && currentArtVar[propertyToShow]) ? currentArtVar[propertyToShow] : 0;\n            }\n            returnData.push(gridRowData);\n        }\n        return returnData;\n\n        function getSortedUniqueVariants(article, propertyName) {\n            var variantDetails = [];\n            var variants = article.articleVariants;\n            for (var i = 0; i < variants.length; i++) {\n                var variantDetail = variants[i][propertyName];\n                if (!arrayContains(variantDetails, variantDetail, \"variantDetailName\")) {\n                    variantDetails.push(variantDetail);\n                }\n            }\n            variantDetails.sort(function(a, b) { return a.sortOrder - b.sortOrder; });\n            return variantDetails;\n        }\n\n        function generateArticleVariantsHashTable(article) {\n            var hashTable = {};\n            var articleVariants = article.articleVariants;\n            for (var i = 0; i < articleVariants.length; i++) {\n                var var1Name = articleVariants[i].variantDetail1.variantDetailName;\n                var var2Name = articleVariants[i].variantDetail2.variantDetailName;\n\n                hashTable[var1Name + var2Name] = articleVariants[i];\n            }\n            return hashTable;\n        }\n\n    }\n\n    function assembleOrderArticleFlexGridData(ordArt) {\n        var VARIANT_DETAIL_ONE_PROPERTY_NAME = \"variantDetail1\";\n        var VARIANT_DETAIL_TWO_PROPERTY_NAME = \"variantDetail2\";\n        var VARIANT_DETAIL_THREE_PROPERTY_NAME = \"variantDetail3\";  // Currently not in use (2015-05-07)\n        var VARIANT_DETAIL_FOUR_PROPERTY_NAME = \"variantDetail4\";   // Currently not in use (2015-05-07)\n        var rows = ordArt.orderRows;\n        var sortedVar1s = getSortedUniqueVariants(ordArt, VARIANT_DETAIL_ONE_PROPERTY_NAME);\n        var sortedVar2s = getSortedUniqueVariants(ordArt, VARIANT_DETAIL_TWO_PROPERTY_NAME);\n        var destinations = getUniqueDestinations(ordArt);\n        var rowsHashTable = generateRowsHashTable(rows); // Keys are: destination.name + articleVariant1.name + articleVariant2.name\n        var returnData = {};\n\n        for (var r = 0; r < destinations.length; r++) {\n            var destName = destinations[r].locationName;\n            returnData[destName] = []; // Initialize fields with empty stacks.\n        }\n        returnData.destinations = destinations; // For looping out the locations\n\n        for (var h = 0; h < destinations.length; h++) {\n            var destinationName = destinations[h].locationName;\n            for (var i = 0; i < sortedVar1s.length; i++) {\n                var gridRowData = {};\n                var variant1 = sortedVar1s[i];\n                gridRowData[\"v\"] = variant1.variantDetailName;\n                for (var j = 0; j < sortedVar2s.length; j++) {\n                    var variant2 = sortedVar2s[j];\n                    var currentDetail = rowsHashTable[destinationName + variant1.variantDetailName + variant2.variantDetailName];\n\n                    gridRowData[variant2.variantDetailName] = (currentDetail != null) ? currentDetail.quantity : 0;\n                }\n                returnData[destinationName].push(gridRowData);\n            }\n        }\n        return returnData;\n\n        // === assembleOrderArticleFlexGridData \"private\" functions ===\n        function getSortedUniqueVariants(orderArticle, detailFieldNameString) {\n            var details = []; // Details stack\n            var orderRows = orderArticle.orderRows;\n            for (var i = 0; i < orderRows.length; i++) {\n                var detail = orderRows[i].articleVariant[detailFieldNameString];\n                if (!arrayContains(details, detail, \"variantDetailName\")) {\n                    details.push(detail);\n                }\n            }\n            details.sort(function(a, b) { return a.sortOrder - b.sortOrder; }); // Sort by sortOrder, ascending.\n            return details;\n        }\n\n        function getUniqueDestinations(orderArticle) {\n            var destinations = []; // Destinations stack\n            var orderRows = orderArticle.orderRows;\n            for (i = 0; i < orderRows.length; i++) {\n                var destination = orderRows[i].destination;\n                if (!arrayContains(destinations, destination, \"locationName\")) {\n                    destinations.push(destination);\n                }\n            }\n            return destinations;\n        }\n\n        function generateRowsHashTable(orderRows) {\n            var hashTable = {};\n            for (var i = 0; i < orderRows.length; i++) {\n                var var1Name = orderRows[i].articleVariant.variantDetail1.variantDetailName;\n                var var2Name = orderRows[i].articleVariant.variantDetail2.variantDetailName;\n                var destName = orderRows[i].destination.locationName;\n\n                hashTable[destName + var1Name + var2Name] = orderRows[i];\n            }\n            return hashTable;\n        }\n        // === End ===\n    }\n\n    function arrayContains(array, object, comparisonFieldName) {\n        for (var i = 0; i < array.length; i++) {\n            if (array[i][comparisonFieldName] === object[comparisonFieldName]) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n}\n\nangular\n    .module('services.flexGridHelperService', [])\n    .factory('FlexGridHelperService', FlexGridHelperService);\n","function HelperService() {\n\n    this.setUndefinedToNull = function(obj, values) {\n        _.forEach(values, function(value) {\n            if (obj[value] === undefined) {\n                obj[value] = null;\n            }\n        });\n    };\n\n\n    this.getChangedData = function(original, edited, values) {\n        var keysInOriginal = Object.keys(original);\n        var keysInEdited = Object.keys(edited);\n        _.forEach(keysInEdited, function(editKey) {\n            if (!_.find(keysInOriginal, function(originalKey) { return originalKey === editKey; })) {\n                original[editKey] = undefined;\n            }\n        });\n\n        return this.findDiffs(_.pick(original, values), edited);\n    };\n\n    this.findDiffs = function(original, edited) {\n        var diffs = {};\n        for (var key in original) {\n            var orgvalue = original[key];\n            var editedvalue = edited[key];\n            if (Array.isArray(orgvalue) || Array.isArray(editedvalue)) {\n                if (!_.isEqual(orgvalue, editedvalue)) {\n                    diffs[key] = editedvalue;\n                }\n            } else {\n                if (!angular.equals(orgvalue, editedvalue)) {\n                    diffs[key] = editedvalue;\n                }\n            }\n        }\n        return diffs;\n    };\n}\n\nangular\n    .module('services.helperService', [])\n    .service('HelperService', HelperService);\n","// @ngInject\nfunction PricelistsHelperService() {\n    return {\n        recalculateRowPrices: recalculateRowPrices\n    };\n\n    function recalculateRowPrices(priceListItem, editorArticle, priceListHeads) {\n        var priceListItemsToRecalculate = _.filter(editorArticle.priceListPrices, function(priceListPrice) {\n            return priceListPrice.isCalculatedPrice;\n        });\n\n        _.forEach(priceListItemsToRecalculate, function(priceToRecalculate) {\n            var priceListHead = _.find(priceListHeads, function(priceListHead) {\n                return priceListHead.id === priceToRecalculate.priceListId;\n            });\n            var exchangeRate = (priceListHead.exchangeRate !== 0) ? priceListHead.exchangeRate : 1;\n            priceToRecalculate.maxPrice = (priceListItem.maxPrice * priceListHead.priceFactor) / exchangeRate;\n            priceToRecalculate.minPrice = (priceListItem.minPrice * priceListHead.priceFactor) / exchangeRate;\n\n            // if (priceToRecalculate.smallestAllowedPrice > priceToRecalculate.maxPrice) {\n            //     priceToRecalculate.maxPrice = Math.min(priceToRecalculate.smallestAllowedPrice, priceListItem.originalPriceMax);\n            //     priceToRecalculate.minPrice = Math.min(priceToRecalculate.smallestAllowedPrice, priceListItem.originalPriceMin);\n            // }\n\n            if (priceListHead.psychologicalPrice !== undefined) {\n                var priceIntervals = _.filter(priceListHead.psychologicalPrice.priceIntervals, function(priceInterval) {\n                    return priceToRecalculate.maxPrice > priceInterval.minValue && priceToRecalculate.maxPrice <= priceInterval.maxValue;\n                });\n\n                priceIntervals = _.sortBy(priceIntervals, function(priceInterval) {\n                    return -priceInterval.maxValue;\n                });\n\n                if (priceIntervals !== undefined && priceIntervals.length > 0) {\n                    var interval = priceIntervals[0];\n                    priceToRecalculate.maxPrice = interval.resultValue;\n                    priceToRecalculate.minPrice = interval.resultValue;\n                }\n            }\n\n            // Round the prices to two decimals.\n            priceToRecalculate.maxPrice = _.round(priceToRecalculate.maxPrice, 2);\n            priceToRecalculate.minPrice = _.round(priceToRecalculate.minPrice, 2);\n\n        });\n    }\n}\n\nangular\n    .module('services.pricelistHelperService', [])\n    .factory('PricelistsHelperService', PricelistsHelperService);\n","// @ngInject\nfunction MockImportFileRowService(toastr, $timeout, $q) {\n    return {\n        validateFileRow: validateFileRow\n    };\n\n    function validateFileRow(fileRow) {\n        var deferred = $q.defer();\n        var returnList = [];\n\n        var promise = $timeout(function() {\n            if (fileRow.alternativeArticleNumber === '') {\n                returnList.push({ severity:'error', property: 'AlternativeArticleNumber', errorType: 'NoValueAlternativeArticleNumber', displayMessage: 'importerror.wrongarticlenumber' });\n            }\n\n            if (fileRow.articleName === '') {\n                returnList.push({ severity:'warning', property: 'articleName', errorType: 'NoValueArticleName', displayMessage: 'importerror.noarticlename' });\n            }\n\n            if (fileRow.descriptionShort) {\n                returnList.push({ severity: 'warning', property: 'descriptionShort', errorType: 'NoValueDescriptionShort', displayMessage: 'importerror.nodescription' });\n            }\n\n            if (fileRow.itemGroupString === '') {\n                returnList.push({ severity: 'error', property: 'ItemGroupString', errorType: 'NoValueItemGroup', displayMessage: 'importerror.nonexistentitemgroup' });\n            }\n\n            if (fileRow.variant1Name === '') {\n                returnList.push({ severity:'error', property: 'variant1Name', errorType: 'NoValueVariant1Name', displayMessage: 'importerror.nonexistentcolor' });\n            }\n\n            if (fileRow.variant2Name === '') {\n                returnList.push({ severity:'error', property: 'variant2Name', errorType: 'NoValueVariant2Name', displayMessage: 'importerror.nonexistentsize' });\n            }\n\n            if (fileRow.departmentCode === '') {\n                returnList.push({ severity:'warning', property: 'departmentCode', errorType: 'NoValueDepartmentCode', displayMessage: 'importerror.nonexistent' });\n            }\n\n            if (fileRow.quantity === '') {\n                returnList.push({ severity: 'warning', property: 'Quantity', errorType: 'NoValueQuantity', displayMessage: 'importerror.noquantity' });\n            }\n\n            if (fileRow.purchaseCost === '') {\n                returnList.push({ severity: 'error', property: 'purchaseCost', errorType: 'NoValuePurchaseCost', displayMessage: 'importerror.nopurchasecost' });\n            }\n\n            if (fileRow.salesPrice === '') {\n                returnList.push({ severity: 'error', property: 'salesPrice', errorType: 'NoValueSalesPrice', displayMessage: 'importerror.nosalesprice' });\n            }\n\n            if (fileRow.previousPrice === '') {\n                returnList.push({ severity: 'warning', property: 'previousPrice', errorType: 'NoValuePreviousPrice', displayMessage: 'importerror.nopreviousprice' });\n            }\n\n            if (fileRow.subCategory === '') {\n                returnList.push({ severity: 'warning', property: 'subCategory', errorType: 'NoValueSubcategory', displayMessage: 'importerror.nosubcategory' });\n            }\n\n            if (fileRow.intrastatCode === '') {\n                returnList.push({ severity: 'warning', property: 'intrastatCode', errorType: 'NoValueIntrastatcode', displayMessage: 'importerror.nointrastatcode' });\n            }\n\n            if (fileRow.barcode === '') {\n                returnList.push({ severity: 'error', property: 'barcode', errorType: 'NoValueBarcode', displayMessage: 'importerror.nobarcode' });\n            }\n\n            if (fileRow.collection === '') {\n                returnList.push({ severity: 'warning', property: 'collection', errorType: 'NoValueCollection', displayMessage: 'importerror.nocollection' });\n            }\n\n            deferred.resolve(returnList);\n        }, 2000);\n\n        return deferred.promise;\n    }\n\n}\n\n\nangular\n    .module('services.mockImportFileRowService', [])\n    .factory('MockImportFileRowService', MockImportFileRowService);\n","angular.module('services', [\n    'services.dialogs',\n    'services.authService',\n    'services.helperService',\n    'services.flexGridHelperService',\n    'services.toasterService',\n    'services.pricelistHelperService',\n    'services.barcodeService',\n    'services.mockImportFileRowService',\n    'services.featureSwitchService'\n]);\n","// @ngInject\nfunction ToasterService(toastr) {\n    return {\n        showSuccess: showSuccess,\n        showWarning: showWarning,\n        showError: showError,\n        showInfo: showInfo\n    };\n\n    function showSuccess(message, title, timeOutTimer) {\n        if(timeOutTimer !== undefined) {\n            toastr.success(message, title, { timeOut: timeOutTimer});\n        }else\n            toastr.success(message, title);\n    }   \n\n    function showWarning(message, title, timeOutTimer) {\n        if(timeOutTimer !== undefined) {\n            toastr.warning(message, title, {timeOut: timeOutTimer});\n        }else\n            toastr.warning(message, title);\n    }\n\n    function showError(message, title, timeOutTimer) {\n        if(timeOutTimer !== undefined) {\n            toastr.error(message, title, {timeOut: timeOutTimer});\n        }else\n            toastr.error(message, title);\n    }\n\n    function showInfo(message, title, timeOutTimer) {\n        \n        if(timeOutTimer !== undefined) {\n            toastr.info(message, title, {timeOut: timeOutTimer});\n        }else\n            toastr.info(message, title);\n    }\n\n\n}\n\n\nangular\n    .module('services.toasterService', [])\n    .factory('ToasterService', ToasterService);\n","import { useSyncExternalStore } from 'react';\nimport { createPortal } from 'react-dom';\nimport { createRoot } from 'react-dom/client';\nimport { getElements, subscribe } from '../bridge/bridgeManager';\n \nfunction Root() {\n  return (\n    <BridgeElements />\n  );\n}\n \nfunction BridgeElements() {\n  const elements = useSyncExternalStore(subscribe, getElements);\n \n  return (\n    <>\n      {elements.map((e) =>\n        createPortal(\n          e.element,\n          e.container,\n        ),\n      )}\n    </>\n  );\n}\n \nexport function renderReactRoot(container: Element) {\n  const root = createRoot(container);\n  root.render(<Root />);\n}","window.moment = require('moment/moment');\nrequire('angular-cookies/angular-cookies');\nrequire('js-data/dist/js-data');\nrequire('js-data-angular/dist/js-data-angular');\nrequire('angular-ui-router/release/angular-ui-router');\nrequire('lodash/lodash');\nrequire('angular-toastr/dist/angular-toastr.tpls');\nrequire('angular-ui-bootstrap/dist/ui-bootstrap');\nrequire('angular-ui-bootstrap/dist/ui-bootstrap-tpls.js');\nrequire('angular-gridster/src/angular-gridster');\nrequire('angular-google-chart/ng-google-chart');\nrequire('angular-chart.js/angular-chart');\nrequire('angular-translate/dist/angular-translate');\nrequire('angular-translate-storage-local/angular-translate-storage-local');\nrequire('angular-translate-storage-cookie/angular-translate-storage-cookie');\nrequire('angular-translate-loader-url');\nrequire('ui-select/dist/select');\nrequire('d3/d3');\nrequire('../modules/angular-spinner/angular-spinner');\nrequire('spin/dist/spin');\nrequire('flexmonster/flexmonster.full')\nrequire('pivot-xml-report-converter/js/fm-converter')\nrequire('./less/app.less');\nwindow.XLSX = require('xlsx/xlsx.mjs');\nimport { renderReactRoot } from './react/Root';\n\n// Dynamically require so Webpack finds them all.\nconst components = require.context('.', true, /^(?!.*\\/assets\\/).*\\.js$/);\ncomponents.keys().forEach(components);\n\n\n// Populate the AngularJS $templateCache\nangular.module('app').run([\n    '$templateCache',\n    ($templateCache) => {\n      const templates = require.context('../../', true, /^.*\\.tpl\\.html/);\n      templates.keys().forEach((key) => {\n        let templatePath = key.slice(2);\n        if (templatePath.startsWith('Front/src/app/')) {\n          templatePath = templatePath.slice('Front/src/app/'.length);\n        } else if (templatePath.startsWith('Front/src/common/')) {\n          templatePath = templatePath.slice('Front/src/common/'.length);\n        }\n        return $templateCache.put(templatePath, templates(key));\n      });\n    },\n  ]);\n\n  renderReactRoot(document.getElementById('react-root'));","(function() {\n  \"use strict\";\n  angular.module('app.version', [])\n    .value('currentVersion', '<%= newVersion %>');\n})();\n","// Module\nvar code = \"<div class=\\\"app app-header-fixed\\\" id=\\\"app\\\" ui-view=\\\"app-content\\\">\\n\\n</div>\\n<div load-spinner spinner-name=\\\"mainSpinner\\\"></div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n    <div ui-view=\\\"\\\"></div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .ta-editor {\\n        min-height: 180px;\\n        height: auto;\\n        overflow: auto;\\n        font-family: inherit;\\n        font-size: 100%;\\n    }\\n</style>\\n<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n\\n        <div class=\\\"col\\\">\\n            <div class=\\\"wrapper-lg\\\">\\n                <div class=\\\"row\\\">\\n                    <div class=\\\"col-md-1\\\">\\n                        <ul class=\\\"nav nav-pills nav-stacked\\\">\\n                            <li role=\\\"presentation\\\" ng-repeat=\\\"template in vm.templates\\\" role=\\\"presentation\\\" class=\\\"{{ template.id == vm.selectedTemplate.id ? 'active':''}}\\\" >\\n                                <a ng-click=\\\"vm.selectTemplate(template)\\\">{{(\\\"analysis.pdfTemplateType\\\" + template.type) | translate}}</a>\\n                            </li>\\n                        </ul>\\n                    </div>\\n                    <div class=\\\"col-md-11\\\">\\n                        <label for=\\\"htmlEditor\\\">{{(\\\"analysis.pdfTemplateType\\\" + vm.selectedTemplate.type) | translate}}</label>\\n                        <div text-angular=\\\"text-angular\\\" name=\\\"htmlEditor\\\" ng-model=\\\"vm.selectedTemplate.html\\\"  ></div>\\n                    </div>\\n                </div>\\n                <div class=\\\"row\\\">\\n                    <button type=\\\"button\\\" ng-click=\\\"vm.save()\\\" class=\\\"btn btn-sm btn-primary\\\" >{{'common.save' | translate}}</button>\\n                </div>\\n                \\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div id=\\\"flexmonsterScripts\\\">\\n</div>\\n<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div class=\\\"row\\\">\\n                            <toaster-container></toaster-container>\\n                            <ul id=\\\"reportTabs\\\" class=\\\"nav nav-pills\\\">\\n                                <li role=\\\"presentation\\\" ng-disabled=\\\"vm.isLoadingReport\\\" ng-repeat=\\\"report in vm.reports\\\" class=\\\"{{ report.id == vm.selectedReport.id ? 'active':''}}\\\">\\n                                    <a ng-if=\\\"report.id > -2\\\" ng-click=\\\"vm.loadReport(report.id)\\\" popover-placement=\\\"bottom\\\" popover=\\\"{{report.description}}\\\" popover-trigger=\\\"mouseenter\\\">{{report.name}}</a>\\n                                    <a ng-if=\\\"report.id == -2\\\" ng-click=\\\"vm.selectUserReports()\\\">{{report.name}}</a>\\n                                    <a ng-if=\\\"report.id == -3\\\" ng-click=\\\"vm.selectSharedReports()\\\">{{report.name}}</a>\\n                                </li>\\n                            </ul>\\n                        </div>\\n                        <div class=\\\"row\\\" ng-show=\\\"vm.editReportTemplates\\\">\\n                            <div class=\\\"col-md-2 hide\\\">\\n                                <wj-combo-box style=\\\"float:left\\\" control=\\\"cbSelectLevel\\\" id=\\\"cbSelectLevel\\\" items-source=\\\"vm.reportLevels\\\" ng-disabled=\\\"vm.isLoadingReport\\\"\\n                                              is-editable=\\\"false\\\"\\n                                              placeholder=\\\"Nivå\\\"\\n                                              display-member-path=\\\"uniqueName\\\"\\n                                              selected-value-path=\\\"uniqueName\\\"\\n                                              is-dropped-down-changed=\\\"vm.cbSelectLevelChanged(s)\\\">\\n                                </wj-combo-box>\\n                                <button class=\\\"btn\\\" ng-click=\\\"vm.collapseRows()\\\"><i class=\\\"fa fa-compress\\\"></i></button>\\n                            </div>\\n                            <ui-select ng-model=\\\"vm.selectedDataSource\\\" enter-as-tab class=\\\"col-md-2 enterAsTab\\\">\\n                                <ui-select-match placeholder=\\\"{{'analysis.datasource' | translate}}\\\">{{$select.selected.name}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"dataSource in vm.dataSources\\\">\\n                                    <span>{{dataSource.name}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                            <input type=\\\"text\\\" class=\\\"col-md-2 enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.selectedReport.name\\\" enter-as-tab placeholder=\\\"{{'analysis.reportName' | translate}}\\\" />\\n                            <textarea class=\\\"col-md-2\\\" name=\\\"name\\\" ng-model=\\\"vm.selectedReport.description\\\" placeholder=\\\"{{'analysis.reportDescription' | translate}}\\\" enter-as-tab />\\n                            <div class=\\\"col-md-2\\\">\\n                                <button type=\\\"button\\\" ng-click=\\\"vm.removeMeasures()\\\" class=\\\"btn btn-sm btn-primary\\\" ng-disabled=\\\"vm.selectedReport.id === -1 || vm.isLoadingReport\\\">{{'common.removeMeasures' | translate}}</button>\\n                                <button type=\\\"button\\\" ng-click=\\\"vm.saveReport()\\\" class=\\\"btn btn-sm btn-primary\\\" ng-disabled=\\\"vm.selectedReport.id === -1 || vm.isLoadingReport\\\">{{'common.save' | translate}}</button>\\n                                <button type=\\\"button\\\" ng-click=\\\"vm.convertAllReports()\\\">Konvertera rapporter</button>\\n                            </div>\\n                        </div>\\n                        <div class=\\\"row\\\">\\n                            <div class=\\\"pull-left hide\\\" ng-show=\\\"!vm.editReportTemplates\\\">\\n                                <wj-combo-box style=\\\"float:left\\\" control=\\\"cbSelectLevel2\\\" id=\\\"cbSelectLevel2\\\" items-source=\\\"vm.reportLevels\\\" ng-disabled=\\\"vm.isLoadingReport\\\"\\n                                              is-editable=\\\"false\\\"\\n                                              placeholder=\\\"Nivå\\\"\\n                                              display-member-path=\\\"uniqueName\\\"\\n                                              selected-value-path=\\\"uniqueName\\\"\\n                                              is-dropped-down-changed=\\\"vm.cbSelectLevelChanged(s)\\\">\\n                                </wj-combo-box>\\n                                <a><i class=\\\"fa fa-compress\\\" ng-click=\\\"vm.collapseRows()\\\"></i></a>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\" ng-show=\\\"vm.showUserReportList\\\">\\n                                <wj-combo-box control=\\\"cbEditUserReport\\\" id=\\\"cbEditUserReport\\\" items-source=\\\"vm.userReports\\\" ng-disabled=\\\"vm.isLoadingReport\\\"\\n                                              is-editable=\\\"false\\\"\\n                                              placeholder=\\\"rapportnamn\\\"\\n                                              display-member-path=\\\"name\\\"\\n                                              selected-value-path=\\\"id\\\"\\n                                              is-dropped-down-changed=\\\"vm.editFormSelectedReportChanged(s)\\\">\\n                                </wj-combo-box>\\n                            </div>\\n                            <div class=\\\"col-lg-5\\\" ng-show=\\\"vm.showUserReportList && vm.selectedUserReport.id != -1 && !vm.isLoadingReport\\\">\\n                                <div class=\\\"form-inline\\\">\\n                                    <div class=\\\"form-group\\\">\\n                                        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.deleteUserReport()\\\">{{'common.remove' | translate}}</button>\\n                                        <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.selectedUserReport.name\\\" placeholder=\\\"{{'analysis.reportName' | translate}}\\\" ng-enter-as-tab />\\n                                        <label class=\\\"control-label\\\">{{'analysis.shared' | translate}}</label>\\n                                        <input type=\\\"checkbox\\\" class=\\\"form-control\\\" name=\\\"shared\\\" ng-model=\\\"vm.selectedUserReport.isShared\\\" />\\n                                    </div>\\n                                    <span>\\n                                        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.editUserReport()\\\">{{'common.save' | translate}}</button>\\n                                    </span>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\" ng-show=\\\"vm.showSharedReportList\\\">\\n                                <wj-combo-box control=\\\"cbSharedReport\\\" id=\\\"cbSharedReport\\\" items-source=\\\"vm.sharedReports\\\" ng-disabled=\\\"vm.isLoadingReport\\\"\\n                                              is-editable=\\\"false\\\"\\n                                              placeholder=\\\"rapportnamn\\\"\\n                                              display-member-path=\\\"name\\\"\\n                                              selected-value-path=\\\"id\\\"\\n                                              is-dropped-down-changed=\\\"vm.selectedSharedReportChanged(s)\\\">\\n                                </wj-combo-box>\\n                            </div>\\n                            <div class=\\\"col-lg-5\\\" ng-show=\\\"!vm.showUserReportList && !vm.editReportTemplates\\\">\\n                                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-model=\\\"saveAsFormCollapsed\\\" ng-click=\\\"showSaveAsForm=!showSaveAsForm\\\" ng-show=\\\"!showSaveAsForm\\\">{{'common.saveAs' | translate}}</button>\\n                                <div class=\\\"form-inline\\\" ng-show=\\\"showSaveAsForm\\\">\\n                                    <div class=\\\"form-group\\\">\\n                                        <wj-combo-box control=\\\"cbSaveUserReport\\\" items-source=\\\"vm.userReports\\\"\\n                                                      is-editable=\\\"true\\\"\\n                                                      placeholder=\\\"rapportnamn\\\"\\n                                                      display-member-path=\\\"name\\\"\\n                                                      selected-value-path=\\\"name\\\">\\n                                        </wj-combo-box>\\n                                    </div>\\n                                    <span>\\n                                        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-disabled=\\\"!vm.canSaveUserReport();\\\" ng-click=\\\"vm.saveNewUserReport();showSaveAsForm=false;\\\">{{'common.save' | translate}}</button>\\n                                        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"showSaveAsForm=false\\\">{{'common.cancel' | translate}} </button>\\n                                    </span>\\n                                </form>\\n                            </div>\\n                        </div>\\n                        <div class=\\\"row\\\">\\n                            <div id=\\\"pivotContainer\\\"></div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"row\\\">\\n    <div class=\\\"col-md-12\\\">\\n        <div class=\\\"row\\\">\\n            <uib-tabset active=\\\"vm.activeTabIndex\\\">\\n                <uib-tab ng-repeat=\\\"group in vm.reportGroups\\\" ng-click=\\\"vm.selectTab(group.name)\\\">\\n                    <uib-tab-heading>\\n                        <a ng-click=\\\"\\\">\\n                            <i class=\\\"fa {{vm.showNavigation && vm.selectedTab === group.name ? 'fa-chevron-down':'fa-chevron-right'}}\\\"></i> {{group.name}}\\n                        </a>\\n                    </uib-tab-heading>\\n                    <div class=\\\"row\\\" ng-show=\\\"vm.showNavigation === true\\\">\\n                        <div class=\\\"col-md-3\\\">\\n                            <div id=\\\"report_list\\\" class=\\\"list-group\\\" style=\\\"max-height:200px;min-height:300px; overflow-y:auto; max-width:500px; cursor:pointer\\\">\\n                                <div class=\\\"list-group-item nav-list-sorting\\\">\\n                                    {{'analysis.sort' | translate}}:\\n                                    <a href=\\\"#\\\" ng-click=\\\"vm.sortDescending($event)\\\">{{'analysis.sort.descending' | translate}}</a>\\n                                    -\\n                                    <a href=\\\"#\\\" ng-click=\\\"vm.sortAscending($event)\\\">{{'analysis.sort.ascending' | translate}}</a>\\n                                </div>\\n                                <div id=\\\"report_{{report.id}}\\\" class=\\\"list-group-item\\\" ng-class=\\\"{focus: vm.selectedReport === report}\\\" ng-repeat=\\\"report in group.reports\\\"\\n                                     ng-click=\\\"vm.navigate(report, false)\\\" data-toggle=\\\"tooltip\\\" title=\\\"{{report.description}}\\\">\\n                                    <div style=\\\"color:green\\\" ng-if=\\\"report.changed === undefined && group.reportGroupType === 'userReport'\\\">\\n                                        <small><i class=\\\"fa fa-asterisk\\\"></i></small> {{'common.new' | translate}}\\n                                    </div>\\n                                    <span>\\n                                        {{report.name.length > 0 ? report.name: '-'}}\\n                                    </span>\\n                                    <div class=\\\"pull-right\\\">\\n                                        <button type=\\\"button\\\" class=\\\"btn btn-sm\\\" ng-show=\\\"group.name.toLowerCase() === vm.Constants.ReportGroupName['sales'].toLowerCase() && report.name.toLowerCase() === vm.Constants.ReportName['salesWhen'].toLowerCase()\\\" ng-click=\\\"vm.modalDialog.show()\\\">{{'analysis.filter' | translate}}</button>\\n                                        <button type=\\\"button\\\" class=\\\"btn btn-sm\\\" ng-disabled=\\\"vm.isLoading && vm.loadedReport.id === report.id\\\" ng-click=\\\"vm.showNavigation=false;vm.navigate(report, true)\\\">{{'common.show' | translate}}</button>\\n                                    </div>\\n                                    <wj-popup control=\\\"vm.modalDialog\\\" modal=\\\"true\\\" hide-trigger=\\\"None\\\">\\n                                        <form class=\\\"ng-pristine ng-valid ng-scope\\\"> \\n                                            <h4 class=\\\"modal-header\\\">\\n                                                {{'analysis.filtering' | translate}}\\n                                                <button type=\\\"button\\\" tabindex=\\\"-1\\\" class=\\\"close wj-hide\\\">×</button>\\n                                            </h4>\\n                                            <div class=\\\"modal-body\\\">\\n                                                <div>\\n                                                    <label>{{'analysis.startDate' | translate}}</label><br>\\n                                                    <wj-input-date\\n                                                        value=\\\"vm.startDate\\\"\\n                                                        min=\\\"2016-01-01\\\"\\n                                                        format=\\\"yyyy-MM-dd\\\">\\n                                                    </wj-input-date>\\n                                                    \\n                                                </div>\\n                                            </div>\\n                                            <div class=\\\"modal-footer\\\">\\n                                                <button class=\\\"btn btn-primary wj-hide\\\" ng-click=\\\"vm.showNavigation=false;vm.generate()\\\">\\n                                                    {{'analysis.generate' | translate}}\\n                                                </button>\\n                                                <button class=\\\"btn btn-default wj-hide\\\">\\n                                                    {{'analysis.close' | translate}}\\n                                                </button>\\n                                            </div>\\n                                        </form>\\n                                    </wj-popup>\\n                                </div>\\n                            </div>\\n                        </div>\\n                        <div class=\\\"col-md-4\\\">\\n                            <div class=\\\"panel panel-default\\\" ng-show=\\\"vm.selectedReport !== undefined\\\">\\n                                <div class=\\\"panel-body\\\">\\n                                    <form ng-if=\\\"vm.selectedGroup.reportGroupType === 'userReport'\\\" class=\\\"form-horizontal\\\" ng-model-options=\\\"{ updateOn: 'submit' }\\\" ng-submit=\\\"vm.saveReport()\\\">\\n                                        <div ng-if=\\\"vm.isValidDate(vm.selectedReport.changed)\\\" class=\\\"row\\\">\\n                                            <div class=\\\"col-sm-12\\\">\\n                                                <small class=\\\"pull-right\\\">{{'common.changed' | translate}}: {{vm.formatDate(vm.selectedReport.changed, \\\"YYYY-MM-DD\\\")}}</small>\\n                                            </div>\\n                                        </div>\\n                                        <div ng-if=\\\"vm.isValidDate(vm.selectedReport.created)\\\" class=\\\"row\\\">\\n                                            <div class=\\\"col-sm-12 pull-right\\\">\\n                                                <small class=\\\"pull-right\\\">{{'common.created' | translate}}: {{vm.formatDate(vm.selectedReport.created, \\\"YYYY-MM-DD\\\")}}</small>\\n                                            </div>\\n                                        </div>\\n                                        <div class=\\\"form-group\\\">\\n                                            <label class=\\\"col-sm-2 control-label\\\">{{'analysis.reportName' | translate}}</label>\\n                                            <div class=\\\"col-sm-10\\\">\\n                                                <input class=\\\"form-control enterAsTab\\\" type=\\\"text\\\" ng-model=\\\"vm.selectedReport.name\\\" ng-enter-as-tab />\\n                                            </div>\\n                                        </div>\\n                                        <div class=\\\"form-group\\\">\\n                                            <label class=\\\"col-sm-2 control-label\\\">{{'analysis.description' | translate}}</label>\\n                                            <div class=\\\"col-sm-10\\\">\\n                                                <textarea class=\\\"form-control enterAsTab\\\" type=\\\"text\\\" ng-model=\\\"vm.selectedReport.description\\\" ng-enter-as-tab />\\n                                            </div>\\n                                        </div>\\n                                        <div class=\\\"form-group\\\">\\n                                            <div class=\\\"col-sm-offset-2 col-sm-10\\\">\\n                                                <div class=\\\"checkbox\\\" ng-hide=\\\"!vm.canPublishReport()\\\">\\n                                                    <label>\\n                                                        <input type=\\\"checkbox\\\" ng-model=\\\"vm.selectedReport.isShared\\\" />\\n                                                        {{'analysis.shared' | translate}}\\n                                                    </label>\\n                                                </div>\\n                                            </div>\\n                                        </div>\\n                                        <div class=\\\"form-group\\\">\\n                                            <label class=\\\"col-sm-2 control-label\\\">{{'analysis.sort' | translate}}</label>\\n                                            <div class=\\\"col-sm-10\\\">\\n                                                <small><a ng-click=\\\"vm.moveUp(vm.selectedReport)\\\"><i style=\\\"vertical-align:text-bottom\\\" class=\\\"fa fa-chevron-up\\\"></i></a></small><br />\\n                                                <small><a ng-click=\\\"vm.moveDown(vm.selectedReport)\\\"><i style=\\\"vertical-align:text-top\\\" class=\\\"fa fa-chevron-down\\\"></i></a></small>\\n                                            </div>\\n                                        </div>\\n                                        <div class=\\\"form-group\\\">\\n                                            <div class=\\\"col-sm-offset-2 col-sm-10\\\">\\n                                                <br />\\n                                                <button type=\\\"submit\\\" class=\\\"btn btn-sm btn-primary\\\">{{'common.save' | translate}}</button>\\n                                                <button type=\\\"button\\\" ng-click=\\\"vm.deleteReport()\\\" class=\\\"btn btn-sm pull-right\\\">{{'common.delete' | translate}}</button>\\n                                            </div>\\n                                        </div>\\n                                        <div class=\\\"form-group\\\">\\n                                            <div ng-show=\\\"vm.loadedReportPath.length > 0 && vm.loadedReport !== vm.selectedReport\\\" class=\\\"col-sm-12 alert alert-danger\\\" role=\\\"alert\\\">\\n                                                <p>\\n                                                    {{'analysis.changesMustBeSavedFrom' | translate}}\\n                                                </p>\\n                                            </div>\\n                                        </div>\\n                                    </form>\\n                                    <form ng-if=\\\"vm.selectedGroup.reportGroupType === 'sharedReport' || vm.selectedGroup.reportGroupType === 'templateReport'\\\" class=\\\"form-horizontal\\\">\\n\\n                                        <div class=\\\"row\\\">\\n                                            <div class=\\\"col-sm-8\\\">\\n                                                <h4>{{vm.selectedReport.name}}</h4>\\n                                            </div>\\n                                            <div class=\\\"col-sm-4\\\">\\n                                                <small ng-if=\\\"vm.isValidDate(vm.selectedReport.changed)\\\" class=\\\"pull-right\\\">{{'common.changed' | translate}}: {{vm.formatDate(vm.selectedReport.changed, \\\"YYYY-MM-DD\\\")}}</small> <br />\\n                                                <small ng-if=\\\"vm.isValidDate(vm.selectedReport.created)\\\" class=\\\"pull-right\\\">{{'common.created' | translate}}: {{vm.formatDate(vm.selectedReport.created, \\\"YYYY-MM-DD\\\")}}</small>\\n                                            </div>\\n                                        </div>\\n                                        <div class=\\\"row\\\">\\n                                            <div class=\\\"col-sm-12\\\">\\n                                                {{vm.selectedReport.description}}\\n                                            </div>\\n                                        </div>\\n                                        <br>\\n                                        <div class=\\\"row\\\">\\n                                            <div class=\\\"col-sm-12\\\">\\n                                                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.copySelectedReport()\\\">{{ 'analysis.addToMyReports' | translate}}</button>\\n                                            </div>\\n                                        </div>\\n                                    </form>\\n                                </div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </uib-tab>\\n            </uib-tabset>\\n            <div class=\\\"row\\\">\\n                <div class=\\\"col-md-2\\\">\\n                    \\n                </div>\\n            </div>\\n            <div class=\\\"row\\\">\\n                <div class=\\\"col-md-12\\\">                    \\n                    <div id=\\\"pivotContainer\\\"></div>\\n                </div>\\n            </div>\\n\\n        </div>\\n\\n    </div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <user-report></user-report>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveAccount()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewAccount\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteAccount()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewAccount\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'account.accountNumber'\\\">\\n            <div ng-if=\\\"!vm.isNewAccount && !vm.isEditing\\\">\\n                <label>{{vm.account.accountNumber}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewAccount || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isAccountNumberValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"accountNumber\\\" ng-model=\\\"vm.account.accountNumber\\\" maxlength=\\\"20\\\" uppercase enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'account.accountName'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.account.accountName}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"accountName\\\" ng-model=\\\"vm.account.accountName\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'account.isRoundingAccount'\\\">\\n            <span ng-show=\\\"!vm.isEditing\\\"  class=\\\"editable\\\">{{vm.account.isRoundingAccount ? ('common.true' | translate) : ('common.false' | translate)}}</span>\\n            <label class=\\\"i-checks m-t-xs\\\" ng-show=\\\"vm.isEditing\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.account.isRoundingAccount\\\" />\\n                <i></i>\\n            </label>\\n    </ca-form-group-row>        \\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.accounts.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.accounts.account', {accountId: account.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"account in vm.accounts | orderBy: 'accountNumber'\\\" ng-class=\\\"{'focus m-l-none': account.id === vm.selectedAccountId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': account.id === vm.selectedAccountId }\\\">\\n                                <span class=\\\"text-muted\\\">{{account.accountNumber}}</span> <span class=\\\"sm-label\\\">{{account.accountName}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveCollection()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewCollection\\\"> {{'common.cancel' | translate}} </button>\\n        <span> &nbsp;{{vm.collection.collectionCode + \\\" \\\" + vm.collection.collectionDescription}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'articlecollection.code'\\\">\\n            <span ng-if=\\\"!vm.isNewCollection\\\">{{ vm.collection.collectionCode }}</span>\\n            <div>\\n                <input id=\\\"collectionCode\\\" name=\\\"collectionCode\\\" ng-if=\\\"vm.isEditing && vm.isNewCollection\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.collection.collectionCode\\\" enter-as-tab required /> \\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.description'\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.collectionDescription }}</span>\\n            <div>\\n                <input name=\\\"collectionDescription\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.collection.collectionDescription\\\" enter-as-tab required /> \\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.isDefaultCollection'\\\" ng-if=\\\"!vm.isNewCollection\\\">\\n            <div>\\n                <input type=\\\"checkbox\\\" name=\\\"isDefaultCollection\\\" ng-model=\\\"vm.collection.isDefaultCollection\\\" ng-disabled=\\\"true\\\" />\\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                {{'articlecollection.isCurrentDescription' | translate}}\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.articleCollectionType'\\\">\\n            <span ng-if=\\\"!vm.isNewCollection && vm.collection.articleCollectionType === 0\\\">{{'articlecollection.articleCollectionTypeStatic' | translate}}</span>\\n            <span ng-if=\\\"!vm.isNewCollection && vm.collection.articleCollectionType === 1\\\">{{'articlecollection.articleCollectionTypeRolling' | translate}}</span>\\n            <div ng-if=\\\"vm.isNewCollection && vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.collection.selectedArticleCollectionType\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\"/>\\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                <ul>\\n                    <li>{{'articlecollection.articleCollectionTypeDescription1' | translate}}</li>\\n                    <li>{{'articlecollection.articleCollectionTypeDescription2' | translate}}</li>\\n                </ul>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <!-- Only if static collection type -->\\n        <ca-form-group-row label=\\\"'articlecollection.fromDate'\\\" ng-if=\\\"vm.collection.articleCollectionType === 0\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.fromDate | date:'yyyy-MM-dd' }}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <wj-input-date\\n                    value=\\\"vm.collection.fromDate\\\"\\n                    format=\\\"yyyy-MM-dd\\\"\\n                    style=\\\"width:100%\\\">\\n                </wj-input-date>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'articlecollection.toDate'\\\" ng-if=\\\"vm.collection.articleCollectionType === 0\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.toDate | date:'yyyy-MM-dd' }}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <wj-input-date\\n                    value=\\\"vm.collection.toDate\\\"\\n                    format=\\\"yyyy-MM-dd\\\"\\n                    style=\\\"width:100%\\\">\\n                </wj-input-date>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <!-- Only if rolling collection type -->\\n        <ca-form-group-row label=\\\"'articlecollection.offset'\\\" ng-if=\\\"vm.collection.articleCollectionType === 1\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.offset }}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input name=\\\"selectedOffset\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.collection.offset\\\" enter-as-tab required /> \\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                {{'articlecollection.offsetDescription' | translate}}\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.duration'\\\" ng-if=\\\"vm.collection.articleCollectionType === 1\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.duration }}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input name=\\\"selectedDuration\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.collection.duration\\\" enter-as-tab required /> \\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                {{'articlecollection.durationDescription' | translate}}\\n            </div>\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'articlecollection.currentBehaviour'\\\">\\n            <span ng-if=\\\"vm.collection.currentBehaviour === 0 && !vm.isEditing\\\">{{'articlecollection.currentBehaviourDoNotSetCurrent' | translate}}</span>\\n            <span ng-if=\\\"vm.collection.currentBehaviour === 1 && !vm.isEditing\\\">{{'articlecollection.currentBehaviourSetCurrent' | translate}}</span>\\n            <span ng-if=\\\"vm.collection.currentBehaviour === 2 && !vm.isEditing\\\">{{'articlecollection.currentBehaviourSetNotCurrent' | translate}}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.collection.selectedCurrentBehaviour\\\" choices=\\\"vm.currentBehaviours\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\"/>\\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                {{'articlecollection.currentBehaviourDescription1' | translate}}<br>\\n                <ul>\\n                    <li>{{'articlecollection.currentBehaviourDescription2' | translate}}</li>\\n                    <li>{{'articlecollection.currentBehaviourDescription3' | translate}}</li>\\n                    <li>{{'articlecollection.currentBehaviourDescription4' | translate}}</li>\\n                </ul>\\n            </div>\\n        </ca-form-group-row>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\"\\n                    ng-click=\\\"$state.go('base.articlecollections.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\"\\n                ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\"\\n                placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.articlecollections.articlecollection', {collectionId: collection.id})\\\"\\n                            class=\\\"list-group-item m-l\\\" ng-repeat=\\\"collection in vm.collections\\\"\\n                            ng-class=\\\"{'focus': collection.id === vm.selectedCollectionId}\\\">\\n                            <div class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis\\\"\\n                                    style=\\\"font-weight: bold;\\\">{{collection.collectionCode}} -\\n                                    {{collection.collectionDescription}}</span>\\n                                <div style=\\\"clear: both; height: 1px;\\\">&nbsp;</div>\\n                            </div>\\n                            <div>\\n                                <span class=\\\"pull-left text-ellipsis\\\">\\n                                    {{ vm.getFullDate(collection.fromDate) }} - {{ vm.getFullDate(collection.toDate) }}\\n                                </span>\\n                                <span class=\\\"pull-right text-ellipsis\\\"\\n                                    ng-if=\\\"collection.isCurrent\\\">{{'articlecollection.isCurrent' | translate}}</span>\\n                                <div style=\\\"clear: both; height: 1px;\\\">&nbsp;</div>\\n                            </div>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<form name=\\\"articleTypeForm\\\" ng-submit=\\\"vm.save()\\\">\\n    <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-heading font-bold\\\">\\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n            <button class=\\\"btn btn-primary\\\" type=\\\"submit\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"articleTypeForm.$invalid\\\"> {{'common.save' | translate}}  </button>\\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNew\\\"> {{'common.cancel' | translate}} </button>\\n            <!-- <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.delete()\\\" ng-if=\\\"!vm.isNew\\\"> {{'common.delete' | translate}} </button> -->\\n            <span> &nbsp;{{vm.articleType.name}}</span>\\n        </div>\\n        <div class=\\\"panel-body\\\">\\n            <ca-form-group-row label=\\\"'article.articleTypeName'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.articleType.articleTypeName }}</span>\\n                <div ng-class=\\\"{'has-error': articleTypeForm.articleTypeName.$invalid && articleTypeForm.articleTypeName.$touched}\\\">\\n                    <input name=\\\"articleTypeName\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.articleType.articleTypeName\\\" enter-as-tab required />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"articleTypeForm.articleTypeName.$invalid && articleTypeForm.articleTypeName.$touched\\\">{{'common.required' | translate}}</span>\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'article.articleSystemType'\\\">\\n                <span>{{ vm.articleType.articleSystemType }}</span>\\n                <!-- <div ng-class=\\\"{'has-error': articleTypeForm.articleSystemType.$invalid && articleTypeForm.articleSystemType.$touched}\\\"> -->\\n                    <!-- <input name=\\\"articleSystemType\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.articleType.type\\\" enter-as-tab required /> -->\\n                    <!-- <span class=\\\"help-block\\\" ng-show=\\\"articleTypeForm.articleSystemType.$invalid && articleTypeForm.articleSystemType.$touched\\\">{{'common.required' | translate}}</span> -->\\n                <!-- </div> -->\\n            </ca-form-group-row>\\n        </div>\\n    </div>\\n</form>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <!-- <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.articleTypes.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span> -->\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChanged()\\\"\\n                   placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.articletypes.articletype', {articleTypeId: articleType.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"articleType in vm.articleTypes\\\" ng-class=\\\"{'focus m-l-none': articleType.id === vm.selectedArticleTypeId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': articleType.id === vm.selectedArticleTypeId }\\\">\\n                                <span class=\\\"text-ellipsis lg-label\\\">{{articleType.articleTypeName}}</span> <span class=\\\"text-ellipsis lg-label\\\">{{articleType.articleSystemType}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n    <div class=\\\"col w-xl lter b-r\\\" ui-view=\\\"baseList\\\"></div>\\n    \\n    <div class=\\\"col w-xxl bg-white-only\\\" ui-view=\\\"baseView\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.countries.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.countries.country', {countryId: country.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"country in vm.countries\\\" ng-class=\\\"{'focus m-l-none': country.id === vm.selectedCountryId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': country.id === vm.selectedCountryId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{country.name}}</span>\\n                                <span class=\\\"pull-right text-ellipsis lg-label\\\">{{country.code}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveCountry()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewCountry\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteCountry()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewCountry\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <uib-tabset active=\\\"active\\\">\\n            <uib-tab index=\\\"0\\\" heading=\\\"{{ 'role.country' | translate }}\\\">\\n                <ca-form-group-row label=\\\"'country.name'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <label>{{vm.country.name}}</label>\\n                    </div>            \\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.country.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n                    </div>            \\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'country.code'\\\">\\n                    <div ng-if=\\\"!vm.isNewCountry && !vm.isEditing\\\">\\n                        <label>{{vm.country.code}}</label>\\n                    </div>            \\n                    <div ng-if=\\\"vm.isNewCountry || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isCountryCodeValid()}\\\">\\n                        <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"code\\\" ng-model=\\\"vm.country.code\\\" maxlength=\\\"3\\\" uppercase enter-as-tab />\\n                    </div>            \\n                </ca-form-group-row>\\n            </uib-tab>\\n            <uib-tab index=\\\"1\\\" heading=\\\"{{ 'country.vat' | translate }}\\\">\\n                    <table class=\\\"table\\\">\\n                        <tbody>\\n                            <tr ng-repeat=\\\"countryVat in vm.country.vats | orderBy: 'vat.vatCode'\\\">\\n                                <td style=\\\"width: 300px\\\">\\n                                    {{countryVat.vat.vatCode}} {{countryVat.vat.vatName}}\\n                                </td>\\n                                <td>\\n                                    <div ng-if=\\\"!vm.isEditing\\\">{{countryVat.vatRate | number}}</div>\\n                                    <div ng-if=\\\"vm.isEditing\\\">\\n                                        <input type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"countryVat.vatRate\\\" enter-as-tab />\\n                                    </div>\\n                                </td>\\n                            </tr>\\n                        </tbody>\\n                    </table>        \\n            </uib-tab>\\n        </uib-tabset>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.currencies.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChanged()\\\"\\n                   placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.currencies.currency', {currencyId: currency.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"currency in vm.currencies\\\" ng-class=\\\"{'focus m-l-none': currency.id === vm.selectedCurrencyId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': currency.id === vm.selectedCurrencyId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{currency.code}}</span><span class=\\\"text-ellipsis lg-label\\\">{{currency.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<form name=\\\"currencyForm\\\" ng-submit=\\\"vm.save()\\\">\\n    <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-heading font-bold\\\">\\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n            <button class=\\\"btn btn-primary\\\" type=\\\"submit\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"currencyForm.$invalid\\\"> {{'common.save' | translate}}  </button>\\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNew\\\"> {{'common.cancel' | translate}} </button>\\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.delete()\\\" ng-if=\\\"!vm.isNew\\\"> {{'common.delete' | translate}} </button>\\n            <span> &nbsp;{{vm.currency.code + \\\" \\\" + vm.currency.name}}</span>\\n        </div>\\n        <div class=\\\"panel-body\\\">\\n            <ca-form-group-row label=\\\"'currency.code'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.currency.code }}</span>\\n                <div ng-class=\\\"{'has-error': currencyForm.currencyCode.$invalid && currencyForm.currencyCode.$touched}\\\">\\n                    <input name=\\\"currencyCode\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.currency.code\\\" enter-as-tab required />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"currencyForm.currencyCode.$invalid && currencyForm.currencyCode.$touched\\\">{{'common.required' | translate}}</span>\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'currency.name'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.currency.name }}</span>\\n                <div ng-class=\\\"{'has-error': currencyForm.currencyName.$invalid && currencyForm.currencyName.$touched}\\\">\\n                    <input name=\\\"currencyName\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.currency.name\\\" enter-as-tab required />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"currencyForm.currencyName.$invalid && currencyForm.currencyName.$touched\\\">{{'common.required' | translate}}</span>\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'currency.number'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.currency.number }}</span>\\n                <div ng-class=\\\"{'has-error': currencyForm.currencyNumber.$invalid && currencyForm.currencyNumber.$touched}\\\">\\n                    <input name=\\\"currencyNumber\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" minlength=\\\"3\\\" maxlength=\\\"3\\\" oninput=\\\"this.value=this.value.replace(/[^0-9]/g,'');\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.currency.number\\\" placeholder=\\\"000\\\" enter-as-tab required />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"currencyForm.currencyNumber.$invalid && currencyForm.currencyNumber.$touched\\\">{{'common.required' | translate}} 3{{'common.piecesAbbr' | translate}} </span>\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'currency.currencyRate'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.currency.currencyRate | number }}</span>\\n                <div ng-class=\\\"{'has-error': currencyForm.currencyRate.$invalid && currencyForm.currencyRate.$touched}\\\">\\n                    <input name=\\\"currencyRate\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" step=\\\"any\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.currency.currencyRate\\\" enter-as-tab required />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"currencyForm.currencyRate.$invalid && currencyForm.currencyRate.$touched\\\">{{'common.required' | translate}}</span>\\n                </div>\\n            </ca-form-group-row>  \\n            <ca-form-group-row\\\" >\\n                <div style=\\\"padding-top: 15px;\\\" >\\n                    <a style=\\\"font-size: 20px; \\\" class=\\\"ca-celllink\\\" href=\\\"https://sv.wikipedia.org/wiki/ISO_4217\\\" target=\\\"_blank\\\">{{'role.currency' | translate}} <span style=\\\"text-transform: lowercase;\\\">{{'currency.code' | translate}}/{{'currency.number' | translate}} {{'common.information' | translate}}:</span> ISO 4217</a>\\n                </div>\\n            </ca-form-group-row>                      \\n        </div>\\n    </div>\\n</form>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveCustomerGroup()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewCustomerGroup\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteCustomerGroup()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewCustomerGroup\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'customergroup.code'\\\">\\n            <div ng-if=\\\"!vm.isNewCustomerGroup && !vm.isEditing\\\">\\n                <label>{{vm.customergroup.code}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewCustomerGroup || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isCustomerGroupCodeValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"code\\\" ng-model=\\\"vm.customergroup.code\\\" maxlength=\\\"20\\\" uppercase enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'customergroup.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.customergroup.name}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.customergroup.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.customergroups.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.customergroups.customergroup', {customergroupId: customergroup.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"customergroup in vm.customergroups\\\" ng-class=\\\"{'focus m-l-none': customergroup.id === vm.selectedCustomerGroupId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': customergroup.id === vm.selectedCustomerGroupId }\\\">\\n                                <span class=\\\"sm-label\\\">{{customergroup.code}} {{customergroup.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"row\\\" style=\\\"padding: 0 20px;\\\">\\n    <dashboard></dashboard>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveDeliveryPlanningTemplate()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewDeliveryPlanningTemplate\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <!--<ca-form-group-row label=\\\"'deliveryplanningtemplates.deliveryPlanningTemplateName'\\\">-->\\n        <ca-form-group-row label=\\\"'Mall benämning'\\\">\\n            <div>\\n                <label>{{vm.deliveryplanningtemplate.deliveryPlanningTemplateName}}</label>\\n            </div>\\n        </ca-form-group-row>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.deliveryplanningtemplates.deliveryplanningtemplate', {deliveryplanningtemplateId: deliveryplanningtemplate.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"deliveryplanningtemplate in vm.deliveryplanningtemplates\\\" ng-class=\\\"{'focus m-l-none': deliveryplanningtemplate.id === vm.selectedDeliveryPlanningTemplateId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': deliveryplanningtemplate.id === vm.selectedDeliveryPlanningTemplateId }\\\">\\n                                <span class=\\\"sm-label\\\">{{deliveryplanningtemplate.deliveryPlanningTemplateName}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveDeliveryTerm()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewDeliveryTerm\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteDeliveryTerm()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewDeliveryTerm\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'deliveryterm.code'\\\">\\n            <div ng-if=\\\"!vm.isNewDeliveryTerm && !vm.isEditing\\\">\\n                <label>{{vm.deliveryterm.code}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewDeliveryTerm || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isDeliveryTermCodeValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"code\\\" ng-model=\\\"vm.deliveryterm.code\\\" maxlength=\\\"20\\\" uppercase enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'deliveryterm.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.deliveryterm.name}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.deliveryterm.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'deliveryterm.leadTimeInDays'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.deliveryterm.leadTimeInDays}}</label>\\n            </div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.deliveryterm.leadTimeInDays\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <hr>\\n        <table class=\\\"table\\\">\\n            <thead>\\n                <tr>\\n                    <th>\\n                        {{ 'common.language' | translate}}\\n                    </th>\\n                    <th>\\n                        {{ 'deliveryterm.name' | translate}}\\n                    </th>\\n                </tr>\\n            </thead>\\n            <tbody>\\n                <tr ng-repeat=\\\"localization in vm.deliveryterm.localizations | orderBy: 'language.name'\\\">\\n                    <td style=\\\"width: 150px\\\">\\n                        {{localization.language.name}}\\n                    </td>\\n                    <td>\\n                        <div ng-if=\\\"!vm.isEditing\\\">{{localization.name}}</div>\\n                        <div ng-if=\\\"vm.isEditing\\\">\\n                            <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"localization.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n                        </div>\\n                    </td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.deliveryterms.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.deliveryterms.deliveryterm', {deliverytermId: deliveryterm.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"deliveryterm in vm.deliveryterms\\\" ng-class=\\\"{'focus m-l-none': deliveryterm.id === vm.selectedDeliveryTermId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': deliveryterm.id === vm.selectedDeliveryTermId }\\\">\\n                                <span class=\\\"sm-label\\\">{{deliveryterm.code}} {{deliveryterm.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveInvoiceType()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewInvoiceType\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n        <ca-form-group-row label=\\\"'invoicetype.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.invoicetype.name}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.invoicetype.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'invoicetype.printDocumentTemplate'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.invoicetype.printDocumentTemplate.description}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.invoicetype.printDocumentTemplate\\\" choices=\\\"vm.printDocumentTemplates\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\"/>\\n            </div>\\n        </ca-form-group-row>        \\n        <hr>\\n        <table class=\\\"table\\\">\\n            <thead>\\n                <tr>\\n                    <th>\\n                        {{ 'common.language' | translate}}\\n                    </th>\\n                    <th>\\n                        {{ 'invoicetype.name' | translate}}\\n                    </th>\\n                </tr>\\n            </thead>\\n            <tbody>\\n                <tr ng-repeat=\\\"localization in vm.invoicetype.localizations | orderBy: 'language.name'\\\">\\n                    <td style=\\\"width: 150px\\\">\\n                        {{localization.language.name}}\\n                    </td>\\n                    <td>\\n                        <div ng-if=\\\"!vm.isEditing\\\">{{localization.name}}</div>\\n                        <div ng-if=\\\"vm.isEditing\\\">\\n                            <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"localization.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n                        </div>\\n                    </td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.invoicetypes.invoicetype', {invoicetypeId: invoicetype.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"invoicetype in vm.invoicetypes\\\" ng-class=\\\"{'focus m-l-none': invoicetype.id === vm.selectedInvoiceTypeId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': invoicetype.id === vm.selectedInvoiceTypeId }\\\">\\n                                <span class=\\\"sm-label\\\">{{invoicetype.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveCollection()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewCollection\\\"> {{'common.cancel' | translate}} </button>\\n        <span> &nbsp;{{vm.collection.collectionCode + \\\" \\\" + vm.collection.collectionDescription}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'articlecollection.code'\\\">\\n            <span ng-if=\\\"!vm.isNewCollection\\\">{{ vm.collection.collectionCode }}</span>\\n            <div>\\n                <input id=\\\"collectionCode\\\" name=\\\"collectionCode\\\" ng-if=\\\"vm.isEditing && vm.isNewCollection\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.collection.collectionCode\\\" enter-as-tab required /> \\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.description'\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.collectionDescription }}</span>\\n            <div>\\n                <input name=\\\"collectionDescription\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.collection.collectionDescription\\\" enter-as-tab required /> \\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.isDefaultCollection'\\\" ng-if=\\\"!vm.isNewCollection\\\">\\n            <div>\\n                <input type=\\\"checkbox\\\" name=\\\"isDefaultCollection\\\" ng-model=\\\"vm.collection.isDefaultCollection\\\" ng-disabled=\\\"true\\\" />\\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                {{'articlecollection.isCurrentDescription' | translate}}\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.articleCollectionType'\\\">\\n            <span ng-if=\\\"!vm.isNewCollection && vm.collection.articleCollectionType === 0\\\">{{'articlecollection.articleCollectionTypeStatic' | translate}}</span>\\n            <span ng-if=\\\"!vm.isNewCollection && vm.collection.articleCollectionType === 1\\\">{{'articlecollection.articleCollectionTypeRolling' | translate}}</span>\\n            <div ng-if=\\\"vm.isNewCollection && vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.collection.selectedArticleCollectionType\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\"/>\\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                <ul>\\n                    <li>{{'articlecollection.articleCollectionTypeDescription1' | translate}}</li>\\n                    <li>{{'articlecollection.articleCollectionTypeDescription2' | translate}}</li>\\n                </ul>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <!-- Only if static collection type -->\\n        <ca-form-group-row label=\\\"'articlecollection.fromDate'\\\" ng-if=\\\"vm.collection.articleCollectionType === 0\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.fromDate | date:'yyyy-MM-dd' }}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <wj-input-date\\n                    value=\\\"vm.collection.fromDate\\\"\\n                    format=\\\"yyyy-MM-dd\\\"\\n                    style=\\\"width:100%\\\">\\n                </wj-input-date>\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.toDate'\\\" ng-if=\\\"vm.collection.articleCollectionType === 0\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.toDate | date:'yyyy-MM-dd' }}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <wj-input-date\\n                    value=\\\"vm.collection.toDate\\\"\\n                    format=\\\"yyyy-MM-dd\\\"\\n                    style=\\\"width:100%\\\">\\n                </wj-input-date>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <!-- Only if rolling collection type -->\\n        <ca-form-group-row label=\\\"'articlecollection.offset'\\\" ng-if=\\\"vm.collection.articleCollectionType === 1\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.offset }}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input name=\\\"selectedOffset\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.collection.offset\\\" enter-as-tab required /> \\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                {{'articlecollection.offsetDescription' | translate}}\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'articlecollection.duration'\\\" ng-if=\\\"vm.collection.articleCollectionType === 1\\\">\\n            <span ng-if=\\\"!vm.isEditing\\\">{{ vm.collection.duration }}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input name=\\\"selectedDuration\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.collection.duration\\\" enter-as-tab required /> \\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                {{'articlecollection.durationDescription' | translate}}\\n            </div>\\n        </ca-form-group-row>\\n\\n\\n        <ca-form-group-row label=\\\"'articlecollection.currentBehaviour'\\\">\\n            <span ng-if=\\\"vm.collection.currentBehaviour === 0 && !vm.isEditing\\\">{{'articlecollection.currentBehaviourDoNotSetCurrent' | translate}}</span>\\n            <span ng-if=\\\"vm.collection.currentBehaviour === 1 && !vm.isEditing\\\">{{'articlecollection.currentBehaviourSetCurrent' | translate}}</span>\\n            <span ng-if=\\\"vm.collection.currentBehaviour === 2 && !vm.isEditing\\\">{{'articlecollection.currentBehaviourSetNotCurrent' | translate}}</span>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.collection.selectedCurrentBehaviour\\\" choices=\\\"vm.currentBehaviours\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\"/>\\n            </div>\\n            <div style=\\\"font-style: italic; font-size:0.8em; padding-left:15px;\\\">\\n                {{'articlecollection.currentBehaviourDescription1' | translate}}<br>\\n                <ul>\\n                    <li>{{'articlecollection.currentBehaviourDescription2' | translate}}</li>\\n                    <li>{{'articlecollection.currentBehaviourDescription3' | translate}}</li>\\n                    <li>{{'articlecollection.currentBehaviourDescription4' | translate}}</li>\\n                </ul>\\n            </div>\\n        </ca-form-group-row>\\n        \\n        <ca-form-group-row label=\\\"'base.currencies'\\\" style=\\\"margin-top:30px;\\\">\\n            <table class=\\\"table\\\">\\n                <thead>\\n                    <th>{{'currency.code' | translate }}:</th>\\n                    <th>{{'currency.name' | translate }}:</th>\\n                    <th>{{'currency.currencyRate' | translate }}:</th>\\n                </thead>\\n                <tbody>\\n                    <tr ng-repeat=\\\"setting in vm.collection.currencySettings\\\">\\n                        <td>{{setting.currency.code}}</td>\\n                        <td>{{setting.currency.name}}</td>\\n                        <td>\\n                            <span ng-if=\\\"!vm.isEditing\\\">{{setting.currencyRate | number}}</span>\\n                            <input ng-if=\\\"vm.isEditing\\\" name=\\\"currencyRate\\\" type=\\\"number\\\" step=\\\"0.01\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"setting.currencyRate\\\" enter-as-tab required />\\n                        </td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </ca-form-group-row>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.ordercollections.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.ordercollections.ordercollection', {collectionId: collection.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"collection in vm.collections\\\" ng-class=\\\"{'focus m-l-none': collection.id === vm.selectedCollectionId}\\\">\\n                            <div class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': collection.id === vm.selectedCollectionId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis\\\" style=\\\"font-weight: bold;\\\">{{collection.collectionCode}} - {{collection.collectionDescription}}</span>\\n                                <div style=\\\"clear: both; height: 1px;\\\">&nbsp;</div>\\n                            </div>\\n                            <div>\\n                                <span class=\\\"pull-left text-ellipsis\\\">\\n                                    {{ vm.getFullDate(collection.fromDate) }} - {{ vm.getFullDate(collection.toDate) }}\\n                                </span>\\n                                <span class=\\\"pull-right text-ellipsis\\\" ng-if=\\\"collection.isCurrent\\\">{{'articlecollection.isCurrent' | translate}}</span>\\n                                <div style=\\\"clear: both; height: 1px;\\\">&nbsp;</div>\\n                            </div>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveOrderType()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewOrderType\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'ordertype.orderTypeName'\\\">\\n            <div>\\n                <label>{{vm.ordertype.orderTypeName | translate}}</label>\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'ordertype.printDocumentTemplate'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.ordertype.printDocumentTemplate.description}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.ordertype.printDocumentTemplate\\\" choices=\\\"vm.printDocumentTemplates\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\"/>\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'ordertype.pickingListDocumentTemplate'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.ordertype.pickingListDocumentTemplate.description}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.ordertype.pickingListDocumentTemplate\\\" choices=\\\"vm.printDocumentTemplates\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\"/>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row ng-if=\\\"vm.enableDeliveryPlanning\\\" label=\\\"'ordertype.deliveryPlanningTemplate'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.deliveryPlanningTemplate.deliveryPlanningTemplateName}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.deliveryPlanningTemplate\\\" choices=\\\"vm.getDeliveryPlanningTemplates.deliveryPlanningTemplates\\\" order-by=\\\"'deliveryPlanningTemplateName'\\\" item-renderer=\\\"'deliveryPlanningTemplateName'\\\"/>\\n            </div>\\n        </ca-form-group-row>  \\n            \\n        <hr>\\n        <table class=\\\"table\\\">\\n            <thead>\\n                <tr>\\n                    <th>\\n                        {{ 'common.language' | translate}}\\n                    </th>\\n                    <th>\\n                        {{ 'ordertype.orderTypeName' | translate}}\\n                    </th>\\n                </tr>\\n            </thead>\\n            <tbody>\\n                <tr ng-repeat=\\\"localization in vm.ordertype.localizations | orderBy: 'language.name'\\\">\\n                    <td style=\\\"width: 150px\\\">\\n                        {{localization.language.name}}\\n                    </td>\\n                    <td>\\n                        <div ng-if=\\\"!vm.isEditing\\\">{{localization.name}}</div>\\n                        <div ng-if=\\\"vm.isEditing\\\">\\n                            <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"localization.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n                        </div>\\n                    </td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.ordertypes.ordertype', {ordertypeId: ordertype.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"ordertype in vm.ordertypes\\\" ng-class=\\\"{'focus m-l-none': ordertype.id === vm.selectedOrderTypeId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': ordertype.id === vm.selectedOrderTypeId }\\\">\\n                                <span class=\\\"sm-label\\\">{{ordertype.orderTypeName | translate}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.savePaymentTerm()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewPaymentTerm\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deletePaymentTerm()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewPaymentTerm\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'paymentterm.code'\\\">\\n            <div ng-if=\\\"!vm.isNewPaymentTerm && !vm.isEditing\\\">\\n                <label>{{vm.paymentterm.code}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewPaymentTerm || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isPaymentTermCodeValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"code\\\" ng-model=\\\"vm.paymentterm.code\\\" maxlength=\\\"20\\\" uppercase enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'paymentterm.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.paymentterm.name}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.paymentterm.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <hr>\\n        <table class=\\\"table\\\">\\n            <thead>\\n                <tr>\\n                    <th>\\n                        {{ 'common.language' | translate}}\\n                    </th>\\n                    <th>\\n                        {{ 'paymentterm.name' | translate}}\\n                    </th>\\n                </tr>\\n            </thead>\\n            <tbody>\\n                <tr ng-repeat=\\\"localization in vm.paymentterm.localizations | orderBy: 'language.name'\\\">\\n                    <td style=\\\"width: 150px\\\">\\n                        {{localization.language.name}}\\n                    </td>\\n                    <td>\\n                        <div ng-if=\\\"!vm.isEditing\\\">{{localization.name}}</div>\\n                        <div ng-if=\\\"vm.isEditing\\\">\\n                            <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"localization.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n                        </div>\\n                    </td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.paymentterms.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.paymentterms.paymentterm', {paymenttermId: paymentterm.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"paymentterm in vm.paymentterms\\\" ng-class=\\\"{'focus m-l-none': paymentterm.id === vm.selectedPaymentTermId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': paymentterm.id === vm.selectedPaymentTermId }\\\">\\n                                <span class=\\\"sm-label\\\">{{paymentterm.code}} {{paymentterm.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.savePaymentType()\\\" ng-if=\\\"vm.isEditing\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewPaymentType\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'paymenttype.paymenttypecode'\\\">\\n            <div>\\n                <label>{{vm.paymentType.paymentTransactionCode}}</label>\\n            </div>                      \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'paymenttype.paymenttypename'\\\">\\n            <div>\\n                <label>{{vm.paymentType.paymentTransactionTypeName}}</label>\\n            </div>                    \\n        </ca-form-group-row>    \\n        <ca-form-group-row label=\\\"'paymenttype.account'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.paymentType.account.accountNumber}} {{vm.paymentType.account.accountName}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.paymentType.account\\\" choices=\\\"vm.accounts\\\" order-by=\\\"'accountNumber'\\\" item-renderer=\\\"['accountNumber','accountName']\\\" />\\n            </div>\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.paymenttypes.paymenttype', {paymentTypeId: paymentType.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"paymentType in vm.paymentTypes\\\" ng-class=\\\"{'focus m-l-none': paymentType.id === vm.selectedPaymentType}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': paymentType.id === vm.selectedPaymentType }\\\">\\n                                <span class=\\\"text-muted\\\"></span> <span class=\\\"sm-label\\\">{{paymentType.paymentTransactionTypeName}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveReturnReason()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewReturnReason\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteReturnReason()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewReturnReason\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'returnreason.code'\\\">\\n            <div ng-if=\\\"!vm.isNewReturnReason && !vm.isEditing\\\">\\n                <label>{{vm.returnreason.code}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewReturnReason || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isReturnReasonCodeValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"code\\\" ng-model=\\\"vm.returnreason.code\\\" maxlength=\\\"20\\\" uppercase enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'returnreason.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.returnreason.name}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.returnreason.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'returnreason.adjustStock'\\\">\\n                <input type=\\\"checkbox\\\" name=\\\"adjustStock\\\" ng-model=\\\"vm.returnreason.adjustStock\\\" enter-as-tab ng-disabled=\\\"!vm.isEditing\\\" class=\\\"enterAsTab\\\" />\\n        </ca-form-group-row>\\n       \\n        <ca-form-group-row label=\\\"'returnreason.location'\\\" ng-show=\\\"vm.returnreason.adjustStock\\\" ng-if=\\\"vm.featureStockLocationEnabled\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.location.locationName}}</label>\\n            </div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <span style=\\\"display:inline-block;\\\">\\n                    <ui-select ng-model=\\\"vm.location\\\" theme=\\\"bootstrap\\\" ng-change=\\\"vm.getStockLocations()\\\"\\n                        class=\\\" enterAsTab\\\" enter-as-tab>\\n                        <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\n                        <ui-select-choices repeat=\\\"location in vm.locations\\\">\\n                            <span>{{location.locationName}}</span>\\n                        </ui-select-choices>\\n                    </ui-select>\\n                </span>\\n            </div>\\n        </ca-form-group-row>\\n        \\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.returnreasons.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.returnreasons.returnreason', {returnreasonId: returnreason.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"returnreason in vm.returnreasons\\\" ng-class=\\\"{'focus m-l-none': returnreason.id === vm.selectedReturnReasonId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': returnreason.id === vm.selectedReturnReasonId }\\\">\\n                                <span class=\\\"sm-label\\\">{{returnreason.code}} {{returnreason.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveShippingMethod()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewShippingMethod\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteShippingMethod()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewShippingMethod\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'shippingmethod.code'\\\">\\n            <div ng-if=\\\"!vm.isNewShippingMethod && !vm.isEditing\\\">\\n                <label>{{vm.shippingmethod.code}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewShippingMethod || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isShippingMethodCodeValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"code\\\" ng-model=\\\"vm.shippingmethod.code\\\" maxlength=\\\"20\\\" uppercase enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'shippingmethod.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.shippingmethod.name}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.shippingmethod.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <hr>\\n        <table class=\\\"table\\\">\\n            <thead>\\n                <tr>\\n                    <th>\\n                        {{ 'common.language' | translate}}\\n                    </th>\\n                    <th>\\n                        {{ 'shippingmethod.name' | translate}}\\n                    </th>\\n                </tr>\\n            </thead>\\n            <tbody>\\n                <tr ng-repeat=\\\"localization in vm.shippingmethod.localizations | orderBy: 'language.name'\\\">\\n                    <td style=\\\"width: 150px\\\">\\n                        {{localization.language.name}}\\n                    </td>\\n                    <td>\\n                        <div ng-if=\\\"!vm.isEditing\\\">{{localization.name}}</div>\\n                        <div ng-if=\\\"vm.isEditing\\\">\\n                            <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"localization.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n                        </div>\\n                    </td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.shippingmethods.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.shippingmethods.shippingmethod', {shippingmethodId: shippingmethod.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"shippingmethod in vm.shippingmethods\\\" ng-class=\\\"{'focus m-l-none': shippingmethod.id === vm.selectedShippingMethodId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': shippingmethod.id === vm.selectedShippingMethodId }\\\">\\n                                <span class=\\\"sm-label\\\">{{shippingmethod.code}} {{shippingmethod.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveVat()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewVat\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteVat()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewVat\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'vat.vatCode'\\\">\\n            <div ng-if=\\\"!vm.isNewVat && !vm.isEditing\\\">\\n                <label>{{vm.vat.vatCode}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewVat || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isVatCodeValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"vatCode\\\" ng-model=\\\"vm.vat.vatCode\\\" maxlength=\\\"20\\\" uppercase enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'vat.vatName'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.vat.vatName}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"vatName\\\" ng-model=\\\"vm.vat.vatName\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'vat.vatRate'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.vat.vatRate * 100 | number}} %</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"number\\\" step=\\\"any\\\" class=\\\"form-control enterAsTab\\\" name=\\\"vatRate\\\" ng-model=\\\"vm.vat.vatRate\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>        \\n        <ca-form-group-row label=\\\"'vat.account'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.vat.account.accountNumber}} {{vm.vat.account.accountName}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.vat.account\\\" choices=\\\"vm.accounts\\\" order-by=\\\"'accountNumber'\\\" item-renderer=\\\"['accountNumber','accountName']\\\" />\\n            </div>\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('base.vats.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('base.vats.vat', {vatId: vat.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"vat in vm.vats | orderBy: 'vatNumber'\\\" ng-class=\\\"{'focus m-l-none': vat.id === vm.selectedVatId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': vat.id === vm.selectedVatId }\\\">\\n                                <span class=\\\"text-muted\\\">{{vat.vatCode}}</span> <span class=\\\"sm-label\\\">{{vat.vatName}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n\\n    <div ui-view=\\\"\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"invoiceSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\" style=\\\"max-width: 1178px;\\\">\\n                            \\n                    <ca-budget-import disabled-by=\\\"\\\" on-budget-imported=\\\"vm.onBudgetImported(budgets)\\\"></ca-budget-import>\\n\\n                    <div class=\\\"input-group m-b-xxs list-menu\\\" style=\\\"max-width: 1178px; margin-top:20px;\\\"> \\n                        <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                        <input type=\\\"text\\\" class=\\\"form-control input-sm b-b no-bg text-md\\\" ng-model=\\\"vm.filter\\\"\\n                            ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.loadBudgets()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n                    </div>\\n\\n\\n                    <div class=\\\"wrapper text-center\\\">\\n                            <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\"\\n                            items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadBudgets()\\\"\\n                            ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\"\\n                            next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n                        </div>\\n                    <div class=\\\"col-lg-12\\\">\\n                            <table class=\\\"table table-hover\\\">\\n                                <thead>\\n                                    <th>{{'budget.location' | translate}}</th>\\n                                    <th>{{'budget.collection.description' | translate}}</th>\\n                                    <th>{{'budget.salesAmount' | translate}}</th>\\n                                    <th>{{'budget.quantity' | translate}}</th>\\n                                    <th>{{'budget.startdate' | translate}}</th>\\n                                    <th>{{'budget.enddate' | translate}}</th>\\n                                </thead>\\n                                <tbody>\\n                                    <tr ng-repeat=\\\"budget in vm.budgets\\\">\\n                                        <td>{{ budget.location.locationNumber }} {{ budget.location.locationName }}</td>\\n                                        <td>{{ budget.collection.collectionCode}}</td>\\n                                        <td>{{ budget.salesAmount }}</td>\\n                                        <td>{{ budget.quantity }}</td>\\n                                        <td style=\\\"min-width: 7em;\\\">{{ budget.startDate.split('T')[0] }}</td>\\n                                        <td style=\\\"min-width: 7em;\\\">{{ budget.endDate.split('T')[0] }}</td>\\n                                    </tr>\\n                                </tbody>\\n                            </table>\\n                        </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\n<label class=\\\"btn btn-default btn-file\\\">\\n        {{'stock.readfile' | translate}} <input class=\\\"\\\" id=\\\"xlf\\\" type=\\\"file\\\" ng-model=\\\"file\\\" style=\\\"display: none;\\\">      \\n</label>        \\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-2\\\">\\n                        <ui-select ng-model=\\\"vm.dataSourceChoice\\\" theme=\\\"bootstrap\\\">\\n                            <ui-select-match placeholder=\\\"\\\">{{$select.selected.translationKey | translate}}</ui-select-match>\\n                            <ui-select-choices repeat=\\\"dataSourceChoice in vm.dataSourceChoices\\\">\\n                                <span>{{dataSourceChoice.translationKey | translate}}</span>\\n                            </ui-select-choices>\\n                        </ui-select>\\n                    </div>\\n\\n                    <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveData()\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n                    <div class=\\\"col-lg-2\\\">\\n                        <input type=\\\"search\\\" class=\\\"form-control input-sm no-border no-bg text-md b-b b-t b-l b-r\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChanged()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.selectAll()\\\"> {{'common.all' | translate}} </button>\\n                        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.selectNone()\\\"> {{'common.none' | translate}} </button>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <wj-flex-grid selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" is-read-only=\\\"false\\\" class=\\\"orders-flex-grid\\\"\\n                                      initialized=\\\"vm.captureGrid(s)\\\" style=\\\"width: auto\\\" allow-merging=\\\"All\\\">\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('contacts.companies.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"search\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"vm.goToCompany(company)\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"company in vm.companies | orderBy:'companyName'\\\" ng-class=\\\"{'focus m-l-none': company.id === vm.selectedCompanyId}\\\">\\n                            <div class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': company.id === vm.selectedCompanyId }\\\">\\n                                <div class=\\\"text-ellipsis lg-label\\\">{{company.companyName}}</div>\\n                                <div ng-if=\\\"company.primaryPurchaser\\\" class=\\\"ca-searchlist-detail\\\"> \\n                                    <span tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{company.primaryPurchaser.firstName + ' ' + company.primaryPurchaser.lastName}}\\\" class=\\\"ca-searchlist-detail-label\\\">{{'company.primaryPurchaser' | translate}} </span>\\n                                    <span >{{company.primaryPurchaser.firstName + ' ' + company.primaryPurchaser.lastName}}</span>\\n                                </div>\\n                                <ca-search-list-contact-infos contact-infos=\\\"company.contactInfos\\\"></ca-search-list-contact-infos>\\n                            </div>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .has-error {\\n        border-color: #a94442;\\n    }\\n</style>\\n<form name=\\\"companyForm\\\" ng-submit=\\\"vm.save()\\\">\\n    <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-heading font-bold\\\">\\n            <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"vm.startEdit()\\\" ng-show=\\\"!vm.isEditing\\\" ng-disabled=\\\"!vm.canAccess('company', 'update')\\\"> {{'common.edit' | translate}} </button>\\n            <button class=\\\"btn btn-primary\\\" type=\\\"submit\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.allInformationIsValid()\\\"> {{'common.save' | translate}}  </button>\\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.cancelEdit()\\\" ng-show=\\\"!vm.isNewCompany && vm.isEditing\\\"> {{'common.cancel' | translate}} </button>\\n            <span style=\\\"margin-left:20px;\\\">{{vm.company.companyName}}</span>\\n        </div>\\n\\n        <div class=\\\"panel-body\\\">\\n            <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.validationErrors.length > 0\\\">\\n                <ul>\\n                    <li ng-repeat=\\\"error in vm.validationErrors\\\">{{::error.message}}</li>\\n                </ul>\\n            </div>\\n            <div class=\\\"editableForm\\\">\\n                <ca-form-group-row label=\\\"'company.companyname'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.companyName }}</span>\\n                    <input ng-show=\\\"vm.isEditing\\\" name=\\\"companyname\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-class=\\\"{'has-error': !vm.hasCompanyName() }\\\" ng-model=\\\"vm.company.companyName\\\" enter-as-tab>\\n                </ca-form-group-row>  \\n                <ca-form-group-row label=\\\"'company.companytype'\\\">\\n                    <span ng-show=\\\"!vm.isNewCompany\\\" class=\\\"editable\\\">{{vm.company.companyType.companyTypeName }}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isNewCompany && vm.isEditing\\\" model=\\\"vm.company.companyType\\\" choices=\\\"vm.companyTypes\\\" mandatory=\\\"true\\\" order-by=\\\"'companyTypeName'\\\" item-renderer=\\\"['companyTypeName']\\\" ></span>\\n                </ca-form-group-row> \\n                <ca-form-group-row label=\\\"'resellerorder.resellerPriceList'\\\" ng-show=\\\"vm.company.companyType && vm.company.companyType.type === 'reseller'\\\">\\n                    <span ng-show=\\\"!vm.isNewCompany\\\" class=\\\"editable\\\">{{ vm.company.resellerPriceList.pricelistName }}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isEditing\\\" model=\\\"vm.company.resellerPriceList\\\" choices=\\\"vm.priceLists\\\" mandatory=\\\"true\\\" order-by=\\\"'pricelistName'\\\" item-renderer=\\\"['pricelistName']\\\" ng-class=\\\"{'has-error': !vm.hasResellerPriceList() }\\\" ></span>\\n                </ca-form-group-row>\\n                <div class=\\\"form-group row\\\" ng-show=\\\"vm.company.companyType && vm.company.companyType.type === 'reseller'\\\">\\n                    <label class=\\\"col-sm-4 \\\">{{'resellerorder.resellerPriority' | translate}}:</label>\\n                    <div class=\\\"col-sm-8\\\">\\n                        <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{ vm.company.selectedPriority.displayName }}</span>\\n                        <ui-select ng-model=\\\"vm.company.selectedPriority\\\" ng-show=\\\"vm.isEditing\\\" theme=\\\"bootstrap\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                            <ui-select-match placeholder=\\\"\\\">{{ $select.selected.displayName }}</ui-select-match>\\n                            <ui-select-choices repeat=\\\"prio in vm.resellerPriorities\\\">\\n                                <span>{{ prio.displayName }}</span>\\n                            </ui-select-choices>\\n                        </ui-select>\\n                    </div>\\n                </div>\\n                <ca-form-group-row label=\\\"'company.deliveryTerm'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.deliveryTerm.name}}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isEditing\\\" model=\\\"vm.company.deliveryTerm\\\" choices=\\\"vm.deliveryTerms\\\" order-by=\\\"'code'\\\" mandatory=\\\"true\\\" item-renderer=\\\"['name']\\\" ng-class=\\\"{'has-error': !vm.hasDeliveryTerm() }\\\" ></ca-singleselect>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'company.paymentTerm'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.paymentTerm.name}}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isEditing\\\" model=\\\"vm.company.paymentTerm\\\" choices=\\\"vm.paymentTerms\\\" order-by=\\\"'code'\\\" mandatory=\\\"true\\\" item-renderer=\\\"['name']\\\" ng-class=\\\"{'has-error': !vm.hasPaymentTerm() }\\\" ></ca-singleselect>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'company.shippingMethod'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.shippingMethod.name}}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isEditing\\\" model=\\\"vm.company.shippingMethod\\\" choices=\\\"vm.shippingMethods\\\" order-by=\\\"'name'\\\" mandatory=\\\"true\\\" item-renderer=\\\"['name']\\\" ng-class=\\\"{'has-error': !vm.hasShippingMethod() }\\\" ></ca-singleselect>\\n                </ca-form-group-row>\\n\\n                <div class=\\\"col-sm-12\\\">&nbsp;</div>\\n\\n                <ca-form-group-row label=\\\"'company.organizationnumber'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.organizationNumber}}</span>\\n                    <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.company.organizationNumber\\\" enter-as-tab>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'company.alternativeCompanyId'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.alternativeCompanyId}}</span>\\n                    <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.company.alternativeCompanyId\\\" enter-as-tab>\\n                </ca-form-group-row>                \\n    \\n                <ca-form-group-row label=\\\"'company.primaryPurchaser'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.primaryPurchaser.firstName + ' ' + vm.company.primaryPurchaser.lastName}}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isEditing\\\" model=\\\"vm.company.primaryPurchaser\\\" choices=\\\"vm.users\\\" order-by=\\\"'firstName'\\\" item-renderer=\\\"['firstName','lastName']\\\" ></ca-singleselect>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'company.purchasingCurrency'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.purchasingCurrency.code + ' ' + vm.company.purchasingCurrency.name}}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isEditing\\\" model=\\\"vm.company.purchasingCurrency\\\" choices=\\\"vm.currencies\\\" order-by=\\\"'code'\\\" item-renderer=\\\"['code']\\\" mandatory=\\\"true\\\"></ca-singleselect>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'company.language'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.language.locale + ' ' + vm.company.language.name}}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isEditing\\\" model=\\\"vm.company.language\\\" choices=\\\"vm.languages\\\" order-by=\\\"'locale'\\\" item-renderer=\\\"['locale','name']\\\"></ca-singleselect>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'company.leadTime'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.company.leadTime }}</span>\\n                    <input ng-show=\\\"vm.isEditing\\\" type=\\\"number\\\" step=\\\"1\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.company.leadTime\\\" enter-as-tab>\\n                </ca-form-group-row>                \\n                <ca-form-group-row label=\\\"'company.priceModel'\\\">\\n                    <span ng-show=\\\"!vm.isNewCompany && !vm.isEditing\\\" class=\\\"editable\\\">{{vm.priceModelObject.display}}</span>\\n                    <ca-singleselect ng-show=\\\"vm.isEditing\\\" model=\\\"vm.priceModelObject\\\" choices=\\\"vm.pricingModels\\\" order-by=\\\"'name'\\\" item-renderer=\\\"['display']\\\" mandatory=\\\"true\\\"></ca-singleselect>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'company.commissionPercent'\\\" ng-if=\\\"vm.priceModelObject.name === 'commission'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{ vm.company.commissionPercent }}</span>\\n                    <input ng-show=\\\"vm.isEditing\\\" name=\\\"commissionPercent\\\" type=\\\"number\\\" step=\\\"0.01\\\" min=\\\"0\\\" max=\\\"100\\\" ng-pattern=\\\"/^[0-9]+(\\\\.[0-9]{1,2})?$/\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.company.commissionPercent\\\" enter-as-tab required>\\n                    <span class=\\\"help-block\\\" ng-show=\\\"companyForm.commissionPercent.$invalid && companyForm.commissionPercent.$touched\\\">{{'common.required' | translate}}</span>\\n                </ca-form-group-row> \\n\\n                <div class=\\\"col-sm-12\\\">&nbsp;</div>\\n\\n                <ca-form-group-row label=\\\"address.addressType.typeName\\\" ng-repeat=\\\"address in vm.company.addresses\\\">\\n                    <ca-address address=\\\"address\\\" is-editing=\\\"vm.isEditing\\\" remove-address=\\\"vm.removeAddress(address)\\\"></ca-address>\\n                </ca-form-group-row>  \\n                <div class=\\\"form-group row new-selection-form\\\" ng-show=\\\"vm.isEditing && vm.availableAddressTypes.length\\\">\\n                    <label class=\\\"col-sm-10 control-label text-right\\\">\\n                        <div class=\\\"input-group\\\">\\n                            <span class=\\\"input-group-addon\\\" id=\\\"basic-addon1\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n                            <select class=\\\"form-control\\\" ng-change=\\\"vm.addNewAddress()\\\" ng-model=\\\"vm.newAddress.addressType\\\" ng-options=\\\"type.typeName for type in vm.availableAddressTypes\\\">\\n                                <option value=\\\"\\\" style=\\\"display: none;\\\">{{'user.newaddress' | translate}}</option>\\n                            </select>\\n                        </div>\\n                    </label>\\n                </div>\\n\\n                <ca-form-group-row label=\\\"contactInfo.contactInfoType.typeName\\\" ng-repeat=\\\"contactInfo in vm.company.contactInfos\\\">\\n                    <ca-contact-info contact-info=\\\"contactInfo\\\" is-editing=\\\"vm.isEditing\\\" remove-contact-info=\\\"vm.removeContactInfo(contactInfo)\\\"></ca-contact-info>\\n                </ca-form-group-row>   \\n                <div class=\\\"form-group row new-selection-form\\\" ng-show=\\\"vm.isEditing && vm.availableContactInfoTypes.length\\\">\\n                    <label class=\\\"col-sm-10 control-label\\\">\\n                        <div class=\\\"input-group\\\">\\n                            <span class=\\\"input-group-addon\\\" id=\\\"basic-addon1\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n                            <select class=\\\"form-control\\\" ng-change=\\\"vm.addNewContactInfo()\\\" ng-model=\\\"vm.newContactInfo.contactInfoType\\\" ng-options=\\\"type.typeName for type in vm.availableContactInfoTypes\\\">\\n                                <option value=\\\"\\\" style=\\\"display: none;\\\">{{'user.newcontactinfo' | translate}}</option>\\n                            </select>\\n                        </div>\\n                    </label>\\n                </div>\\n\\n            </div>\\n        </div>\\n    </div>\\n</form>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<p class=\\\"\\\" ng-hide=\\\"vm.isEditing\\\">{{vm.address.addressLine1 + ' ' + vm.address.addressLine2 + ' ' + vm.address.addressLine3 + ', ' + vm.address.postalCode + ' ' + vm.address.city + ', ' + vm.address.country}}</p>\\n<div class=\\\"custom-edit-input\\\" ng-show=\\\"vm.isEditing\\\">\\n    <div class=\\\"inputs\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.addressLine1\\\" placeholder=\\\"{{'address.addressline1' | translate}}\\\" ng-change=\\\"vm.addressUpdated(vm.address)\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.addressLine2\\\" placeholder=\\\"{{'address.addressline2' | translate}}\\\" ng-change=\\\"vm.addressUpdated(vm.address)\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.addressLine3\\\" placeholder=\\\"{{'address.addressline3' | translate}}\\\" ng-change=\\\"vm.addressUpdated(vm.address)\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.postalCode\\\" placeholder=\\\"{{'address.postalCode' | translate}}\\\" ng-change=\\\"vm.addressUpdated(vm.address)\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.city\\\" placeholder=\\\"{{'address.city' | translate}}\\\" ng-change=\\\"vm.addressUpdated(vm.address)\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.country\\\" placeholder=\\\"{{'address.country' | translate}}\\\" ng-change=\\\"vm.addressUpdated(vm.address)\\\">\\n    </div>\\n    <div class=\\\"tools\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" ng-click=\\\"vm.deleteAddress(vm.address)\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"custom-edit-input\\\" ng-hide=\\\"vm.isEditing\\\">\\n    {{vm.contactInfo.value}}\\n</div>\\n<div class=\\\"custom-edit-input\\\" ng-show=\\\"vm.isEditing\\\">\\n    <div class=\\\"inputs\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.contactInfo.value\\\" ng-change=\\\"vm.contactInfoUpdated(vm.contactInfo)\\\">\\n    </div>\\n    <div class=\\\"tools\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" ng-click=\\\"vm.deleteContactInfo(vm.contactInfo)\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"custom-edit-input\\\">\\n    <div class=\\\"inputs\\\">\\n        <ui-select ng-model=\\\"vm.selectedAddressType\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.addressTypes.length === 0\\\">\\n            <ui-select-match placeholder=\\\"\\\">{{$select.selected.typeName}}</ui-select-match>\\n            <ui-select-choices repeat=\\\"addressType in vm.addressTypes | filter:{'typeName': $select.search}\\\">\\n                <span>{{addressType.typeName}}</span>\\n            </ui-select-choices>\\n        </ui-select>\\n    </div>\\n    <div class=\\\"tools\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-success\\\" ng-click=\\\"vm.createAddress()\\\" ng-disabled=\\\"vm.selectedAddressType === undefined\\\"><i class=\\\"fa fa-plus\\\"></i></button>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"custom-edit-input\\\">\\n    <div class=\\\"inputs\\\">\\n        <ui-select ng-model=\\\"vm.selectedContactInfoType\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.contactInfoTypes.length === 0\\\">\\n            <ui-select-match placeholder=\\\"\\\">{{$select.selected.typeName}}</ui-select-match>\\n            <ui-select-choices repeat=\\\"contactInfoType in vm.contactInfoTypes | filter:{'typeName': $select.search}\\\">\\n                <span>{{contactInfoType.typeName}}</span>\\n            </ui-select-choices>\\n        </ui-select>\\n    </div>\\n    <div class=\\\"tools\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-success\\\" ng-click=\\\"vm.createContactInfo()\\\" ng-disabled=\\\"vm.selectedContactInfoType === undefined\\\"><i class=\\\"fa fa-plus\\\"></i></button>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n    <div class=\\\"col w-xl lter b-r\\\" ui-view=\\\"contactList\\\" ng-hide=\\\"$state.includes('contacts.timestampingmanagement') || $state.includes('contacts.bulkoperation')\\\"></div>\\n    <div class=\\\"col w-xxl bg-white-only\\\" ui-view=\\\"contactView\\\" ng-hide=\\\"$state.includes('contacts.timestampingmanagement') || $state.includes('contacts.bulkoperation')\\\"></div>\\n    <div class=\\\"col\\\" ng-hide=\\\"$state.includes('contacts.timestampingmanagement') || $state.includes('contacts.bulkoperation')\\\"></div>\\n\\n    <div class=\\\"col\\\" ui-view=\\\"wideColumnView\\\" ng-show=\\\"$state.includes('contacts.timestampingmanagement') || $state.includes('contacts.bulkoperation')\\\"></div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-heading font-bold\\\">\\n            <span ng-show=\\\"!vm.isEditing && vm.allowSaveLocation()\\\"> <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.startEditing()\\\"> {{'common.edit' | translate}} </button> </span>\\n            <span ng-show=\\\"vm.isEditing && vm.allowSaveLocation()\\\"> <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.save()\\\"> {{'common.save' | translate}} </button> </span>\\n            <span ng-show=\\\"vm.isEditing\\\"> <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\"> {{'common.cancel' | translate}} </button> </span>\\n            <span> {{vm.selectedLocation.locationName}} </span>\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner panel-body\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <div class=\\\"col-sm-2\\\">\\n                            &nbsp;\\n                        </div>\\n                        <div class=\\\"col-sm-10\\\">\\n\\n                            <div class=\\\"form-group row\\\" ng-hide=\\\"vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.name' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.locationName }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\" ng-show=\\\"vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.name' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span> <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.selectedLocation.locationName\\\" placeholder=\\\"{{'location.locationName' | translate}}\\\"> </span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.locationnumber' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.locationNumber }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            \\n                            <div class=\\\"form-group row\\\" ng-if=\\\"!vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'user.isactive' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ \\\"common.\\\" + vm.selectedLocation.isActive | translate }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n\\n                            <div class=\\\"form-group row\\\" ng-if=\\\"vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'user.isactive' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <label class=\\\"i-checks m-t-xs\\\">\\n                                        <input type=\\\"checkbox\\\" namef=\\\"a\\\"\\n                                            ng-model=\\\"vm.selectedLocation.isActive\\\" />\\n                                        <i></i>\\n                                    </label>\\n                                </div>\\n                            </div>\\n\\n                            <div class=\\\"form-group row\\\" ng-if=\\\"!vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.shouldGenerateAutoOrders' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ \\\"common.\\\" + vm.selectedLocation.shouldGenerateAutoOrders | translate }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n\\n                            <div class=\\\"form-group row\\\" ng-if=\\\"vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.shouldGenerateAutoOrders' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <label class=\\\"i-checks m-t-xs\\\">\\n                                        <input ng-disabled=\\\"!vm.isAllowedToSetAutoOrder\\\" type=\\\"checkbox\\\" namef=\\\"a\\\"\\n                                            ng-model=\\\"vm.selectedLocation.shouldGenerateAutoOrders\\\" />\\n                                        <i></i>\\n                                    </label>\\n                                </div>\\n                            </div>\\n\\n                            <div class=\\\"form-group row\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.type' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.locationType.description }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.category' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.locationCategory.category }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\" ng-if=\\\"vm.selectedLocation.salesChannel\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.saleschannel' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.salesChannel.salesChannelDescription }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\" ng-if=\\\"vm.selectedLocation.resellerCustomer\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.resellerCustomer' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.resellerCustomer.socialSecurityNumber + ' ' + vm.selectedLocation.resellerCustomer.firstName + ' ' + vm.selectedLocation.resellerCustomer.lastName }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>                                                       \\n                            <div class=\\\"form-group row\\\" ng-if=\\\"vm.selectedLocation.ResellerCostPriceFactor\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.resellerCostPriceFactor' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.ResellerCostPriceFactor | number }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>                                                       \\n                            <br />\\n\\n                            <div class=\\\"form-group row\\\" ng-hide=\\\"vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.storemanager' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span ng-if=\\\"vm.selectedLocation.storeManager\\\">{{vm.selectedLocation.storeManager.firstName}} &nbsp; {{vm.selectedLocation.storeManager.lastName}}</span>\\n                                        <span ng-if=\\\"!vm.selectedLocation.storeManager\\\">{{'location.storemanager.none' | translate}}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\" ng-show=\\\"vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.storemanager' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <ui-select ng-model=\\\"vm.selectedLocation.storeManager\\\" theme=\\\"bootstrap\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                                        <ui-select-match placeholder=\\\"\\\">{{$select.selected.firstName}} {{$select.selected.lastName}}</ui-select-match>\\n                                        <ui-select-choices repeat=\\\"user in vm.users\\\">\\n                                            <span>{{user.firstName}} {{user.lastName}}</span>\\n                                        </ui-select-choices>\\n                                    </ui-select>\\n                                </div>\\n                            </div>\\n\\n                            <div class=\\\"form-group row\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.squaremeters' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\" >{{ vm.selectedLocation.squareMeters }}</span>\\n                                        <span ng-if=\\\"vm.isEditing\\\" ><input ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" step=\\\"any\\\" class=\\\"form-control\\\" ng-model=\\\"vm.selectedLocation.squareMeters\\\" placeholder=\\\"{{'location.squaremeters' | translate}}\\\"></span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n\\n                            <div class=\\\"form-group row\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.startdate' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.startDate | date:'yyyy-MM-dd' }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.organizationnumber' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{ vm.selectedLocation.organizationNumber }}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n\\n                            <div class=\\\"form-group row\\\" ng-hide=\\\"vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.resellerPriceList' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p class=\\\"\\\">\\n                                        <span>{{vm.selectedLocation.resellerPriceList.pricelistName}}</span>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\" ng-show=\\\"vm.isEditing\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.resellerPriceList' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <ui-select ng-model=\\\"vm.selectedLocation.resellerPriceList\\\" theme=\\\"bootstrap\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                                        <ui-select-match placeholder=\\\"\\\">{{$select.selected.pricelistName}}</ui-select-match>\\n                                        <ui-select-choices repeat=\\\"priceList in vm.priceLists\\\">\\n                                            <span>{{priceList.pricelistName}}</span>\\n                                        </ui-select-choices>\\n                                    </ui-select>\\n                                </div>\\n                            </div>\\n                            <br />\\n\\n                            <div class=\\\"form-group row\\\" ng-repeat=\\\"address in vm.selectedLocation.addresses\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{address.addressType.typeName}}:</label>\\n                                <div class=\\\"col-lg-8\\\"> \\n                                    <ca-address-form address=\\\"address\\\" \\n                                                     is-editing=\\\"vm.isEditing\\\"\\n                                                     on-address-updated=\\\"vm.updateAddress(address)\\\"\\n                                                     on-address-deleted=\\\"vm.deleteAddress(address)\\\"> \\n                                    </ca-address-form>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\" ng-show=\\\"vm.isEditing\\\">\\n                                <div class=\\\"col-lg-4\\\"> &nbsp; </div>\\n                                <div class=\\\"col-lg-8\\\">\\n                                    <ca-new-address-form address-types=\\\"vm.addressTypes\\\"\\n                                                         on-address-created=\\\"vm.addNewAddress(address)\\\">\\n                                    </ca-new-address-form>\\n                                </div>\\n                            </div>\\n                            <br />\\n                            <div class=\\\"form-group row\\\" ng-repeat=\\\"contactInfo in vm.selectedLocation.contactInfos\\\">\\n                                <label class=\\\"col-lg-4\\\">{{contactInfo.contactInfoType.typeName}}:</label>\\n                                <div class=\\\"col-lg-8\\\"> \\n                                    <ca-contact-info-form contact-info=\\\"contactInfo\\\" \\n                                                          is-editing=\\\"vm.isEditing\\\" \\n                                                          on-contact-info-updated=\\\"vm.updateContactInfo(contactInfo)\\\" \\n                                                          on-contact-info-deleted=\\\"vm.deleteContactInfo(contactInfo)\\\"> \\n                                    </ca-contact-info-form>\\n                                </div>\\n                            </div>\\n                            <div class=\\\"form-group row\\\" ng-show=\\\"vm.isEditing\\\">\\n                                <div class=\\\"col-lg-4\\\"> &nbsp; </div>\\n                                <div class=\\\"col-lg-8\\\">\\n                                    <ca-new-contact-info-form contact-info-types=\\\"vm.contactInfoTypes\\\"\\n                                                              on-contact-info-created=\\\"vm.addNewContactInfo(contactInfo)\\\">\\n                                    </ca-new-contact-info-form>\\n                                </div>\\n                            </div>\\n\\n                            <br />\\n                            <div class=\\\"form-group row\\\">\\n                                <label class=\\\"col-sm-4 \\\">{{'location.users' | translate}}:</label>\\n                                <div class=\\\"col-sm-8\\\">\\n                                    <p  class=\\\"\\\" ng-repeat=\\\"user in vm.selectedLocation.users | filter: {'isActive':true} | orderBy:'name'\\\">{{user.firstName}} &nbsp; {{user.lastName}}</p>\\n                                </div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .locationListContainer {\\n        display: flex;\\n        flex-direction: column;\\n        height: 90%;\\n        align-content: space-between;\\n    }\\n    .locationListContainerItem.searchBoxItem {\\n    }\\n    .locationListContainerItem.mainListItem {\\n        overflow: auto;\\n        flex-shrink: 2; \\n    }\\n    .locationListContainerItem.paginationItem {\\n        text-align: center;\\n    }\\n    .marginPadding {\\n        margin-left: 15px;\\n    }\\n</style>\\n<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n\\n                    <div class=\\\"articleListContainer pos-abs\\\">\\n                    \\n                        <!-- Search bar section -->\\n                        <!-- <div class=\\\"locationListContainerItem searchBoxItem\\\"> -->\\n                            <!-- <div class=\\\"input-group m-b-xxs list-menu\\\" > -->\\n                                <div class=\\\"wrapper-xs\\\" style=\\\"padding-top:7px; padding-bottom:0px\\\">\\n                                    <form ng-submit=\\\"vm.searchTermChange()\\\">\\n                                        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                                            <input id=\\\"SearchInput\\\" type=\\\"text\\\" class=\\\"form-control input-sm no-border text-md\\\" style=\\\"background-color:white\\\" ng-model=\\\"vm.filter\\\" ng-model-options=\\\"{debounce: 2500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\"\\n                                                tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'article.articleList.pressEnter'  | translate}}\\\" tooltip-popup-delay=\\\"300\\\">\\n                                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><button type=\\\"submit\\\" class=\\\"btn btn-sm btn-default\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></button></span>\\n                                            <input type=\\\"submit\\\" style=\\\"position: absolute; left:-9999px; width: 1px; height: 1px;\\\"/>\\n                                        </div>\\n                                    </form>\\n                                </div>\\n                            <!-- </div> -->\\n                        <!-- </div> -->\\n                        <div class=\\\"marginPadding\\\">\\n                            <ca-form-group-row-other label=\\\"'article.showInactive'\\\"> \\n                                <label class=\\\"i-checks m-t-xs\\\">\\n                                    <input type=\\\"checkbox\\\" name=\\\"inactive\\\" ng-model=\\\"vm.inactive\\\" ng-change=\\\"vm.searchTermChange()\\\" ng-checked=\\\"vm.inactive\\\"/>\\n                                    <i></i>\\n                                </label>\\n                            </ca-form-group-row-other>\\n                        </div>\\n                        \\n                        <!-- Location list section -->\\n                        <div class=\\\"locationListContainerItem mainListItem\\\">\\n                            <div class=\\\"list-group list-group-lg no-radius no-border no-bg m-b-none\\\">\\n                                <a ng-click=\\\"vm.goToLocation(location)\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"location in vm.locations\\\">\\n                                    <div class=\\\"block text-ellipsis m-l-n\\\">\\n                                        <div class=\\\"text-ellipsis lg-label\\\">{{location.locationNumber}} {{location.locationName}}</div>\\n                                        <ca-search-list-contact-infos contact-infos=\\\"location.contactInfos\\\"></ca-search-list-contact-infos>\\n                                    </div>\\n                                </a>\\n                            </div>\\n                        </div>\\n                        \\n                        <!-- Pagination navigation -->\\n                        <div class=\\\"locationListContainerItem paginationItem\\\"> \\n                            <div\\n                                uib-pagination\\n                                boundary-links=\\\"true\\\"\\n                                total-items=\\\"vm.totalItems\\\"\\n                                items-per-page=\\\"vm.pageSize\\\"\\n                                max-size=\\\"5\\\"\\n                                ng-change=\\\"vm.searchTermChange()\\\"\\n                                ng-model=\\\"vm.currentPage\\\"\\n                                class=\\\"pagination-sm\\\"\\n                                previous-text=\\\"&lsaquo;\\\"\\n                                next-text=\\\"&rsaquo;\\\"\\n                                first-text=\\\"&laquo;\\\"\\n                                last-text=\\\"&raquo;\\\">\\n                            </div>\\n                        </div>\\n                    \\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.saveRole()\\\" ng-disabled=\\\"!vm.canAccess('role', 'update')\\\">\\n                {{'common.save' | translate}}\\n            </button>\\n        </span>\\n        <span>{{vm.role.roleName}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <div class=\\\"form-group row\\\"> \\n            <div class=\\\"col-lg-12\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.role.isAdminRole\\\" />\\n                    <i></i>\\n                    {{'role.isAdminRole' | translate}}\\n                </label>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"form-group row\\\" ng-hide=\\\"vm.role.isAdminRole\\\">\\n            <div class=\\\"col-lg-12\\\">\\n                <table class=\\\"table table-condensed\\\">\\n                    <thead>\\n                        <tr class=\\\"ca-table-grouprow\\\" >\\n                            <td class=\\\"width: 100%\\\">\\n                                {{row.rowHeader}}\\n                            </td>\\n                            <td ng-repeat=\\\"claimType in vm.claimTypes\\\" style=\\\"width: 75px; text-align: center;\\\">\\n                                {{ 'role.' + claimType | translate }}\\n                            </td>\\n                        </tr>\\n                    </thead>\\n                    <tbody>\\n                        <tr ng-repeat=\\\"row in vm.claimsRowData | orderBy:'rowHeaderLabel'\\\">\\n                            <td>\\n                                {{row.rowHeaderLabel}}\\n                            </td>\\n                            <td ng-repeat=\\\"claimType in vm.claimTypes\\\" style=\\\"text-align: center\\\">\\n                                <input type=\\\"checkbox\\\" ng-model=\\\"row[claimType]\\\"  />\\n                            </td>\\n                            \\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </div>\\n        </div>\\n        <ca-form-group-row label=\\\"'role.widgetFilter'\\\">\\n            <ca-multiselect model=\\\"vm.role.widgets\\\" choices=\\\"vm.widgets\\\" placeholder=\\\"'role.addWidgetFilter'\\\" order-by=\\\"'title'\\\" item-renderer=\\\"['title']\\\"/>\\n        </ca-form-group-row>    \\n        <ca-form-group-row label=\\\"'role.dataSourcesFilter'\\\">\\n            <ca-multiselect model=\\\"vm.role.dataSources\\\" choices=\\\"vm.dataSources\\\" placeholder=\\\"'role.addDataSourceFilter'\\\" order-by=\\\"'description'\\\" item-renderer=\\\"['description']\\\"/>\\n        </ca-form-group-row>\\n\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div ng-if=\\\"false\\\" class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\" >\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><button type=\\\"button\\\" ng-click=\\\"$state.go('contacts.roles.new')\\\" class=\\\"btn btn-sm btn-default\\\" ng-disabled=\\\"true\\\">{{'common.new' | translate}}</button></span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <!-- <input type=\\\"search\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChanged()\\\" placeholder=\\\"{{'common.search' | translate}}\\\" ng-disabled=\\\"true\\\"> -->\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"vm.selectRole(role)\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"role in vm.roles\\\" ng-class=\\\"{'focus m-l-none': role.id === vm.selectedRoleId}\\\">\\n                          <span class=\\\"text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': role.id === vm.selectedRoleId }\\\">\\n                            <span class=\\\"pull-left text-ellipsis lg-label\\\">{{role.roleName}}</span>\\n                          </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.startEdit()\\\" ng-show=\\\"!vm.isEditing\\\" ng-disabled=\\\"!vm.canAccess('user', 'update')\\\">{{'common.edit' | translate}}</button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.save()\\\" ng-show=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.canAccess('user', 'update') || !vm.isAllInformationValid()\\\">{{'common.save' | translate}}</button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.cancelEdit()\\\" ng-show=\\\"vm.isEditing && !vm.isNewUser\\\">{{'common.cancel' | translate}}</button>\\n        </span>\\n        <span> &nbsp; </span>\\n        <span>{{vm.isNewUser ?  'user.new' : vm.selectedUserCopy.firstName  + ' ' + vm.selectedUserCopy.lastName | translate}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.validationErrors.length > 0\\\">\\n            <ul>\\n                <li ng-repeat=\\\"error in vm.validationErrors\\\">{{::error.message}}</li>\\n            </ul>\\n        </div>\\n        <div class=\\\"editableForm\\\">\\n            <div class=\\\"col-sm-12\\\">\\n                <ca-form-group-row label=\\\"'user.firstname'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\">{{ vm.selectedUserCopy.firstName }}</span>\\n                        <div ng-class=\\\"{'has-error': !vm.hasFirstName(), 'has-success': vm.hasFirstName()}\\\">\\n                            <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.selectedUserCopy.firstName\\\" enter-as-tab>\\n                        </div>\\n                </ca-form-group-row>                    \\n                <ca-form-group-row label=\\\"'user.lastname'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\">{{ vm.selectedUserCopy.lastName }}</span>\\n                    <div ng-class=\\\"{'has-error': !vm.hasLastName(), 'has-success': vm.hasLastName()}\\\">\\n                        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.selectedUserCopy.lastName\\\" enter-as-tab>\\n                    </div>\\n                </ca-form-group-row>                    \\n                <ca-form-group-row label=\\\"'user.username'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\">{{ vm.selectedUserCopy.username }}</span>\\n                    <div ng-class=\\\"{'has-error': !vm.hasUserName(), 'has-success': vm.hasUserName()}\\\">\\n                        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.selectedUserCopy.username\\\" enter-as-tab>\\n                    </div>\\n                </ca-form-group-row>                    \\n                <ca-form-group-row label=\\\"'user.password'\\\">\\n                    <form autocomplete=\\\"off\\\">\\n                        <span  ng-show=\\\"!vm.isEditing\\\">{{ vm.selectedUserCopy.password }}</span>\\n                            <div ng-show=\\\"vm.isEditing\\\" ng-class=\\\"{'has-error': !vm.hasPassword(), 'has-success': vm.hasPassword()}\\\">\\n                                <input type=\\\"password\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.selectedUserCopy.password\\\" enter-as-tab>\\n                            </div>\\n                    </form>\\n                </ca-form-group-row>        \\n                <ca-form-group-row label=\\\"'user.usernamepos'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\">{{ vm.selectedUserCopy.usernamePos }}</span>\\n                    <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.selectedUserCopy.usernamePos\\\" enter-as-tab>\\n                </ca-form-group-row>\\n                                \\n                <ca-form-group-row label=\\\"'user.employeenumber'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\">{{ vm.selectedUserCopy.employeeNumber }}</span>\\n                    <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.selectedUserCopy.employeeNumber\\\" enter-as-tab>\\n                </ca-form-group-row>                    \\n                <ca-form-group-row label=\\\"'user.ssn'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\">{{ vm.selectedUserCopy.socialSecurityNumber }}</span>\\n                    <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.selectedUserCopy.socialSecurityNumber\\\" enter-as-tab>\\n                </ca-form-group-row>                    \\n                <ca-form-group-row label=\\\"'user.startdate'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\"  class=\\\"editable\\\">{{vm.selectedUserCopy.startDate | date:'yyyy-MM-dd' }}</span>\\n                    <span ng-show=\\\"vm.isEditing\\\">\\n                        <wj-input-date\\n                            value=\\\"vm.selectedUserCopy.startDate\\\"\\n                            min=\\\"2000-01-01\\\"\\n                            format=\\\"yyyy-MM-dd\\\"\\n                            class=\\\"form-control\\\">\\n                        </wj-input-date>\\n                    </span>\\n                </ca-form-group-row>                    \\n                            \\n                <ca-form-group-row label=\\\"'user.isactive'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\"  class=\\\"editable\\\">{{vm.selectedUserCopy.isActive ? ('common.true' | translate) : ('common.false' | translate)}}</span>\\n                    <span ng-show=\\\"vm.isEditing\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.selectedUserCopy.isActive\\\" />\\n                            <i></i>\\n                        </label>\\n                    </span>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'user.commonreports'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\"  class=\\\"editable\\\">{{vm.selectedUserCopy.isAllowedToViewCommonReports ? ('common.true' | translate) : ('common.false' | translate)}}</span>\\n                    <span ng-show=\\\"vm.isEditing\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.selectedUserCopy.isAllowedToViewCommonReports\\\" />\\n                            <i></i>\\n                        </label>\\n                    </span>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"address.addressType.typeName\\\" ng-repeat=\\\"address in vm.selectedUserCopy.addresses\\\">\\n                    <ca-address address=\\\"address\\\" is-editing=\\\"vm.isEditing\\\" remove-address=\\\"vm.removeAddress(address)\\\"></ca-address>\\n                </ca-form-group-row>\\n                <div class=\\\"form-group row new-selection-form\\\" ng-show=\\\"vm.isEditing && vm.availableAddressTypes.length\\\">\\n                    <label class=\\\"col-sm-12 control-label text-right\\\">\\n                        <div class=\\\"input-group\\\">\\n                            <span class=\\\"input-group-addon\\\" id=\\\"basic-addon1\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n                            <select class=\\\"form-control\\\" ng-change=\\\"vm.addNewAddress()\\\" ng-model=\\\"vm.newAddress.addressType\\\" ng-options=\\\"type.typeName for type in vm.availableAddressTypes\\\">\\n                                <option value=\\\"\\\" style=\\\"display: none;\\\">{{'user.newaddress' | translate}}</option>\\n                            </select>\\n                        </div>\\n                    </label>\\n                </div>\\n\\n                <ca-form-group-row label=\\\"contactInfo.contactInfoType.typeName\\\" ng-repeat=\\\"contactInfo in vm.selectedUserCopy.contactInfos\\\" uib-tooltip=\\\"{{ 'user.entervalidemail' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"right\\\" tooltip-enable=\\\"!vm.isEmailValid && contactInfo.contactInfoType.systemTypeName === 'Email'\\\">\\n                    <div ng-class=\\\"{'has-error': !vm.isEmailValid && vm.isEditing && contactInfo.contactInfoType.systemTypeName === 'Email', 'has-success' : vm.isEmailValid && vm.isEditing && contactInfo.contactInfoType.systemTypeName === 'Email'}\\\">\\n                        <ca-contact-info contact-info=\\\"contactInfo\\\" is-editing=\\\"vm.isEditing\\\" remove-contact-info=\\\"vm.removeContactInfo(contactInfo)\\\"></ca-contact-info>\\n                    </div>\\n                </ca-form-group-row>\\n                <div ng-class=\\\"{'has-error': !vm.hasEmail()}\\\" uib-tooltip=\\\"{{ 'user.addemailadress' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"right\\\" tooltip-enable=\\\"!vm.hasEmail()\\\" >\\n                    <div class=\\\"form-group row new-selection-form\\\" ng-show=\\\"vm.isEditing && vm.availableContactInfoTypes.length\\\">\\n                        <label class=\\\"col-sm-12 control-label\\\">\\n                            <div class=\\\"input-group\\\">\\n                                <span class=\\\"input-group-addon\\\" id=\\\"basic-addon1\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n                                <select class=\\\"form-control\\\" ng-change=\\\"vm.addNewContactInfo()\\\" ng-model=\\\"vm.newContactInfo.contactInfoType\\\" ng-options=\\\"type.typeName for type in vm.availableContactInfoTypes\\\">\\n                                    <option value=\\\"\\\" style=\\\"display: none;\\\">{{'user.newcontactinfo' | translate}}</option>\\n                                </select>\\n                            </div>\\n                        </label>\\n                    </div>\\n                </div>\\n\\n                <ca-form-group-row label=\\\"'user.locations'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                        <p ng-repeat=\\\"location in vm.selectedUserCopy.locations | orderBy:'name'\\\">{{location.locationName}}</p>\\n                    </span>\\n                    <div ng-show=\\\"vm.isEditing\\\">\\n                        <ca-multiselect model=\\\"vm.selectedLocations\\\" choices=\\\"vm.locations\\\" order-by=\\\"'locationName'\\\" placeholder=\\\"'user.addlocation'\\\" item-renderer=\\\"'locationName'\\\"/>\\n                    </div>\\n                </ca-form-group-row>                    \\n                <ca-form-group-row label=\\\"'user.brands'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                        <p ng-repeat=\\\"brand in vm.selectedUserCopy.brands | orderBy:'name'\\\">{{brand.brandDescription}}</p>\\n                    </span>\\n                    <div ng-show=\\\"vm.isEditing\\\">\\n                        <ca-multiselect model=\\\"vm.selectedBrands\\\" choices=\\\"vm.brands\\\" order-by=\\\"'brandDescription'\\\" placeholder=\\\"'user.addBrand'\\\" item-renderer=\\\"['brandCode','brandDescription']\\\"/>\\n                    </div>\\n                </ca-form-group-row>                    \\n                <ca-form-group-row label=\\\"'user.roles'\\\">\\n                    <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.selectedUserCopy.role.roleName}}</span>\\n                    <div ng-show=\\\"vm.isEditing\\\" ng-class=\\\"{'has-error': !vm.hasRole(), 'has-success': vm.hasRole()}\\\">\\n                        <ca-singleselect model=\\\"vm.selectedUserCopy.role\\\" choices=\\\"vm.roles\\\" order-by=\\\"'roleName'\\\" item-renderer=\\\"'roleName'\\\"/>\\n                    </div>                   \\n                </ca-form-group-row>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\" >\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><button type=\\\"button\\\" ng-click=\\\"$state.go('contacts.users.new')\\\" class=\\\"btn btn-sm btn-default\\\" ng-disabled=\\\"!vm.canAccess('user', 'create')\\\">{{'common.new' | translate}}</button></span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"search\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChanged()\\\" placeholder=\\\"{{'common.search' | translate}}\\\" >\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <a class=\\\"b-b b-t b-r b-l\\\" ng-click=\\\"vm.showExtraOptions = !vm.showExtraOptions\\\" ng-show=\\\"vm.showExtraOptions\\\"> <i class=\\\"fa fa-fw fa-angle-down\\\"></i> </a>\\n                <a class=\\\"b-b b-t b-r b-l\\\" ng-click=\\\"vm.showExtraOptions = !vm.showExtraOptions\\\" ng-hide=\\\"vm.showExtraOptions\\\"> <i class=\\\"fa fa-fw fa-angle-right\\\"></i> </a>\\n            </span>\\n        </div>\\n    </div>\\n    <div class=\\\"col-lg-12 b-b\\\" ng-show=\\\"vm.showExtraOptions\\\">\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n        <ca-form-group-row label=\\\"'common.unfiltered'\\\"> \\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showInactiveUsers\\\" ng-change=\\\"vm.searchTermChanged()\\\" />\\n                <i></i>\\n            </label>\\n        </ca-form-group-row>\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"vm.selectUser(user)\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"user in vm.userList\\\" ng-class=\\\"{'focus m-l-none': user.id === vm.selectedUserId}\\\">\\n                          <div class=\\\"text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': user.id === vm.selectedUserId }\\\">\\n                            {{user.firstName + ' ' + user.lastName}}\\n                            <ca-search-list-contact-infos contact-infos=\\\"user.contactInfos\\\"></ca-search-list-contact-infos>\\n                          </div>\\n                          \\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n\\n    <div ui-view=\\\"\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\">\\n    <div style=\\\"border-bottom: 1px solid darkgray\\\">\\n        <h3>{{'common.invoice' | translate}}: {{vm.customerInvoice.invoiceNumber}}</h3>\\n\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\" style=\\\"text-align: left; width: 100%;\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.getSelectedInvoiceAsPdf()\\\" ng-hide=\\\"vm.isEditing\\\">{{'customerinvoice.getAsPdf' | translate}}</button>\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.startEdit()\\\" ng-show=\\\"!vm.isEditing\\\" ng-disabled=\\\"!vm.invoiceStatusAllowsEdit() || !vm.canAccess('customerInvoice', 'update')\\\">{{'common.edit' | translate}}</button>\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.saveEdit()\\\" ng-show=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.canAccess('customerInvoice', 'update')\\\">{{'common.save' | translate}}</button>\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.cancelEdit()\\\" ng-show=\\\"vm.isEditing\\\">{{'common.cancel' | translate}}</button>\\n                <span ng-click=\\\"vm.toggleInvoiceHead()\\\" style=\\\"margin-left:5px\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"vm.showInvoiceHead\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"vm.showInvoiceHead\\\"> {{'customerinvoice.hideInvoiceHead' | translate}}</span>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"!vm.showInvoiceHead\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"!vm.showInvoiceHead\\\"> {{'customerinvoice.showInvoiceHead' | translate}}</span>\\n                </span>\\n            </span>\\n        </div>\\n    </div>\\n\\n    <div ng-show=\\\"vm.showInvoiceHead\\\">\\n        <!-- Customer invoice head -->\\n        <div class=\\\"ca-hover-background\\\" style=\\\"float:left; max-width:50%;\\\" >\\n            <div>{{'customerinvoice.invoiceHead' | translate}}:</div>\\n            <table class=\\\"table table-condensed\\\">\\n                <tbody>\\n                    <tr>\\n                        <td>{{'customerinvoice.invoiceNumber' | translate}}</td>\\n                        <td>{{vm.customerInvoice.invoiceNumber}}</td>\\n                        <td>{{'customerinvoice.createdDate' | translate}}</td>\\n                        <td>{{vm.customerInvoice.createdDate | date:'yyyy-MM-dd'}}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerinvoice.invoiceType' | translate}}</td>\\n                        <td>{{vm.getTypeTranslation(vm.customerInvoice.invoiceType.name)}}</td>\\n                        <td>{{'customerinvoice.dueDate' | translate}}</td>\\n                        <td>\\n                            <span ng-show=\\\"!vm.isEditing\\\">{{vm.customerInvoice.dueDate | date:'yyyy-MM-dd'}}</span>\\n                            <wj-input-date\\n                                ng-show=\\\"vm.isEditing\\\"\\n                                value=\\\"vm.customerInvoice.dueDate\\\"\\n                                min=\\\"vm.customerInvoice.createdDate\\\"\\n                                format=\\\"yyyy-MM-dd\\\">\\n                            </wj-input-date>\\n                        </td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerinvoice.invoiceStatus' | translate}}</td>\\n                        <td>{{vm.getStatusTranslation(vm.customerInvoice.invoiceStatus.invoiceStatusName)}}</td>\\n                        <td>{{'customerinvoice.invoicedDate' | translate}}</td>\\n                        <td>{{vm.customerInvoice.invoicedDate | date:'yyyy-MM-dd'}}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerinvoice.ourReference' | translate}}</td>\\n                        <td>\\n                            <span ng-show=\\\"!vm.isEditing\\\">{{vm.customerInvoice.ourReference}}</span>\\n                            <input ng-show=\\\"vm.isEditing\\\"\\n                                class=\\\"editable-input form-control\\\"\\n                                type=\\\"text\\\"\\n                                placeholder=\\\"{{'customerinvoice.ourReference' | translate}}\\\"\\n                                ng-model=\\\"vm.customerInvoice.ourReference\\\" />\\n                        </td>\\n                        <td>{{'customerinvoice.location' | translate}}</td>\\n                        <td>{{vm.customerInvoice.location.locationNumber + ' ' + vm.customerInvoice.location.locationName}}</td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n\\n        <!-- Customer information -->\\n        <div class=\\\"ca-hover-background\\\" style=\\\"float:left; max-width:33%; margin-left:30px;\\\">{{'customerinvoice.customer' | translate}}:\\n            <table class=\\\"table table-condensed\\\">\\n                <tbody>\\n                    <tr>\\n                        <td>{{'customerinvoice.customerId' | translate}}:</td>\\n                        <td>{{ vm.customerInvoice.customer.id }}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerinvoice.externalCustomerId' | translate}}:</td>\\n                        <td>{{vm.customerInvoice.customer.externalCustomerId}}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerinvoice.customerName' | translate}}:</td>\\n                        <td>{{vm.customerInvoice.customer.firstName}} {{vm.customerInvoice.customer.lastName}}</td>\\n                    </tr>\\n                    <tr ng-if=\\\"vm.customerInvoice.customer.loyalityNumber > 0\\\">\\n                        <td>{{'customerinvoice.loyaltyNumber' | translate}}:</td>\\n                        <td>{{vm.customerInvoice.customer.loyalityNumber}}</td>\\n                    </tr>\\n                    <tr ng-repeat=\\\"info in vm.customerInvoice.customer.contactInfo\\\">\\n                        <td>{{info.contactInfoType.typeName}}</td>\\n                        <td style=\\\"font-weight: bold;\\\">{{info.value}}</td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n\\n        <div ng-if=\\\"vm.customerInvoice.customer.addresses.length > 0\\\" class=\\\"ca-hover-background\\\" style=\\\"float:left; max-width:33%; margin-left:30px;\\\">{{'address.addresses' | translate}}:\\n            <table class=\\\"table table-condensed\\\">\\n                <tbody ng-repeat=\\\"addr in vm.customerInvoice.customer.addresses\\\">\\n                    <tr>\\n                        <td>{{addr.addressType.typeName}}:</td>\\n                        <td>{{addr.addressLine1 + ' ' + addr.addressLine2 + ' ' + addr.addressLine3}}<br>{{addr.postalCode + ' ' + addr.city}}<br>{{addr.country}}</td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n\\n        <div style=\\\"clear:both; height: 1px\\\">&nbsp;</div>\\n    </div>\\n\\n    <!-- Filtering/search section -->\\n    <style>\\n        .tabLink a {\\n            color: #58666e;\\n            font-weight: bold;\\n        }\\n    </style>\\n    <ul class=\\\"nav nav-tabs\\\">\\n        <li class=\\\"tabLink\\\"><a ng-click=\\\"vm.changeToInvoiceRowsTab()\\\">{{'customerinvoice.invoiceRows' | translate}}</a></li>\\n    </ul>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\">\\n        <!-- Customer invoice rows -->\\n        <ca-customer-invoice-rows ng-show=\\\"vm.customerInvoice.invoiceRows.length > 0\\\" customer-invoice=\\\"vm.customerInvoice\\\" is-editing=\\\"vm.isEditing\\\"></ca-customer-invoice-rows>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <style>\\n        .ca-test {\\n            background-color: rgba(250,215,33,0.5)/*#fad733;*/\\n        }\\n        .borderTop {\\n            border-top:double 3px #eaeff0;\\n        }\\n        .alignRight {\\n            text-align: right;\\n        }\\n        .greyBackground:hover {\\n            background-color:#f3f3f3;\\n        }\\n        .greyBackground td:hover {\\n            background-color: #eaeaea;\\n        }\\n    </style>\\n    <table class=\\\"table table-condensed\\\">\\n        <thead>\\n            <th>{{ 'customerinvoice.articleVariantNumber' | translate }}</th>\\n            <th>{{ 'customerinvoice.articleVariantName' | translate }}</th>\\n            <th>&nbsp;</th>\\n            <th>&nbsp;</th>\\n            <th>{{ 'customerinvoice.rowText' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'customerinvoice.quantity' | translate }}</th>\\n            <th>{{ 'customerinvoice.intrastat' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'customerinvoice.amount' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'customerinvoice.totalAmount' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'customerinvoice.vat' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'customerinvoice.totalVat' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'customerinvoice.weight' | translate }} ({{ 'customerinvoice.gramAbbr' | translate }})</th>\\n            <th class=\\\"alignRight\\\">{{ 'customerinvoice.totalWeight' | translate }} ({{ 'customerinvoice.gramAbbr' | translate }})</th>\\n            <th>{{ 'customerinvoice.currency' | translate }}</th>\\n            <th>{{ 'customerinvoice.countryOfOrigin' | translate }}</th>\\n            <th>{{ 'customerinvoice.createdDate' | translate }}</th>\\n        </thead>\\n        <tbody>\\n            <tr class=\\\"greyBackground\\\" ng-repeat=\\\"row in vm.customerInvoice.invoiceRows\\\">\\n                <td>\\n                    <span uib-tooltip=\\\"{{ 'customerinvoice.alternativeArticleNumber' | translate }}: {{ row.articleVariant.article.alternativeArticleNumber }}\\\">\\n                        <a ng-click=\\\"vm.goToArticle(row.articleVariant.article.id)\\\" class=\\\"ca-celllink\\\">{{ row.articleVariant.article.articleNumber }}</a>\\n                    </span>\\n                </td>\\n                <td>\\n                    <span uib-tooltip=\\\"{{ row.articleVariant.article.descriptionLong }}\\\">\\n                        {{ row.articleVariant.article.articleName }}\\n                    </span>\\n                </td>\\n                <td>\\n                    {{ row.articleVariant.variantDetail1.variantDetailName }}\\n                </td>\\n                <td>\\n                    {{ row.articleVariant.variantDetail2.variantDetailName }}\\n                </td>\\n                <td>\\n                    <span ng-hide=\\\"vm.isEditing || row.rowText.length > 50\\\" uib-tooltip=\\\"{{ row.rowText }}\\\">\\n                        {{ vm.getEllipsis(row.rowText, 50) }}\\n                    </span>\\n                    <span ng-hide=\\\"vm.isEditing || row.rowText.length <= 50\\\">\\n                        {{ row.rowText }}\\n                    </span>\\n                    <span ng-show=\\\"vm.isEditing\\\"><input type=\\\"text\\\" maxlength=\\\"400\\\" ng-model=\\\"row.rowText\\\"></span>\\n                </td>\\n                <td class=\\\"alignRight\\\">\\n                    {{ row.quantity.toFixed(0) }}\\n                </td>\\n                <td ng-class=\\\"{ true: 'ca-test'}[vm.isTextInvalid(row.intrastatCode)]\\\">\\n                    <div uib-tooltip=\\\"{{ 'Intrastat måste matas in innan faktura kan skrivas ut' }}\\\" ng-if=\\\"!vm.isEditing && vm.isTextInvalid(row.intrastatCode)\\\" style=\\\"width:100%;\\\">\\n                        &nbsp;\\n                    </div>\\n                    <span ng-hide=\\\"vm.isEditing || vm.isTextInvalid(row.intrastatCode)\\\">{{ row.intrastatCode }}</span>\\n                    <span ng-show=\\\"vm.isEditing\\\"><input type=\\\"text\\\" maxlength=\\\"12\\\" ng-model=\\\"row.intrastatCode\\\"></span>\\n                </td>\\n                <td class=\\\"alignRight\\\">{{ row.quantity > 0 ? (row.invoiceAmountExVat / row.quantity).toFixed(2) : (0).toFixed(2) }}</td>\\n                <td class=\\\"alignRight\\\">{{ row.invoiceAmountExVat.toFixed(2) }}</td>\\n                <td class=\\\"alignRight\\\">\\n                    <span uib-tooltip=\\\"{{ row.vat.vatDescription }}\\\">\\n                        {{ row.quantity > 0 ? (row.vatAmount / row.quantity).toFixed(2) : (0).toFixed(2) }}\\n                    </span>\\n                </td>\\n                <td class=\\\"alignRight\\\">\\n                    <span uib-tooltip=\\\"{{ row.vat.vatDescription }}\\\">\\n                        {{ row.vatAmount.toFixed(2) }}\\n                    </span>\\n                </td>\\n                <td class=\\\"alignRight\\\" ng-class=\\\"{ true: 'ca-test'}[(!row.weight || row.weight <= 0)]\\\">\\n                    <div uib-tooltip=\\\"{{ 'Vikt måste matas in innan faktura kan skrivas ut' }}\\\" ng-if=\\\"!vm.isEditing && (!row.weight || row.weight <= 0)\\\" style=\\\"width:100%;\\\">\\n                        &nbsp;\\n                    </div>\\n                    <span ng-hide=\\\"vm.isEditing || (!row.weight || row.weight <= 0)\\\">\\n                        {{ row.quantity > 0 ? (row.weight / row.quantity).toFixed(0) : 0 }}\\n                    </span>\\n                    <span ng-show=\\\"vm.isEditing\\\"><input type=\\\"number\\\" ng-model=\\\"row.weight\\\" min=\\\"0\\\" step=\\\"1\\\"></span>\\n                </td>\\n                <td class=\\\"alignRight\\\">\\n                    {{ row.weight.toFixed(0) }}\\n                </td>\\n                <td ng-class=\\\"{ true: 'ca-test'}[vm.isTextInvalid(row.currencyCode)]\\\">\\n                    <div uib-tooltip=\\\"{{ 'Valutakod måste matas in innan faktura kan skrivas ut' }}\\\" ng-if=\\\"!vm.isEditing && vm.isTextInvalid(row.currencyCode)\\\" style=\\\"width:100%;\\\">\\n                        &nbsp;\\n                    </div>\\n                    <span ng-hide=\\\"vm.isEditing || vm.isTextInvalid(row.currencyCode)\\\">{{ row.currencyCode }}</span>\\n                    <span ng-show=\\\"vm.isEditing\\\"><input type=\\\"text\\\" maxlength=\\\"3\\\" ng-model=\\\"row.currencyCode\\\"></span>\\n                </td>\\n                <td ng-class=\\\"{ true: 'ca-test'}[vm.isTextInvalid(row.countryOfOriginCode)]\\\">\\n                    <div uib-tooltip=\\\"{{ 'Ursprungsland måste matas in innan faktura kan skrivas ut' }}\\\" ng-if=\\\"!vm.isEditing && vm.isTextInvalid(row.countryOfOriginCode)\\\" style=\\\"width:100%;\\\">\\n                        &nbsp;\\n                    </div>\\n                    <span ng-hide=\\\"vm.isEditing || vm.isTextInvalid(row.countryOfOriginCode)\\\">{{ row.countryOfOriginCode }}</span>\\n                    <span ng-show=\\\"vm.isEditing\\\"><input type=\\\"text\\\" maxlength=\\\"2\\\" ng-model=\\\"row.countryOfOriginCode\\\"></span>\\n                </td>\\n                <td>{{ row.dateCreated | date:'yyyy-MM-dd' }}</td>\\n            </tr>\\n            <tr class=\\\"greyBackground borderTop\\\">\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td class=\\\"alignRight\\\">{{ vm.getTotalCustomerinvoiceQuantity().toFixed(0) }}</td>\\n                <td>&nbsp;</td>\\n                <td class=\\\"alignRight\\\">{{ vm.getTotalCustomerinvoiceAmount().toFixed(2) }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.getTotalCustomerinvoiceTotalAmount().toFixed(2) }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.getTotalCustomerinvoiceVat().toFixed(2) }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.getTotalCustomerinvoiceTotalVat().toFixed(2) }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.getTotalCustomerinvoiceWeight().toFixed(0) }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.getTotalCustomerinvoiceTotalWeight().toFixed(0) }}</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"input-group m-b-xxs list-menu\\\">\\n    <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n    <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm.term\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n</div>\\n<div class=\\\"input-group m-b-xxs list-menu\\\">\\n    <div style=\\\"float: left; max-width:300px;\\\">\\n        <div>{{ 'customerinvoice.dateCreated' | translate }}:</div>\\n        <div style=\\\"width:49%; float:left;\\\">\\n            <wj-input-date\\n                value=\\\"vm.searchTerm.createdDateMin\\\"\\n                min-date=\\\"vm.createdMinStartDate\\\"\\n                max-date=\\\"vm.createdMinEndDate\\\"\\n                format=\\\"yyyy-MM-dd\\\"\\n                style=\\\"width:100%;\\\"\\n                initialized=\\\"vm.captureCreatedDate(s)\\\"\\n                valueChanged=\\\"vm.searchTermChange()\\\">\\n            </wj-input-date>\\n        </div>\\n        <div style=\\\"width:49%; float:left;\\\">\\n            <wj-input-date\\n                value=\\\"vm.searchTerm.createdDateMax\\\"\\n                min-date=\\\"vm.createdMaxStartDate\\\"\\n                max-date=\\\"vm.createdMaxEndDate\\\"\\n                format=\\\"yyyy-MM-dd\\\"\\n                style=\\\"width:100%;\\\"\\n                initialized=\\\"vm.captureCreatedDate(s)\\\"\\n                valueChanged=\\\"vm.searchTermChange()\\\">\\n            </wj-input-date>\\n        </div>\\n    </div>\\n    <div style=\\\"float:left; max-width:300px; margin-bottom:10px;\\\">\\n        <div>&nbsp;</div>\\n        <button ng-click=\\\"vm.resetFilters()\\\" class=\\\"btn btn-default\\\"> {{'common.resetFilters' | translate}} </button>\\n    </div>\\n</div>\\n\\n<div class=\\\"col-lg-12\\\">&nbsp;</div>\\n\\n<div class=\\\"wrapper b-t text-center\\\">\\n    <!-- <div style=\\\"float:left;width:200px\\\"><button ng-click=\\\"vm.goToCompleteInvoices()\\\" class=\\\"btn btn-default\\\"> {{'customerinvoice.goToCompleteInvoices' | translate}} </button></div> -->\\n    <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadCustomerInvoiceRows()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n</div>\\n\\n<div class=\\\"col-lg-12\\\">\\n    <table class=\\\"table table-condensed\\\">\\n        <thead>\\n            <th>{{'customerinvoice.invoiceNumber' | translate}}</th>\\n            <th>{{'customerinvoice.invoiceType' | translate}}</th>\\n            <th>{{'customerinvoice.invoiceStatus' | translate}}</th>\\n            <th>{{'customerinvoice.customer' | translate}}</th>\\n            <th>{{'customerinvoice.location' | translate}}</th>\\n            <th>{{'customerinvoice.invoicedDate' | translate}}</th>\\n            <th>{{'customerinvoice.dueDate' | translate}}</th>\\n            <th>{{'customerinvoice.createdDate' | translate}}</th>\\n        </thead>\\n        <tbody ng-repeat=\\\"invoice in vm.customerInvoices\\\">\\n            <tr ng-class=\\\"{ caRowSelected: invoice.id === vm.selectedInvoice.id }\\\">\\n                <td><a ng-click=\\\"vm.selectInvoice(invoice.id)\\\" class=\\\"ca-celllink\\\">{{invoice.invoiceNumber}}</a></td>\\n                <td>{{vm.getTypeTranslation(invoice.invoiceType.name)}}</td>\\n                <td>{{vm.getStatusTranslation(invoice.invoiceStatus.invoiceStatusName)}}</td>\\n                <td>\\n                    {{invoice.customer.firstName + ' ' + invoice.customer.lastName}}\\n                </td>\\n                <td>{{invoice.location.locationNumber + ' ' + invoice.location.locationName}}</td>\\n                <td>{{invoice.invoicedDate | date:'yyyy-MM-dd'}}</td>\\n                <td>{{invoice.dueDate | date:'yyyy-MM-dd'}}</td>\\n                <td>{{invoice.createdDate | date:'yyyy-MM-dd'}}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"invoiceSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div style=\\\"float:left; max-width: 33%;\\\">\\n                        <span ng-disabled=\\\"!vm.selectedInvoiceRow || !vm.selectedInvoiceRow.id\\\" ng-click=\\\"vm.toggleSearchFields()\\\" class=\\\"hidden-folded pull-right text-muted ng-scope\\\">\\n                            <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"!vm.showSearchFields\\\"> {{'customerinvoice.showSearchFields' | translate}}</span>\\n                            <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"vm.showSearchFields\\\"> {{'customerinvoice.hideSearchFields' | translate}}</span>\\n                        </span>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\" style=\\\"clear:both; height: 1px;\\\">&nbsp;</div>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showSearchFields\\\">\\n                        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm.term\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n                        </div>\\n                        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                            <div style=\\\"float: left; max-width:300px;\\\">\\n                                <div>{{ 'customerinvoice.dateCreated' | translate }}:</div>\\n                                <div style=\\\"width:49%; float:left;\\\">\\n                                    <wj-input-date\\n                                        value=\\\"vm.searchTerm.createdDateMin\\\"\\n                                        min-date=\\\"vm.createdMinStartDate\\\"\\n                                        max-date=\\\"vm.createdMinEndDate\\\"\\n                                        format=\\\"yyyy-MM-dd\\\"\\n                                        style=\\\"width:100%;\\\"\\n                                        initialized=\\\"vm.captureCreatedDate(s)\\\"\\n                                        valueChanged=\\\"vm.searchTermChange()\\\">\\n                                    </wj-input-date>\\n                                </div>\\n                                <div style=\\\"width:49%; float:left;\\\">\\n                                    <wj-input-date\\n                                        value=\\\"vm.searchTerm.createdDateMax\\\"\\n                                        min-date=\\\"vm.createdMaxStartDate\\\"\\n                                        max-date=\\\"vm.createdMaxEndDate\\\"\\n                                        format=\\\"yyyy-MM-dd\\\"\\n                                        style=\\\"width:100%;\\\"\\n                                        initialized=\\\"vm.captureCreatedDate(s)\\\"\\n                                        valueChanged=\\\"vm.searchTermChange()\\\">\\n                                    </wj-input-date>\\n                                </div>\\n                            </div>\\n                            <div style=\\\"float:left; max-width:300px; margin-bottom:10px;\\\">\\n                                <div>&nbsp;</div>\\n                                <button ng-click=\\\"vm.resetFilters()\\\" class=\\\"btn btn-default\\\"> {{'common.resetFilters' | translate}} </button>\\n                            </div>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n\\n                        <div class=\\\"wrapper b-t text-center\\\">\\n                            <div style=\\\"float:left;width:200px\\\"><button ng-click=\\\"vm.goToCompleteInvoices()\\\" class=\\\"btn btn-default\\\"> {{'customerinvoice.goToCompleteInvoices' | translate}} </button></div>\\n                            <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadCustomerInvoiceRows()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n                        </div>\\n                    </div>\\n                    \\n                    <div>\\n                        <div class=\\\"col-lg-12\\\">\\n                            <table class=\\\"table table-condensed\\\">\\n                                <thead>\\n                                    <th>{{'customerinvoice.invoiceNumber' | translate}}</th>\\n                                    <th>{{'customerinvoice.dateCreated' | translate}}</th>\\n                                    <th>{{'customerinvoice.articleVariant' | translate}}</th>\\n                                    <th>{{'customerinvoice.location' | translate}}</th>\\n                                    <th>{{'customerinvoice.quantity' | translate}}</th>\\n                                    <th>{{'customerinvoice.invoiceAmountExVat' | translate}}</th>\\n                                    <th>{{'customerinvoice.vatAmount' | translate}}</th>\\n                                    <th>{{'customerinvoice.weight' | translate}}</th>\\n                                    <th>{{'customerinvoice.countryOfOrigin' | translate}}</th>\\n                                    <th>{{'customerinvoice.intrastat' | translate}}</th>\\n                                    <th>{{'customerinvoice.currency' | translate}}</th>\\n                                </thead>\\n                                <tbody ng-repeat=\\\"invoiceRow in vm.customerInvoiceRows\\\">\\n                                    <tr ng-class=\\\"{ caRowSelected: invoiceRow.id === vm.selectedInvoiceRow.id }\\\">\\n                                        <td><a ng-click=\\\"vm.selectInvoiceRow(invoiceRow.id)\\\" class=\\\"ca-celllink\\\">{{ invoiceRow.invoice.invoiceNumber }}</a></td>\\n                                        <td>{{ invoiceRow.dateCreated | date: 'yyyy-MM-dd' }}</td>\\n                                        <td>{{ invoiceRow.articleVariant.externalId }} - {{ invoiceRow.rowText }}</td>\\n                                        <td>{{ invoiceRow.location.locationName }}</td>\\n                                        <td>{{ invoiceRow.quantity }}</td>\\n                                        <td>{{ invoiceRow.invoiceAmountExVat.toFixed(2) }} {{ invoiceRow.currencyCode }}</td>\\n                                        <td>{{ invoiceRow.vatAmount.toFixed(2) }} {{ invoiceRow.currencyCode }}</td>\\n                                        <td>{{ invoiceRow.weight.toFixed(2) }}</td>\\n                                        <td>{{ invoiceRow.countryOfOriginCode }}</td>\\n                                        <td>{{ invoiceRow.intrastatCode }}</td>\\n                                        <td>{{ invoiceRow.currencyCode }}</td>\\n                                    </tr>\\n                                </tbody>\\n                            </table>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"invoiceSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div style=\\\"float:left; max-width: 33%;\\\">\\n                        <span ng-disabled=\\\"!vm.selectedInvoice || !vm.selectedInvoice.id\\\" ng-click=\\\"vm.toggleSearchFields()\\\" class=\\\"hidden-folded pull-right text-muted ng-scope\\\">\\n                            <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"!vm.showSearchFields\\\"> {{'customerinvoice.showSearchFields' | translate}}</span>\\n                            <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"vm.showSearchFields\\\"> {{'customerinvoice.hideSearchFields' | translate}}</span>\\n                        </span>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\" style=\\\"clear:both; height: 1px;\\\">&nbsp;</div>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showSearchFields\\\">\\n                        <ca-customer-invoice-search search-term=\\\"vm.searchTerm\\\" on-customer-invoice-selected=\\\"vm.transitionToState(invoiceId)\\\"></ca-customer-invoice-search>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div>&nbsp;</div>\\n                        <!-- Panel for showing selected invoice goes here -->\\n                        <ca-customer-invoice\\n                            ng-if=\\\"vm.selectedInvoice && vm.selectedInvoice.id\\\"\\n                            invoice-id=\\\"vm.selectedInvoice.id\\\"\\n                            ></ca-customer-invoice>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n\\n    <div ui-view=\\\"\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\">\\n    <style>\\n        div.ca-hover-background:hover {\\n            background-color: #f6f6f6;\\n        }\\n    </style>\\n    <div style=\\\"border-bottom: 1px solid darkgray\\\">\\n        <h3>{{'common.order' | translate}}: {{vm.customerOrder.orderNumber}} ({{vm.customerOrder.externalOrderNumber}})</h3>\\n\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\" style=\\\"text-align: left; width: 100%;\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.cancelOrder()\\\" ng-disabled=\\\"!vm.canAccess('customerOrder', 'delete') || !vm.canCancelOrder()\\\">{{'customerorder.cancelOrder' | translate}}</button>\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.printDeliveryNote()\\\">{{'customerorder.deliveryNote' | translate}}</button>\\n                <span ng-click=\\\"vm.toggleOrderHead()\\\" style=\\\"margin-left:5px\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"vm.showOrderHead\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"vm.showOrderHead\\\"> {{'customerorder.hideOrderHead' | translate}}</span>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"!vm.showOrderHead\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"!vm.showOrderHead\\\"> {{'customerorder.showOrderHead' | translate}}</span>\\n                </span>\\n            </span>\\n        </div>\\n    </div>\\n\\n    <div ng-show=\\\"vm.showOrderHead\\\">\\n        <!-- Customer order head -->\\n        <div class=\\\"ca-hover-background\\\" style=\\\"float:left; max-width:33%;\\\" >\\n            <div>{{'customerorder.orderHead' | translate}}:</div>\\n            <table class=\\\"table table-condensed\\\">\\n                <tbody>\\n                    <tr>\\n                        <td>{{'customerorder.orderType' | translate}}</td>\\n                        <td>{{vm.getOrderTypeTranslation(vm.customerOrder.orderType)}}</td>\\n                        <td>{{'customerorder.orderStatus' | translate}}</td>\\n                        <td style=\\\"font-weight: bold;\\\">{{vm.getStatusTranslation(vm.customerOrder.status)}}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerorder.externalordernumber' | translate}}</td>\\n                        <td>{{vm.customerOrder.externalOrderNumber}}</td>\\n                        <td>{{'customerorder.currency' | translate}}</td>\\n                        <td>{{vm.customerOrder.currency.code}}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerorder.fromlocation' | translate}}</td>\\n                        <td>{{vm.customerOrder.fromLocation.locationNumber + ' ' + vm.customerOrder.fromLocation.locationName}}</td>\\n                        <td>{{'customerorder.createdDate' | translate}}</td>\\n                        <td>{{vm.customerOrder.createdDate | date:'yyyy-MM-dd HH:mm:ss'}}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerorder.deliveryTerms' | translate}}</td>\\n                        <td>{{ vm.customerOrder.deliveryTerms }}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerorder.paymentTerms' | translate}}</td>\\n                        <td>{{ vm.customerOrder.paymentTerms }}</td>\\n                    </tr>\\n                    <tr>\\n                        <td>{{'customerorder.shippingMethod' | translate}}</td>\\n                        <td ng-if=\\\"!vm.showDeliveryMethod()\\\">{{ vm.customerOrder.shippingMethod }}</td>\\n                        <td ng-if=\\\"vm.showDeliveryMethod()\\\">{{ vm.customerOrder.deliveryMethod }}</td>\\n                    </tr>\\n                    <!-- <tr> -->\\n                        <!-- <td>{{'customerorder.warehouse' | translate}}</td> -->\\n                        <!-- <td>{{vm.customerOrder.warehouse.locationNumber + ' ' + vm.customerOrder.warehouse.locationName}}</td> -->\\n                        <!-- <td>{{'customerorder.modifiedDate' | translate}}</td> -->\\n                        <!-- <td>{{vm.customerOrder.modifiedDate | date:'yyyy-MM-dd'}}</td> -->\\n                    <!-- </tr> -->\\n                    <tr>\\n                        <td>{{'customerorder.orderNote' | translate}}</td>\\n                        <td colspan=\\\"3\\\">\\n                            <span ng-show=\\\"vm.customerOrder.orderNote.length > 50\\\" tooltip-placement=\\\"right\\\" uib-tooltip=\\\"{{'customerorder.orderNote' | translate}}: {{vm.customerOrder.orderNote}}\\\">\\n                                {{vm.getEllipsis(vm.customerOrder.orderNote, 50)}}\\n                            </span>\\n                            <span ng-show=\\\"vm.customerOrder.orderNote.length <= 50\\\">\\n                                {{vm.customerOrder.orderNote}}\\n                            </span>\\n                        </td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n\\n        <!-- Customer information -->\\n        <div class=\\\"ca-hover-background\\\" style=\\\"float:left; min-width:50%; max-width:75%; margin-left:30px;\\\">\\n            <div>{{'customerorder.customer' | translate}}:</div>\\n            <div>\\n                <table class=\\\"table table-condensed\\\">\\n                    <tbody>\\n                        <tr>\\n                            <td>{{'customerorder.customerId' | translate}}:</td>\\n                            <td>{{vm.customerOrder.customer.id}}</td>\\n                            <td rowspan=\\\"4\\\">\\n                                <table class=\\\"table table-condensed\\\" style=\\\"float:left; max-width:49%;\\\">\\n                                    <tr ng-repeat=\\\"info in vm.customerOrder.customer.contactInfo\\\">\\n                                        <td>{{info.contactInfoType}}</td>\\n                                        <td style=\\\"font-weight: bold;\\\">{{info.value}}</td>\\n                                    </tr>\\n                                </table>\\n                            </td>\\n                            <td rowspan=\\\"4\\\" ng-if=\\\"vm.customerOrder.deliveryAddress\\\">\\n                                <div>{{'customerorder.deliveryAddress' | translate}}:</div>\\n                                <div style=\\\"margin-left:20px;\\\">\\n                                    {{vm.customerOrder.deliveryAddress.addressLine1}}\\n                                    <span ng-if=\\\"vm.customerOrder.deliveryAddress.addressLine2\\\"><br>{{vm.customerOrder.deliveryAddress.addressLine2}}</span>\\n                                    <span ng-if=\\\"vm.customerOrder.deliveryAddress.addressLine3\\\"><br>{{vm.customerOrder.deliveryAddress.addressLine3}}</span>\\n                                    <br>{{vm.customerOrder.deliveryAddress.zipCode}} {{vm.customerOrder.deliveryAddress.city}}\\n                                    <br>{{vm.customerOrder.deliveryAddress.country}}\\n                                </div>\\n                            </td>\\n                            <td rowspan=\\\"4\\\" ng-if=\\\"vm.customerOrder.invoiceAddress && vm.customerOrder.deliveryAddress.addressLine1 !== vm.customerOrder.invoiceAddress.addressLine1\\\">\\n                                <div>{{'customerorder.invoiceAddress' | translate}}:</div>\\n                                <div style=\\\"margin-left:20px;\\\">\\n                                    {{vm.customerOrder.invoiceAddress.addressLine1}}\\n                                    <span ng-if=\\\"vm.customerOrder.invoiceAddress.addressLine2\\\"><br>{{vm.customerOrder.invoiceAddress.addressLine2}}</span>\\n                                    <span ng-if=\\\"vm.customerOrder.invoiceAddress.addressLine3\\\"><br>{{vm.customerOrder.invoiceAddress.addressLine3}}</span>\\n                                    <br>{{vm.customerOrder.invoiceAddress.zipCode}} {{vm.customerOrder.invoiceAddress.city}}\\n                                    <br>{{vm.customerOrder.invoiceAddress.country}}\\n                                </div>\\n                            </td>\\n                        </tr>\\n                        <tr>\\n                            <td>{{'customerorder.customerKind' | translate}}:</td>\\n                            <td>{{vm.customerOrder.customerKind}}</td>\\n                        </tr>\\n                        <tr>\\n                            <td>{{'customerorder.externalCustomerId' | translate}}:</td>\\n                            <td>{{vm.customerOrder.customerExternalCustomerId}}</td>\\n                        </tr>\\n                        <tr>\\n                            <td>{{'customerorder.customerName' | translate}}:</td>\\n                            <td>{{vm.customerOrder.customerFirstName}} {{vm.customerOrder.customerLastName}}</td>\\n                        </tr>\\n                        <tr>\\n                            <td>{{'customerorder.customerPhone' | translate}}:</td>\\n                            <td>{{vm.customerOrder.customerPhone}}</td>\\n                        </tr>\\n                        <tr ng-if=\\\"vm.customerOrder.customer.loyalityNumber > 0\\\">\\n                            <td>{{'customerorder.loyaltyNumber' | translate}}:</td>\\n                            <td>{{vm.customerOrder.customer.loyalityNumber}}</td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </div>\\n        </div>\\n        <div style=\\\"clear:both; height: 1px\\\">&nbsp;</div>\\n    </div>\\n\\n    <!-- Filtering/search section -->\\n    <ul class=\\\"nav nav-tabs\\\">\\n        <li ng-class=\\\"{'active' : vm.tabSelection.orderRows}\\\"><a ng-click=\\\"vm.changeToOrderRowsTab()\\\">{{'customerorder.orderRows' | translate}}</a></li>\\n        <li ng-class=\\\"{'active' : vm.tabSelection.orderPayments}\\\" ng-if=\\\"vm.customerOrder.payments\\\"><a ng-click=\\\"vm.changeToOrderPaymentsTab()\\\">{{'customerorder.payments' | translate}}</a></li>\\n        <li ng-class=\\\"{'active' : vm.tabSelection.orderDeliveries}\\\" ng-if=\\\"vm.customerOrder.deliveries && vm.customerOrder.deliveries.length > 0\\\"><a ng-click=\\\"vm.changeToOrderDeliveriesTab()\\\">{{'customerorder.deliveries' | translate}}</a></li>\\n        <li ng-class=\\\"{'active' : vm.tabSelection.orderRefunds}\\\" ng-if=\\\"vm.customerOrder.refunds && vm.customerOrder.refunds.length > 0\\\"><a ng-click=\\\"vm.changeToOrderRefundsTab()\\\">{{'customerorder.refunds' | translate}}</a></li>\\n    </ul>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.orderRows\\\">\\n        <!-- Customer order rows -->\\n        <ca-customer-order-rows\\n            ng-show=\\\"vm.customerOrder.orderRows.length > 0\\\"\\n            customer-order=\\\"vm.customerOrder\\\"\\n        ></ca-customer-order-rows>\\n    </div>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.orderPayments\\\">\\n        <!-- Customer order rows -->\\n        <ca-customer-order-payments\\n            ng-show=\\\"vm.customerOrder.payments.length > 0\\\"\\n            customer-order=\\\"vm.customerOrder\\\"\\n        ></ca-customer-order-payments>\\n    </div>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.orderDeliveries\\\">\\n        <!-- Customer order deliveries -->\\n        <ca-customer-order-deliveries\\n            customer-order=\\\"vm.customerOrder\\\"\\n        ></ca-customer-order-deliveries>\\n    </div>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.orderRefunds\\\">\\n        <!-- Customer order deliveries -->\\n        <ca-customer-order-refunds\\n            customer-order=\\\"vm.customerOrder\\\"\\n        ></ca-customer-order-refunds>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <!-- Delivery head -->\\n    <table class=\\\"table table-condensed\\\">\\n    <thead>\\n        <th style=\\\"width:100px\\\">&nbsp;</th>\\n        <th>{{'customerorder.deliveryNumber' | translate}}</th>\\n        <th>{{'customerorder.orderStatus' | translate}}</th>\\n        <th>{{'customerorder.warehouse' | translate}}</th>\\n        <th>{{'customerorder.plannedDeliveryDate' | translate}}</th>\\n        <th>{{'customerorder.actualDeliveryDate' | translate}}</th>\\n    </thead>\\n    <tbody ng-repeat=\\\"delivery in vm.customerOrder.deliveries\\\">\\n        <tr>\\n            <td ng-click=\\\"delivery.showRows = !delivery.showRows\\\">\\n                <span class=\\\"hidden-folded pull-right text-muted ng-scope\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!delivery.showRows\\\" uib-tooltip=\\\"{{'customerorder.showDeliveryRows' | translate}}\\\"></i>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"delivery.showRows\\\" uib-tooltip=\\\"{{'customerorder.hideDeliveryRows' | translate}}\\\"></i>\\n                </span>\\n            </td>\\n            <td>{{delivery.deliveryNumber}}</td>\\n            <td>{{vm.getDeliveryStatusTranslation(delivery.status)}}</td>\\n            <td>{{delivery.warehouse}}</td>\\n            <td>{{delivery.plannedDeliveryDate | date:'yyyy-MM-dd'}}</td>\\n            <td>{{delivery.actualDeliveryDate | date:'yyyy-MM-dd'}}</td>\\n        </tr>\\n        <tr ng-show=\\\"delivery.showRows\\\">\\n            <td colspan=\\\"6\\\">\\n                <!-- Delivery Rows -->\\n                <table class=\\\"table table-condensed\\\">\\n                    <thead>\\n                        <th>{{'customerorder.orderRowNumber' | translate}}</th>\\n                        <th>{{'customerorder.deliveryStatus' | translate}}</th>\\n                        <th>{{'customerorder.articleVariantNumber' | translate}}</th>\\n                        <th>{{'customerorder.articleVariantName' | translate}}</th>\\n                        <th>&nbsp;</th>\\n                        <th>&nbsp;</th>\\n                        <th>{{'customerorder.orderedQuantity' | translate}}</th>\\n                        <th>{{'customerorder.deliveredQuantity' | translate}}</th>\\n                        <th>{{'customerorder.salesPrice' | translate}}</th>\\n                        <th>{{'customerorder.discount' | translate}}</th>\\n                        <th>{{'customerorder.vat' | translate}}</th>\\n                        <th>{{'customerorder.total' | translate}}</th>\\n                    </thead>\\n                    <tbody ng-repeat=\\\"deliveryRow in delivery.deliveryRows\\\">\\n                        <tr>\\n                            <td>{{deliveryRow.orderRow.orderRowNumber}}</td>\\n                            <td>{{vm.getDeliveryStatusTranslation(deliveryRow.status)}}\\n                            <td>\\n                                <span uib-tooltip=\\\"{{'customerorder.alternativeArticleNumber' | translate}}: {{row.articleVariant.article.alternativeArticleNumber}}\\\">\\n                                    {{deliveryRow.orderRow.articleVariant.article.articleNumber}}\\n                                </span>\\n                            </td>\\n                            <td>\\n                                <span uib-tooltip=\\\"{{row.articleVariant.article.descriptionLong}}\\\">\\n                                    {{deliveryRow.orderRow.articleVariant.article.articleName}}\\n                                </span>\\n                            </td>\\n                            <td>\\n                                {{deliveryRow.orderRow.articleVariant.variantDetail1.variantDetailName}}\\n                            </td>\\n                            <td>\\n                                {{deliveryRow.orderRow.articleVariant.variantDetail2.variantDetailName}}\\n                            </td>\\n                            <td>{{deliveryRow.orderedQuantity}}</td>\\n                            <td>{{deliveryRow.deliveredQuantity}}</td>\\n                            <td>{{deliveryRow.orderRow.salesPrice.toFixed(2)}}</td>\\n                            <td>{{deliveryRow.orderRow.discount.toFixed(2)}}</td>\\n                            <td>\\n                                <span uib-tooltip=\\\"{{row.vat.vatDescription}}\\\">\\n                                    {{(deliveryRow.orderRow.vatAmount).toFixed(2)}}\\n                                </span>\\n                            </td>\\n                            <td>\\n                                {{ ((deliveryRow.orderRow.salesPrice * deliveryRow.deliveredQuantity) - (deliveryRow.orderRow.discount * deliveryRow.deliveredQuantity)).toFixed(2) }}\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                    <tbody>\\n                        <tr>\\n                            <td colspan=\\\"6\\\">&nbsp;</td>\\n                            <td>{{ vm.getOrderedQuantitySum(delivery) }}</td>\\n                            <td>{{ vm.getDeliveredQuantitySum(delivery) }}</td>\\n                            <td colspan=\\\"3\\\">&nbsp;</td>\\n                            <td>{{ vm.getDeliveryTotal(delivery).toFixed(2) }}</td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </td></tr>\\n        </tbody>\\n    </table>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <!-- Payment head -->\\n    <table class=\\\"table table-condensed\\\">\\n        <thead>\\n            <th style=\\\"width:100px\\\">&nbsp;</th>\\n            <th>{{ 'customerorder.payments.transactionTypeName' | translate }}</th>\\n            <th>{{ 'customerorder.payments.transactionCode' | translate }}</th>\\n            <th>{{ 'customerorder.payments.paymentReference' | translate }}</th>\\n            <th>{{ 'customerorder.currency' | translate }}</th>\\n            <th>{{'customerorder.totalPaymentAmount' | translate}}</th>\\n        </thead>\\n        <tbody ng-repeat=\\\"payment in vm.customerOrder.payments\\\">\\n            <tr>\\n                <td style=\\\"width:100px\\\">&nbsp;</td>\\n                <td>{{payment.paymentTransactionType.paymentTransactionTypeName}}</td>\\n                <td>{{payment.paymentTransactionType.paymentTransactionCode}}</td>\\n                <td>{{payment.paymentReference}}</td>\\n                <td>{{payment.currency.code}}</td>\\n                <td>{{payment.receivedAmount}}</td>\\n            </tr>\\n        </tbody>\\n        <tbody ng-if=\\\"vm.customerOrder.payments && vm.customerOrder.payments.length > 0\\\">\\n            <tr>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>{{ vm.customerOrder.totalPaymentAmount }}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <!-- Delivery head -->\\n    <table class=\\\"table table-condensed\\\">\\n        <thead>\\n            <th style=\\\"width:100px\\\">&nbsp;</th>\\n            <th>{{'customerorder.refunds.refundDate' | translate}}</th>\\n            <th>{{'customerorder.warehouse' | translate}}</th>\\n            <th>{{ 'customerorder.refunds.refundTotalQuantity' | translate }}</th>\\n            <th>{{ 'customerorder.refunds.refundTotalAmount' | translate }}</th>\\n        </thead>\\n        <tbody ng-repeat=\\\"refund in vm.customerOrder.refunds\\\">\\n            <tr>\\n                <td ng-click=\\\"refund.showRows = !refund.showRows\\\">\\n                    <span class=\\\"hidden-folded pull-right text-muted ng-scope\\\">\\n                        <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!refund.showRows\\\"\\n                            uib-tooltip=\\\"{{'customerorder.showRerundRows' | translate}}\\\"></i>\\n                        <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"refund.showRows\\\"\\n                            uib-tooltip=\\\"{{'customerorder.hideRefundRows' | translate}}\\\"></i>\\n                    </span>\\n                </td>\\n                <td>{{refund.date | date:'yyyy-MM-dd  HH:mm:ss'}}</td>\\n                <td>{{refund.warehouse}}</td>\\n                <td>{{ vm.getTotalRefundQuantity(refund) }}</td>\\n                <td>{{ vm.getTotalRefundAmount(refund).toFixed(2) }}</td>\\n            </tr>\\n            <tr ng-show=\\\"refund.showRows\\\">\\n                <td colspan=\\\"5\\\">\\n                    <!-- Refund Rows -->\\n                    <table class=\\\"table table-condensed\\\">\\n                        <thead>\\n                            <th>{{'customerorder.articleVariantNumber' | translate}}</th>\\n                            <th>{{'customerorder.articleVariantName' | translate}}</th>\\n                            <th>&nbsp;</th>\\n                            <th>&nbsp;</th>\\n                            <th>{{'customerorder.quantity' | translate}}</th>\\n                            <th>{{'customerorder.total' | translate}}</th>\\n                            <th>{{'customerorder.refunds.affectsStock' | translate}}</th>\\n                        </thead>\\n                        <tbody ng-repeat=\\\"refundRow in refund.rows\\\">\\n                            <tr>\\n                                <td>{{refundRow.articleNumber}}</td>\\n                                <td>{{refundRow.name}}</td>\\n                                <td>{{refundRow.attribute1}}</td>\\n                                <td>{{refundRow.attribute2}}</td>\\n                                <td>{{refundRow.quantity}}</td>\\n                                <td>{{refundRow.amount.toFixed(2)}}</td>\\n                                <td><input type=\\\"checkbox\\\" ng-model=\\\"refundRow.restock\\\" ng-disabled=\\\"true\\\" /></td>\\n                            </tr>\\n                        </tbody>\\n                    </table>\\n                </td>\\n            </tr>\\n            \\n        </tbody>\\n        <tbody ng-if=\\\"vm.customerOrder.refunds && vm.customerOrder.refunds.length > 0\\\">\\n            <tr>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>{{ vm.getTotalQuantityOfAllRefunds() }}</td>\\n                <td>{{ vm.getTotalAmountOfAllRefunds().toFixed(2) }}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <table class=\\\"table table-condensed\\\">\\n        <thead>\\n            <th>{{'customerorder.orderRowNumber' | translate}}</th>\\n            <th>{{'customerorder.articleVariantNumber' | translate}}</th>\\n            <th>{{'customerorder.articleVariantName' | translate}}</th>\\n            <th ng-if=\\\"vm.customerOrder.shouldShowRowNote\\\">{{'customerorder.orderNote' | translate}}</th>\\n            <th>&nbsp;</th>\\n            <th>&nbsp;</th>\\n            <th>{{'customerorder.quantity' | translate}}</th>\\n            <th>{{'customerorder.salesPrice' | translate}}</th>\\n            <th ng-show=\\\"vm.showResellerPrice()\\\">{{'customerorder.resellerSalesPrice' | translate}} </th>\\n            <th>{{'customerorder.discount' | translate}}</th>\\n            <th>{{'customerorder.vat' | translate}}</th>\\n            <th ng-show=\\\"vm.showResellerPrice()\\\">{{'customerorder.resellerVatAmount' | translate}}</th>\\n            <th>{{'customerorder.total' | translate}}</th>\\n        </thead>\\n        <tbody ng-repeat=\\\"row in vm.customerOrder.orderRows\\\">\\n            <tr>\\n                <td>{{row.orderRowNumber}}</td>\\n                <td>\\n                    <span uib-tooltip=\\\"{{'customerorder.alternativeArticleNumber' | translate}}: {{row.articleVariant.article.alternativeArticleNumber}}\\\">\\n                        {{row.articleVariant.externalId}}\\n                    </span>\\n                </td>\\n                <td>\\n                    <span uib-tooltip=\\\"{{row.articleVariant.article.descriptionLong}}\\\">\\n                        {{row.articleVariant.article.articleName}}\\n                    </span>\\n                </td>\\n                <td ng-if=\\\"vm.customerOrder.shouldShowRowNote\\\">{{row.note}}</td>\\n                <td>{{row.articleVariant.variantDetail1.variantDetailName}}</td>\\n                <td>{{row.articleVariant.variantDetail2.variantDetailName}}</td>\\n                <td>{{row.quantity}}</td>\\n                <td>{{row.salesPrice.toFixed(2)}}</td>\\n                <td ng-show=\\\"vm.showResellerPrice()\\\">{{row.resellerSalesPrice.toFixed(2)}}</td>\\n                <td>{{row.discount.toFixed(2)}}</td>\\n                <td>\\n                    <span uib-tooltip=\\\"{{row.vat.vatDescription}}\\\">\\n                        {{(row.vatAmount).toFixed(2)}}\\n                    </span>\\n                </td>\\n                <td ng-show=\\\"vm.showResellerPrice()\\\">{{row.resellerVatAmount.toFixed(2)}}</td>\\n                <td>\\n                    {{ (row.salesPrice * row.quantity).toFixed(2) }}\\n                </td>\\n            </tr>\\n        </tbody>\\n        <tbody>\\n            <tr>\\n                <td colspan=\\\"5\\\">&nbsp;</td>\\n                <td>{{ vm.getOrderRowQuantitySum(vm.customerOrder.orderRows) }}</td>\\n                <td colspan=\\\"3\\\">&nbsp;</td>\\n                <td>{{ vm.getOrderRowTotalSum(vm.customerOrder.orderRows).toFixed(2) }}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\">&nbsp;</div>\\n<div class=\\\"col-lg-12 m-t b-r b-b b-l b-t\\\" style=\\\"background-color: whitesmoke; padding-top:12px; padding-bottom:12px;\\\">\\n    <table class=\\\"col-lg-3 m-r\\\">\\n        <tr class=\\\"b-b\\\">\\n            <th>{{'common.search' | translate}}</th>\\n        </tr>\\n        <tr class=\\\"b-b\\\">\\n            <td>\\n                <div class=\\\"input-group m-b-xxs list-menu\\\" style=\\\"float: left; background-color: white;\\\">\\n                    <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                    <input \\n                        ng-hide=\\\"vm.searchTerm.onlyOrderNumber\\\"\\n                        type=\\\"text\\\" \\n                        class=\\\"form-control input-sm no-border no-bg text-md\\\" \\n                        ng-model=\\\"vm.searchTerm.term\\\" \\n                        ng-change=\\\"vm.searchTermChangeDebounced()\\\"\\n                        placeholder=\\\"{{'common.search' | translate}}\\\"\\n                        ng-keydown=\\\"vm.flushDebouncedIfEnterKey($event.keyCode)\\\">\\n                    <input \\n                        ng-show=\\\"vm.searchTerm.onlyOrderNumber\\\"\\n                        type=\\\"text\\\" \\n                        class=\\\"form-control input-sm no-border no-bg text-md\\\" \\n                        ng-model=\\\"vm.searchTerm.term\\\" \\n                        ng-change=\\\"vm.searchTermChangeDebounced()\\\"\\n                        placeholder=\\\"{{'common.search' | translate}} {{'customerorder.externalordernumber' | translate}}\\\"\\n                        ng-keydown=\\\"vm.flushDebouncedIfEnterKey($event.keyCode)\\\">\\n                </div>\\n            </td>\\n        </tr>\\n        <tr>\\n            <th>\\n                <div style=\\\"font-size:12px; margin-right:6px\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.searchTerm.onlyOrderNumber\\\" ng-change=\\\"vm.searchTermChange()\\\" checked>&ensp;{{'customerorder.onlyexternalordernumber' | translate}}\\n                </div>\\n            </th>\\n        </tr>\\n    </table>\\n    <table class=\\\"col-lg-3 m-l m-r\\\">\\n        <tr class=\\\"b-b\\\">\\n            <th colspan=\\\"3\\\">{{'common.filter' | translate}} {{'customerorder.orderStatus' | translate}}</th>\\n        </tr>\\n        <tr class=\\\"b-b\\\">\\n            <td colspan=\\\"3\\\">\\n                <div style=\\\"font-size:12px; margin-right:6px\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterAll\\\" ng-change=\\\"vm.filterAllChanged()\\\" checked>&ensp;{{'common.all' | translate}}\\n                </div>\\n            </td>\\n        </tr>\\n        <tr>\\n            <td>\\n                <div style=\\\"font-size:12px; margin-right:6px\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterCreated\\\" ng-change=\\\"vm.searchTermChange()\\\" checked>&ensp;{{'customerorder.createdDate' | translate}}\\n                </div>\\n                <div style=\\\"font-size:12px; margin-right:6px\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterPending\\\" ng-change=\\\"vm.searchTermChange()\\\" checked>&ensp;{{'customerorder.statusPending' | translate}}\\n                </div>\\n            </td>\\n            <td>\\n                <div style=\\\"font-size:12px; margin-right:6px\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterDelivered\\\" ng-change=\\\"vm.searchTermChange()\\\" checked>&ensp;{{'customerorder.delivered' | translate}}\\n                </div>\\n                <div style=\\\"font-size:12px; margin-right:6px\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterRested\\\" ng-change=\\\"vm.searchTermChange()\\\" checked>&ensp;{{'customerorder.rested' | translate}}\\n                </div>\\n            </td>\\n            <td>\\n                <div style=\\\"font-size:12px; margin-right:6px\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterPayed\\\" ng-change=\\\"vm.searchTermChange()\\\" checked>&ensp;{{'customerorder.payed' | translate}}\\n                </div>\\n                <div style=\\\"font-size:12px; margin-right:6px\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterCancelled\\\" ng-change=\\\"vm.searchTermChange()\\\" checked>&ensp;{{'customerorder.cancelledPlural' | translate}}\\n                </div>\\n            </td>\\n        </tr>\\n    </table>\\n    <table class=\\\"col-lg-1 m-l\\\">\\n        <tr class=\\\"b-b\\\">\\n            <th>{{'common.filter' | translate}} {{'customerorder.fromlocation' | translate}}</th>\\n        </tr>\\n        <tr>\\n            <td><ca-singleselect model=\\\"vm.searchTerm.selectedFromLocation\\\" choices=\\\"vm.locations\\\" order-by=\\\"'locationName'\\\" item-renderer=\\\"['locationName']\\\" class=\\\"btn\\\" /></td>\\n        </tr>\\n    </table>\\n</div>\\n\\n<div class=\\\"col-lg-12 b-b\\\">\\n    <div class=\\\"wrapper text-center\\\">\\n        <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadCustomerOrders()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n    </div>\\n    <div class=\\\"col-lg-12\\\">\\n        <table class=\\\"table table-condensed\\\">\\n            <thead>\\n                <tr class=\\\"cstmrordr-th\\\">\\n                    <th style=\\\"width:14%\\\">{{'customerorder.externalordernumber' | translate}}</th>\\n                    <th style=\\\"width:9%\\\">{{'customerorder.orderType' | translate}}</th>\\n                    <th style=\\\"width:12%\\\">{{'customerorder.customer' | translate}}</th>\\n                    <th style=\\\"width:11%\\\">{{'customerorder.fromlocation' | translate}}</th>\\n                    <th style=\\\"width:7%\\\">{{'customerorder.totalPaymentAmount' | translate}}</th>\\n                    <th style=\\\"width:7%\\\">{{'customerorder.totalquantity' | translate}}</th>\\n                    <th style=\\\"width:12%\\\">{{'customerorder.createdDate' | translate}}</th>\\n                    <!-- <th>{{'customerorder.modifiedDate' | translate}}</th> -->\\n                    <th style=\\\"width:9%\\\">{{'customerorder.orderStatus' | translate}}</th>\\n                    <th style=\\\"width:9%\\\">{{'customerorder.deliveries' | translate}}</th>\\n                    <th style=\\\"width:9%\\\">{{'customerorder.refunds' | translate}}</th>\\n                </tr>\\n            </thead>\\n            <tbody ng-repeat=\\\"order in vm.customerOrders\\\">\\n                <tr class=\\\"cstmrordr-td\\\" ng-class=\\\"{ caRowSelected: order.id === vm.selectedOrder.id }\\\">\\n                    <td><a ng-click=\\\"vm.selectOrder(order.id)\\\" class=\\\"ca-celllink\\\">{{ order.externalOrderNumber }}</a></td>\\n                    <td>{{ 'customerorder.type' + order.orderTypeText | translate }}</td>\\n                    <td>\\n                        <span uib-tooltip=\\\"{{'user.ssn' | translate}}: {{order.customerSSN}} {{'customerorder.loyaltyNumber' | translate}}: {{order.customerLoyaltyNumber}}\\\">\\n                            {{order.customerFirstName + ' ' + order.customerLastName}}\\n                        </span>\\n                    </td>\\n                    <td>{{ order.locationNumber }} - {{ order.locationName }}</td>\\n                    <td>{{order.totalOrderedAmount.toFixed(2)}}</td>\\n                    <td>{{order.totalQuantity}}</td>\\n                    <td>{{order.createdDate | date:'yyyy-MM-dd HH:mm:ss'}}</td>\\n                    <!-- <td>{{order.modifiedDate | date:'yyyy-MM-dd'}}</td> -->\\n                    <td>{{ 'customerorder.status' + order.statusText | translate }}</td>\\n                    <td>{{ order.totalDeliveries }}</td>\\n                    <td>{{ order.totalRefunds }}</td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    tr.cstmrordr-th > th{\\n        font-size: 12px;\\n    }\\n    tr.cstmrordr-td > td{\\n        font-size: 12px;\\n    }\\n</style>\\n<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div style=\\\"float:left; max-width: 33%;\\\">\\n                        <span ng-if=\\\"vm.showSearchToggle()\\\" ng-disabled=\\\"!vm.selectedOrder || !vm.selectedOrder.id\\\" ng-click=\\\"vm.toggleSearchFields()\\\" class=\\\"hidden-folded pull-right text-muted ng-scope\\\">\\n                            <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"!vm.showSearchFields\\\"> {{'customerorder.showSearchFields' | translate}}</span>\\n                            <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"vm.showSearchFields\\\"> {{'customerorder.hideSearchFields' | translate}}</span>\\n                        </span>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\" style=\\\"clear:both; height: 1px;\\\">&nbsp;</div>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showSearchFields\\\">\\n                        <ca-customer-order-search search-term=\\\"vm.searchTerm\\\" on-customer-order-selected=\\\"vm.transitionToState(orderId)\\\"></ca-customer-order-search>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\" ng-if=\\\"vm.selectedOrder && vm.selectedOrder.id\\\">\\n                        <div>&nbsp;</div>\\n                        <!-- Panel for showing selected order goes here -->\\n                        <ca-customer-order order-id=\\\"vm.selectedOrder.id\\\"></ca-customer-order>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\n<style>\\n    .selectitem {\\n        font-size:smaller;\\n        padding-top: 4px;\\n        padding-bottom: 2px;\\n        padding-left: 30px;\\n        margin-top:0px;\\n        margin-bottom:0px;\\n    }\\n    .selectitem:hover {\\n        background-color:rgb(211, 231, 248);\\n    }\\n\\n    .choiceitem {\\n        font-size:smaller;\\n        padding-top: 4px;\\n        padding-bottom: 2px;\\n        padding-left: 30px;\\n        margin-top:0px;\\n        margin-bottom:0px;\\n    }\\n    \\n    .choiceitem:hover {\\n        background-color:whitesmoke;\\n    }\\n</style>\\n<div class=\\\"col-lg-12\\\">\\n    <input  type=\\\"text\\\" \\n            class=\\\"form-control enterAsTab\\\" \\n            style=\\\"width:60%; display:inline-block\\\"\\n            ng-model=\\\"vm.filter\\\" \\n            ng-change=\\\"vm.filterChanged()\\\" \\n            ng-show=\\\"vm.areThereItems()\\\"\\n            placeholder=\\\"{{ 'common.filter' | translate }} {{ vm.placeholder | translate }}\\\"/>\\n    <input  type=\\\"text\\\" \\n        class=\\\"form-control enterAsTab\\\" \\n        style=\\\"width:100%; display:inline-block\\\"\\n        ng-disabled=\\\"!vm.areThereItems()\\\"\\n        ng-hide=\\\"vm.areThereItems()\\\"\\n        placeholder=\\\"{{ 'discountmltsel.noitems' | translate }} {{ vm.placeholder | translate }} {{ 'discountmltsel.toselect' | translate }}\\\"/>\\n        <button type=\\\"button\\\" class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:19%; display:inline-block;\\\" ng-show=\\\"vm.filter.length === 0 && vm.model.length > 0 && vm.filteredChoices.length > 0\\\" ng-click=\\\"vm.deselectSelection()\\\">{{ 'discountmltsel.clearselected' | translate }}</button>\\n        <button type=\\\"button\\\" class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:19%; display:inline-block;\\\" ng-show=\\\"vm.filter.length === 0 && vm.model.length > 0 && vm.filteredChoices.length > 0\\\" ng-click=\\\"vm.selectFilterSelection()\\\">{{ 'discountmltsel.selectall' | translate }}</button>\\n        <button type=\\\"button\\\" class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-show=\\\"vm.filteredChoices.length === 0 && vm.filter.length === 0 && vm.model.length > 0\\\" ng-click=\\\"vm.deselectSelection()\\\">{{ 'discountmltsel.clearselected' | translate }}</button>\\n        <button type=\\\"button\\\" class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-show=\\\"vm.filter.length === 0 && vm.model.length === 0 && vm.filteredChoices.length > 0\\\" ng-click=\\\"vm.selectFilterSelection()\\\">{{ 'discountmltsel.selectall' | translate }}</button>\\n        <button type=\\\"button\\\" class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-show=\\\"vm.filter.length > 0\\\" ng-disabled=\\\"vm.filteredChoices.length === 0\\\" ng-click=\\\"vm.selectFilterSelection()\\\">{{ 'discountmltsel.selectfiltered' | translate }}</button>\\n    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.areThereItems()\\\">\\n        <label style=\\\"font-size:smaller; display:flex;\\\">\\n            <input type=\\\"checkbox\\\" style=\\\"margin:0px;\\\" ng-model=\\\"vm.hideSelected\\\">\\n            <span style=\\\"padding-left:6px;\\\">\\n                - {{ 'discountmltsel.hideselected' | translate }}\\n            </span>\\n        </label>\\n    </div>\\n    <div class=\\\"b-r b-l b-b b-t\\\" ng-show=\\\"vm.areThereItems()\\\" style=\\\"overflow-y:scroll; height:500px; padding-left:4px\\\">\\n        <div style=\\\"height:25px; background-color:aliceblue;\\\" ng-hide=\\\"vm.hideSelected\\\" ng-repeat=\\\"item in vm.model | orderBy: vm.orderBy\\\">\\n            <label class=\\\"i-checks col-lg-12 selectitem\\\">\\n                <input style=\\\"position:fixed\\\" type=\\\"checkbox\\\" href=\\\"javascript:void();\\\" ng-click=\\\"vm.deselectItem(item)\\\" checked=\\\"checked\\\"/>\\n                <i></i>\\n                {{ vm.formatRenderer(item) }}\\n            </label>\\n        </div>\\n        <div style=\\\"height:25px; background-color:aliceblue; font-size:smaller;\\\" class=\\\"selectitem\\\" ng-show=\\\"vm.hideSelected\\\">\\n            {{ vm.model.length }} - {{ vm.placeholder | translate }} {{ 'discountmltsel.selected' | translate }}.\\n        </div>\\n        <div class=\\\"b-b m-t-xs m-b-xs\\\"></div>\\n        <div style=\\\"height:25px; background-color:white;\\\" ng-repeat=\\\"choice in vm.filteredChoices | orderBy: vm.orderBy\\\">\\n            <label class=\\\"i-checks col-lg-12 choiceitem\\\">\\n                <input style=\\\"position:fixed\\\" type=\\\"checkbox\\\" ng-click=\\\"vm.selectItem(choice)\\\"/>\\n                <i></i>\\n                {{ vm.formatRenderer(choice) }}\\n            </label>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n    <div class=\\\"col w-xl lter b-r\\\" ui-view=\\\"discountList\\\"></div>\\n    \\n    <div class=\\\"col w-xxl bg-white-only\\\" ui-view=\\\"discountView\\\"></div>\\n    \\n    <div class=\\\"col\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<form name=\\\"discountsForm\\\" ng-submit=\\\"vm.save()\\\">\\n    <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-heading font-bold\\\"> \\n            <button class=\\\"btn btn-danger\\\" type=\\\"button\\\" ng-click=\\\"vm.delete()\\\" ng-if=\\\"!vm.isEditing && vm.canDelete()\\\" ng-disabled=\\\"!vm.claimCanDelete()\\\">{{'common.delete' |translate}}</button> \\n            <button class=\\\"btn btn-danger\\\" type=\\\"button\\\" ng-click=\\\"vm.cancel()\\\" ng-if=\\\"!vm.isEditing && vm.canCancel()\\\" ng-disabled=\\\"!vm.claimCanUpdate()\\\">{{'discount.cancel' |translate}}</button>\\n            <button class=\\\"btn btn-success\\\" type=\\\"button\\\" ng-click=\\\"vm.approve()\\\" ng-if=\\\"!vm.isEditing && vm.canApprove()\\\" ng-disabled=\\\"!vm.claimCanUpdate()\\\">{{'discount.approve' |translate}}</button> \\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing && vm.canEdit()\\\" ng-disabled=\\\"!vm.claimCanUpdate()\\\"> {{'common.edit' | translate}} </button>\\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.enableEditingFromCopy()\\\" ng-if=\\\"!vm.isEditing && !vm.isNew\\\" ng-disabled=\\\"!vm.claimCanCreate()\\\"> {{'discount.copyDiscount' | translate}} </button>\\n            <button class=\\\"btn btn-primary\\\" type=\\\"submit\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"discountsForm.$invalid || vm.step < vm.maxSteps\\\"> {{'common.save' | translate}}  </button>\\n            <button class=\\\"btn btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNew\\\"> {{'common.cancel' | translate}} </button>\\n            <span> &nbsp;{{ vm.discount.name }} | {{ vm.discount.salesChannel.code }}</span>\\n        </div>\\n        <div class=\\\"panel-body\\\">\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                    <center><h3 style=\\\"display: inline; text-align:center; color: skyblue; padding:0px;\\\">{{ 'discount.step'+ vm.step | translate }}</h3></center>\\n                </div>\\n                <div class=\\\"col-sm-12\\\">\\n                    <h5 ng-hide=\\\"vm.step === 1\\\" style=\\\"display: inline; text-align:left; float:left; margin:0px; margin-bottom:-20px; color: rgba(135, 206, 235, 0.3); padding:0px; width:50%\\\">{{ 'discount.step'+ (vm.step - 1) | translate }}</h5>\\n                    <h5 ng-hide=\\\"vm.step === vm.maxSteps\\\" style=\\\"display: inline; text-align:right; float:right; margin:0px; margin-bottom:-20px; color: rgba(135, 206, 235, 0.3); padding:0px; width:50%\\\">{{ 'discount.step'+ (vm.step + 1) | translate }}</h5>\\n                </div>\\n                <div class=\\\"col-sm-12\\\" style=\\\"color: skyblue; padding:0px;\\\">\\n                    <div style=\\\"display:inline-block; width:46.5%; margin-bottom:10px; border-width: 2px; border-color:skyblue\\\" class=\\\"b-b\\\"></div>\\n                    <div style=\\\"display:inline-block; text-align: center; font-size: 30px; height:64px\\\">\\n                        <i class=\\\"fa fa-circle-o-notch\\\" ng-style=\\\"vm.setStepRotation()\\\" aria-hidden=\\\"true\\\"></i>\\n                    </div>\\n                    <span style=\\\"position: absolute; font-size:20px; margin-left:-22.5px; margin-top: 6px; z-index: 10\\\">{{ vm.step }}</span>\\n                    <div style=\\\"display:inline-block; width:46.5%; margin-bottom:10px; border-width: 2px; border-color:skyblue\\\" class=\\\"b-b\\\"></div>\\n                </div>\\n            </div>\\n            <div ng-if=\\\"vm.step === 1\\\">\\n                <div ng-if=\\\"!vm.isEditing\\\">\\n                    <div class=\\\"b\\\" style=\\\"border-radius:12px;color:green; border-color:darkgreen; background-color:rgba(0,255,0,0.15); padding:8px;\\\" ng-if=\\\"vm.discount.status === 'discount.Approved'\\\">\\n                        <i class=\\\"fa fa-check-circle\\\" aria-hidden=\\\"true\\\"></i>\\n                        <i class=\\\"fa fa-lock\\\" aria-hidden=\\\"true\\\"></i>\\n                        {{ 'discount.isapproved' | translate}} \\n                    </div> \\n                    <div  class=\\\"b\\\" style=\\\"border-radius:12px;color:gray; border-color:grey; background-color:whitesmoke; padding:8px;\\\" ng-if=\\\"vm.discount.status === 'discount.Cancelled'\\\">\\n                        <i class=\\\"fa fa-times-circle\\\" aria-hidden=\\\"true\\\"></i>\\n                        {{ 'discount.iscancelled' | translate}} \\n                    </div>\\n                    <br>\\n                </div>        \\n                <ca-form-group-row label=\\\"'discount.name'\\\">\\n                    <span ng-if=\\\"!vm.isEditing\\\">{{ vm.discount.name }}</span>\\n                    <div ng-class=\\\"{'has-error': discountsForm.discountName.$invalid && discountsForm.discountName.$touched}\\\">\\n                        <input name=\\\"discountName\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.name\\\" enter-as-tab required />\\n                        <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountName.$invalid && discountsForm.discountName.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                    </div>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.code'\\\" ng-show=\\\"vm.isNew === false\\\">\\n                    <span><b>{{ vm.discount.code }}</b></span><i style=\\\"padding-left:24px; color: lightgrey;\\\">{{ 'discount.autogenerated' | translate }}</i>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.description'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\"><textarea style=\\\"resize:none\\\" rows = \\\"5\\\" cols=\\\"60\\\" disabled=\\\"true\\\" ng-model=\\\"vm.discount.description\\\"></textarea></div>\\n                    <div>\\n                        <textarea style=\\\"resize:none\\\" rows = \\\"5\\\" cols=\\\"60\\\" name=\\\"discountDescription\\\" ng-change=\\\"vm.descriptionMaxLength(1000)\\\" ng-if=\\\"vm.isEditing\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.description\\\" enter-as-tab >\\n                        </textarea>\\n                    </div>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.salesChannel'\\\">\\n                    <span ng-if=\\\"!vm.isEditing\\\">{{ vm.discount.salesChannel.code }} - {{ vm.discount.salesChannel.name }}</span>\\n                    <div ng-class=\\\"{'has-error': !vm.isSalesChannelSelected() && discountsForm.discountSalesChannel.$touched}\\\" ng-if=\\\"vm.isEditing\\\">\\n                        <select name=\\\"discountSalesChannel\\\" ng-model=\\\"vm.discount.salesChannel\\\" ng-options=\\\"salesChannel.code + ' ' + salesChannel.name for salesChannel in vm.salesChannels\\\" class=\\\"form-control enterAsTab\\\" enter-as-tab required >\\n                            <option value=\\\"\\\" selected></option>\\n                        </select>\\n                        <span class=\\\"help-block\\\" ng-show=\\\"!vm.isSalesChannelSelected() && discountsForm.discountSalesChannel.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                    </div>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.startDate'\\\">\\n                    <span ng-if=\\\"!vm.isEditing\\\">{{ vm.formatDate(vm.discount.startDate) }}</span>\\n                    <div  ng-class=\\\"{'has-error': (discountsForm.discountStartDate.$invalid || vm.discount.startDate >= vm.discount.endDate) && discountsForm.discountStartDate.$touched}\\\">\\n                        <input name=\\\"discountStartDate\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"date\\\" format=\\\"yyyy-MM-dd\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.startDate\\\" enter-as-tab required/>\\n                        <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountStartDate.$invalid && discountsForm.discountStartDate.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                    </div>\\n                </ca-form-group-row>  \\n                <ca-form-group-row label=\\\"'discount.endDate'\\\">\\n                    <span ng-if=\\\"!vm.isEditing\\\">{{ vm.formatDate(vm.discount.endDate) }}</span>\\n                    <div  ng-class=\\\"{'has-error': (discountsForm.discountEndDate.$invalid || vm.discount.endDate <= vm.discount.startDate) && discountsForm.discountEndDate.$touched}\\\">\\n                        <input name=\\\"discountEndDate\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"date\\\" format=\\\"yyyy-MM-dd\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.endDate\\\" enter-as-tab required/> \\n                        <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountEndDate.$invalid && discountsForm.discountEndDate.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                        <span class=\\\"help-block\\\" ng-show=\\\"((!discountsForm.discountStartDate.$invalid && vm.discount.startDate >= vm.discount.endDate) || (!discountsForm.discountEndDate.$invalid && vm.discount.endDate < vm.discount.startDate)) && discountsForm.discountStartDate.$touched && discountsForm.discountEndDate.$touched\\\">\\n                            {{ 'discount.endDate' | translate }} {{ 'flexmonster.toolbar.lessOrEqual' | translate }} {{ 'discount.startDate' | translate }}.\\n                        </span>   \\n                    </div>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.discountTypes'\\\">\\n                    <span ng-if=\\\"!vm.isEditing || !vm.isNew\\\">{{ vm.discount.discriminator.name | translate }}</span>\\n                    <div ng-if=\\\"vm.isEditing && vm.isNew\\\">\\n                        <ca-singleselect model=\\\"vm.discount.discriminator\\\" choices=\\\"vm.discountTypes\\\" order-by=\\\"'id'\\\" item-renderer=\\\"['name']\\\" />\\n                    </div>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.parameters'\\\">\\n                    <div ng-if=\\\"vm.discount.discriminator.value === 'BuyXgetYDiscount'\\\">\\n                        <span class=\\\"col-md-1\\\"> {{ 'discount.valueX' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\" ng-if=\\\"!vm.isEditing\\\">{{ vm.discount.valueX }}</span>\\n                        <div  class=\\\"col-md-3\\\" ng-if=\\\"vm.isEditing\\\" ng-class=\\\"{'has-error': (discountsForm.discountX.$invalid && discountsForm.discountX.$touched) || !vm.valueXandYValid()}\\\">\\n                            <input style=\\\"width: 70px; height: 25px; margin:0px;\\\" name=\\\"discountX\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.valueX\\\"  enter-as-tab required/>\\n                            <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountX.$invalid && discountsForm.discountX.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                        </div>\\n                        <span class=\\\"col-md-1\\\">{{ 'discount.valueY' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\" ng-if=\\\"!vm.isEditing\\\">{{ vm.discount.valueY }}</span>\\n                        <div  class=\\\"col-md-3\\\" ng-if=\\\"vm.isEditing\\\"  ng-class=\\\"{'has-error': (discountsForm.discountY.$invalid && discountsForm.discountY.$touched) || !vm.valueXandYValid()}\\\">\\n                            <input style=\\\"width: 70px; height: 25px; margin:0px;\\\" name=\\\"discountY\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.valueY\\\"  enter-as-tab required/>\\n                            <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountY.$invalid && discountsForm.discountY.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                        </div>\\n                    </div>\\n                    <div ng-if=\\\"vm.discount.discriminator.value === 'BuyXgetCheapestDiscount'\\\">\\n                        <span class=\\\"col-md-1\\\">{{ 'discount.valueX' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\" ng-if=\\\"!vm.isEditing\\\">{{ vm.discount.valueX }}</span>\\n                        <div  class=\\\"col-md-3\\\" ng-if=\\\"vm.isEditing\\\" ng-class=\\\"{'has-error': (discountsForm.discountX.$invalid && discountsForm.discountX.$touched) || !vm.valueXandYValid()}\\\">\\n                            <input style=\\\"width: 70px; height: 25px; margin:0px;\\\" name=\\\"discountX\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.valueX\\\"  enter-as-tab required/>\\n                            <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountX.$invalid && discountsForm.discountX.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                        </div>\\n                    </div>\\n                    <div ng-if=\\\"vm.discount.discriminator.value === 'StandardDiscountAmount'\\\">\\n                        <span class=\\\"col-md-4\\\">{{ 'discount.amount' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\" ng-if=\\\"!vm.isEditing\\\">{{ vm.discount.discountAmount }}</span>\\n                        <div  class=\\\"col-md-4\\\" ng-if=\\\"vm.isEditing\\\"  ng-class=\\\"{'has-error': discountsForm.discountAmount.$invalid && discountsForm.discountAmount.$touched}\\\">\\n                            <input style=\\\"width: 70px; height: 25px; margin:0px;\\\" name=\\\"discountAmount\\\" type=\\\"number\\\" min=\\\"0\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.discountAmount\\\"  enter-as-tab required/>\\n                            <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountAmount.$invalid && discountsForm.discountAmount.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                        </div>\\n                    </div>\\n                    <div ng-if=\\\"vm.discount.discriminator.value === 'StandardDiscountPercent'\\\">\\n                        <span class=\\\"col-md-4\\\">{{ 'discount.percent' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\" ng-if=\\\"!vm.isEditing\\\">{{ vm.discount.discountPercent }}%</span>\\n                        <div  class=\\\"col-md-4\\\" ng-if=\\\"vm.isEditing\\\"  ng-class=\\\"{'has-error': discountsForm.discountPercent.$invalid && discountsForm.discountPercent.$touched}\\\">\\n                            <span style=\\\"display: inline-flex;\\\">\\n                                <input style=\\\"display:inline-flex; width: 76px; height: 25px; margin:0px;\\\" name=\\\"discountPercent\\\" type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.discountPercent\\\" ng-change=\\\"vm.validatePercentRange(0, 100)\\\" enter-as-tab required>\\n                                <span style=\\\"font-size:smaller; position:relative; top:6px; right:40px; display:inline-flex;\\\">\\n                                    %\\n                                </span>  \\n                            </span>\\n                            <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountPercent.$invalid && discountsForm.discountPercent.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                        </div>\\n                    </div>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.itemGroups'\\\" ng-show=\\\"!vm.isEditing\\\">\\n                    <div ng-repeat=\\\"itemGroup in vm.discount.itemGroups | orderBy:'name'\\\" ng-show=\\\"!vm.itemGroupsEmpty()\\\">{{ itemGroup.code + \\\" \\\" + itemGroup.name  }}</div>\\n                    <div ng-show=\\\"vm.itemGroupsEmpty()\\\"><i style=\\\"color: lightgrey;\\\">{{ 'discount.noItemGroups' | translate }}</i></div>\\n                </ca-form-group-row>\\n            </div>\\n            <div ng-if=\\\"vm.step === 2\\\">\\n                <ca-discount-multiselect model=\\\"vm.discount.mainGroups\\\" choices=\\\"vm.mainGroups\\\" filter-by=\\\"['name', 'code']\\\" order-by=\\\"'code'\\\" placeholder=\\\"'discount.mainGroups'\\\" item-renderer=\\\"['code', 'name']\\\"></ca-discount-multiselect>\\n            </div>\\n            <div ng-if=\\\"vm.step === 3\\\">\\n                <ca-discount-multiselect model=\\\"vm.discount.brands\\\" choices=\\\"vm.brands\\\" filter-by=\\\"['name', 'code']\\\" order-by=\\\"'code'\\\" placeholder=\\\"'discount.brands'\\\" item-renderer=\\\"['code', 'name']\\\"></ca-discount-multiselect>\\n            </div>\\n            <div ng-if=\\\"vm.step === 4\\\">\\n                <ca-discount-multiselect model=\\\"vm.discount.itemGroups\\\" choices=\\\"vm.itemGroups\\\" filter-by=\\\"['name', 'code']\\\" order-by=\\\"'code'\\\" placeholder=\\\"'discount.itemGroups'\\\" item-renderer=\\\"['code', 'name']\\\"></ca-discount-multiselect>       \\n            </div>\\n            <div ng-if=\\\"vm.step === 5\\\">\\n                <ca-form-group-row label=\\\"'discount.name'\\\">\\n                    <span>{{ vm.discount.name }}</span>\\n                    <!--\\n                    <div ng-class=\\\"{'has-error': discountsForm.discountName.$invalid && discountsForm.discountName.$touched}\\\">\\n                        <input name=\\\"discountName\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.name\\\" enter-as-tab required />\\n                        <span class=\\\"help-block\\\" ng-show=\\\"discountsForm.discountName.$invalid && discountsForm.discountName.$touched\\\">{{ 'discount.required' | translate }}</span>\\n                    </div>\\n                    -->\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.description'\\\">\\n                    <div><textarea style=\\\"resize:none\\\" rows = \\\"5\\\" cols=\\\"60\\\" disabled=\\\"true\\\" ng-model=\\\"vm.discount.description\\\"></textarea></div>\\n                    <!--\\n                    <div>\\n                        <textarea style=\\\"resize:none\\\" rows = \\\"5\\\" cols=\\\"60\\\" name=\\\"discountDescription\\\" ng-change=\\\"vm.descriptionMaxLength(1000)\\\" ng-if=\\\"vm.isEditing\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.discount.description\\\" enter-as-tab >\\n                        </textarea>\\n                    </div>\\n                    -->\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.salesChannel'\\\">\\n                    <span>{{ vm.discount.salesChannel.code }} - {{ vm.discount.salesChannel.name }}</span>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.date'\\\">\\n                    <span>{{ vm.formatDate(vm.discount.startDate) }} - {{ vm.formatDate(vm.discount.endDate) }}</span>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.discountTypes'\\\">\\n                    <span>{{ vm.discount.discriminator.name | translate }}</span>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.parameters'\\\">\\n                    <div ng-if=\\\"vm.discount.discriminator.value === 'BuyXgetYDiscount'\\\">\\n                        <span class=\\\"col-md-1\\\">{{ 'discount.valueX' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\">{{ vm.discount.valueX }}</span>\\n                        <span class=\\\"col-md-1\\\">{{ 'discount.valueY' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\">{{ vm.discount.valueY }}</span>\\n                    </div>\\n                    <div ng-if=\\\"vm.discount.discriminator.value === 'BuyXgetCheapestDiscount'\\\">\\n                        <span class=\\\"col-md-1\\\">{{ 'discount.valueX' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\">{{ vm.discount.valueX }}</span>\\n                    </div>\\n                    <div ng-if=\\\"vm.discount.discriminator.value === 'StandardDiscountAmount'\\\">\\n                        <span class=\\\"col-md-4\\\">{{ 'discount.amount' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\">{{ vm.discount.discountAmount }}</span>\\n                    </div>\\n                    <div ng-if=\\\"vm.discount.discriminator.value === 'StandardDiscountPercent'\\\">\\n                        <span class=\\\"col-md-4\\\">{{ 'discount.percent' | translate }}: </span>\\n                        <span class=\\\"col-md-2\\\">{{ vm.discount.discountPercent }}%</span>\\n                    </div>\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'discount.itemGroups'\\\">\\n                    <div ng-repeat=\\\"itemGroup in vm.discount.itemGroups | orderBy:'name'\\\" ng-show=\\\"!vm.itemGroupsEmpty()\\\">{{ itemGroup.code + \\\" \\\" + itemGroup.name  }}</div>\\n                    <div ng-show=\\\"vm.itemGroupsEmpty()\\\"><i style=\\\"color: lightgrey;\\\">{{ 'discount.noItemGroups' | translate }}</i></div>\\n                </ca-form-group-row>\\n            </div>\\n            <div class=\\\"col-md-12 m-t-xs m-b-xs\\\" ng-if=\\\"vm.isEditing && vm.itemGroupValidationErrors.length > 0\\\">\\n                <div class=\\\"b\\\" style=\\\"color:red; border-color:darkred; background-color:mistyrose; padding:8px;\\\">\\n                    <div> {{ 'discount.itemgroupexists' | translate }} </div>\\n                    <br>\\n                    <div ng-repeat=\\\"error in vm.itemGroupValidationErrors\\\">\\n                        {{ error.message }}\\n                        <i>({{ 'discount.ondiscount' | translate }}: <span ng-repeat=\\\"discountName in error.onDiscounts\\\">\\\"{{discountName}}\\\" </span>)</i>\\n                    </div>\\n                    <br>\\n                    <button class=\\\"btn btn-sm btn-danger\\\" type=\\\"button\\\" ng-click=\\\"vm.removeErrorItemGroups()\\\"> {{ 'discount.itemgroupclearthese' | translate }} </button>\\n                    <div>\\n                        {{ 'discount.itemgroupfix' | translate }}\\n                    </div>\\n                </div>\\n            </div>    \\n            <div class=\\\"col-sm-12 b-t\\\" style=\\\"padding-top: 8px\\\" ng-show=\\\"vm.isEditing\\\">\\n                <button style=\\\"display:inline-block;\\\" class=\\\"btn btn-sm btn-default\\\" type=\\\"button\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"!vm.isNew && vm.step === 1\\\"> {{'common.cancel' | translate}} </button>\\n                <button style=\\\"display:inline-block;\\\" class=\\\"btn btn-sm btn-default\\\" type=\\\"button\\\" ng-show=\\\"vm.step > 1\\\" ng-click=\\\"vm.changeStep(false)\\\"> {{ 'common.back' | translate }}</button>\\n                <button style=\\\"float:right;\\\" class=\\\"btn btn-sm btn-primary\\\" type=\\\"button\\\" ng-show=\\\"vm.step < vm.maxSteps\\\" ng-click=\\\"vm.changeStep(true)\\\" ng-disabled=\\\"discountsForm.$invalid || (vm.itemGroupValidationErrors.length > 0 && vm.step === 4) || vm.endDateLessThanStartDate() || !vm.valueXandYValid()\\\">{{ 'common.next' | translate }}</button>\\n                <button style=\\\"float:right;\\\" class=\\\"btn btn-sm btn-success\\\" type=\\\"submit\\\" ng-click=\\\"vm.approveDiscount = true\\\" ng-show=\\\"!discountsForm.$invalid && vm.step === vm.maxSteps\\\" ng-disabled=\\\"!vm.isApproveDiscountEnabled()\\\"\\n                tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'discount.saveandapprovetooltip' | translate}}\\\" tooltip-popup-delay=\\\"50\\\"> {{'common.save' | translate}} & {{'common.approve' | translate}}</button>\\n            </div>\\n            <div class=\\\"col-sm-12\\\" style=\\\"padding-top: 8px\\\" ng-show=\\\"vm.isEditing\\\">\\n                <button style=\\\"display:inline-block;\\\" class=\\\"btn btn-sm btn-default\\\" type=\\\"button\\\" ng-show=\\\"vm.step === vm.maxSteps\\\" ng-click=\\\"vm.setStep(1)\\\">{{ 'discount.beginning' | translate }}</button>\\n                <button style=\\\"float:right;\\\" class=\\\"btn btn-sm btn-primary\\\" type=\\\"button\\\" ng-show=\\\"vm.step === 1\\\" ng-click=\\\"vm.setStep(vm.maxSteps)\\\" ng-disabled=\\\"discountsForm.$invalid || vm.itemGroupValidationErrors.length > 0 || vm.endDateLessThanStartDate() || !vm.valueXandYValid()\\\">{{ 'discount.complete' | translate }}</button> \\n                <button style=\\\"float:right;\\\" class=\\\"btn btn-sm btn-primary\\\" type=\\\"submit\\\" ng-show=\\\"!discountsForm.$invalid && vm.step === vm.maxSteps\\\"\\n                tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'discount.savetooltip' | translate}}\\\" tooltip-popup-delay=\\\"50\\\"> {{'common.save' | translate}}</button>\\n            </div> \\n        </div>\\n    </div>\\n</form>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-disabled=\\\"!vm.claimCanCreate()\\\" ng-click=\\\"$state.go('discountManagement.discounts.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.filter\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChanged(true)\\\"\\n                placeholder=\\\"{{'common.search' | translate}}\\\">    \\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\" >\\n                <a class=\\\"b-b b-t b-r b-l\\\" ng-click=\\\"vm.flipDropDownFilter()\\\" ng-show=\\\"vm.filterDropdownIsVisisble\\\"> <i class=\\\"fa fa-fw fa-angle-down\\\"></i> </a>\\n                <a class=\\\"b-b b-t b-r b-l\\\" ng-click=\\\"vm.flipDropDownFilter()\\\" ng-hide=\\\"vm.filterDropdownIsVisisble\\\"> <i class=\\\"fa fa-fw fa-angle-right\\\"></i> </a>\\n            </span>\\n        </div>\\n    </div>\\n    <div class=\\\"col-lg-12 b-b\\\" style=\\\"font-size:small;text-align:left; margin:8px\\\" ng-show=\\\"vm.filterDropdownIsVisisble\\\">\\n        <b style=\\\"font-size:small;\\\"> {{'discount.filterOn' | translate }}:</b>\\n        <ca-form-group-row label=\\\"'discount.filterCancelled'\\\"> \\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" name=\\\"showCancelled\\\" ng-click=\\\"vm.flipCancelled()\\\" ng-checked=\\\"vm.showCancelled\\\"/>\\n                <i></i>\\n            </label>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'discount.filterApproved'\\\"> \\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" name=\\\"showApproved\\\" ng-click=\\\"vm.flipApproved()\\\" ng-checked=\\\"vm.showApproved\\\"/>\\n                <i></i>\\n            </label>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'discount.filterCompleted'\\\"> \\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" name=\\\"showCompleted\\\" ng-click=\\\"vm.flipCompleted()\\\" ng-checked=\\\"vm.showCompleted\\\"/>\\n                <i></i>\\n            </label>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"''\\\"> \\n            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.monthsBackOption\\\" ng-change=\\\"vm.searchTermChanged(true)\\\" style=\\\"display: inline-block\\\">\\n                <ui-select-match placeholder=\\\"\\\" style=\\\"height:20px\\\">{{$select.selected}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"months in vm.monthsOptions\\\">\\n                    <span>{{months}} {{ 'purchaseorderanalysis.monthsBack' | translate }}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n            <span>{{ 'purchaseorderanalysis.monthsBack' | translate }}</span>\\n        </ca-form-group-row>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <div ng-repeat=\\\"discount in vm.discounts\\\" ng-style=\\\"vm.listBackgroundStyle(discount)\\\">\\n                            <div style=\\\"font-size:small;background-color:rgba(80,80,80, 0.7); color: white; border-top-left-radius: 10px; border-bottom-right-radius: 10px; margin:6px; padding-left:4px\\\" \\n                                ng-show=\\\"discount.displayToday\\\">{{'common.currentDate' | translate}}: {{vm.currentDate | date: 'yyyy-MM-dd'}}</div>\\n                            <a ng-click=\\\"vm.selectDiscount(discount)\\\" class=\\\"list-group-item m-l\\\" ng-class=\\\"{'focus m-l-none': discount.id === vm.selectedDiscountId}\\\">\\n                                <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': discount.id === vm.selectedDiscountId }\\\">\\n                                    <b><span class=\\\"pull-left text-ellipsis lg-label\\\">{{discount.name}} | {{discount.salesChannelCode}}</span></b> \\n                                    <span style=\\\"float: right; font-size:medium\\\" ng-show=\\\"discount.status === 'discount.Created'\\\"\\n                                        tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'discount.status.created' | translate}}\\\" tooltip-popup-delay=\\\"50\\\">\\n                                        <i class=\\\"fa fa-circle-o\\\" aria-hidden=\\\"true\\\"></i>\\n                                    </span>\\n                                    <span style=\\\"float: right; font-size:medium\\\" ng-show=\\\"discount.status === 'discount.Approved'\\\"\\n                                        tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'discount.status.approved' | translate}}\\\" tooltip-popup-delay=\\\"50\\\">\\n                                        <i class=\\\"fa fa-check-circle\\\" aria-hidden=\\\"true\\\"></i>\\n                                        <i class=\\\"fa fa-lock\\\" aria-hidden=\\\"true\\\"></i>\\n                                    </span>\\n                                    <span style=\\\"float: right; font-size:medium\\\" ng-show=\\\"discount.status === 'discount.Cancelled'\\\"\\n                                        tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'discount.status.cancelled' | translate}}\\\" tooltip-popup-delay=\\\"50\\\">\\n                                        <i class=\\\"fa fa-times-circle\\\" aria-hidden=\\\"true\\\"></i>\\n                                    </span>\\n                                    <span class=\\\"pull-left text-ellipsis lg-label\\\" style=\\\"font-size:smaller;\\\">\\n                                        {{ discount.type  | translate }}\\n                                    </span>\\n                                    <span class=\\\"pull-left text-ellipsis lg-label\\\" style=\\\"font-size:smaller;\\\">\\n                                        <span ng-hide=\\\"discount.status === 'discount.Cancelled'\\\">\\n                                            {{discount.startDate.toString().substring(0,10)}} - {{discount.endDate.toString().substring(0,10)}}\\n                                        </span>\\n                                        <span ng-show=\\\"discount.status === 'discount.Cancelled'\\\">\\n                                            <s>{{discount.startDate.toString().substring(0,10)}} - {{discount.endDate.toString().substring(0,10)}}</s>\\n                                        </span>\\n                                    </span>\\n                                    <span class=\\\"pull-left text-ellipsis lg-label\\\" style=\\\"font-size:smaller;\\\">\\n                                        <span ng-show=\\\"discount.daysAgo > 0 && discount.daysAgo !== undefined && discount.status !== 'discount.Cancelled'\\\">\\n                                            ({{discount.daysAgo}} \\n                                            <span ng-show=\\\"discount.daysAgo === 1\\\">{{'discount.day' | translate }}</span>     \\n                                            <span ng-show=\\\"discount.daysAgo > 1\\\">{{'discount.days' | translate }}</span> {{'discount.ago' | translate }})\\n                                        </span>\\n                                        <span ng-show=\\\"discount.daysUntil > 0 && discount.daysUntil !== undefined && discount.status !== 'discount.Cancelled'\\\">\\n                                            ({{'discount.in' | translate }} {{discount.daysUntil}} \\n                                            <span ng-show=\\\"discount.daysUntil === 1\\\">{{'discount.day' | translate }}</span>     \\n                                            <span ng-show=\\\"discount.daysUntil > 1\\\">{{'discount.days' | translate }}</span>)                                            \\n                                        </span>\\n                                    </span>\\n                                    <span class=\\\"text-ellipsis lg-label\\\" style=\\\"font-size:smaller;\\\" ng-hide=\\\"discount.status === 'discount.Cancelled'\\\"><b>{{'discount.description' | translate}}: </b>{{discount.descriptionShort}}</span>\\n                                    <span class=\\\"text-ellipsis lg-label\\\" style=\\\"font-size:smaller;\\\" ng-show=\\\"discount.status === 'discount.Cancelled'\\\"><s><b>{{'discount.description' | translate}}: </b>{{discount.descriptionShort}}</s></span>\\n                                </span>\\n                            </a>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n    <center>\\n        <div\\n            uib-pagination\\n            boundary-links=\\\"true\\\"\\n            total-items=\\\"vm.totalDiscounts\\\"\\n            items-per-page=\\\"vm.pageSize\\\"\\n            max-size=\\\"5\\\"\\n            ng-change=\\\"vm.searchTermChanged(true)\\\"\\n            ng-model=\\\"vm.currentPage\\\"\\n            class=\\\"pagination-sm \\\"\\n            previous-text=\\\"&lsaquo;\\\"\\n            next-text=\\\"&rsaquo;\\\"\\n            first-text=\\\"&laquo;\\\"\\n            last-text=\\\"&raquo;\\\"\\n            style=\\\"text-align: center;\\\"></div>\\n        </div>\\n    </center>\\n</div>\\n\\n<!--\\n\\n<style>\\n    div.scrollmenu {\\n        background-color: lightslategrey;\\n        overflow: auto;\\n        white-space: nowrap;\\n        margin:8px;\\n    }\\n\\n    div.flipped {\\n        transform:rotateX(180deg);\\n        -ms-transform:rotateX(180deg); /* IE 9 */\\n        -webkit-transform:rotateX(180deg); /* Safari and Chrome */\\n    }\\n\\n    div.scrollmenu a {\\n        display: inline-block;\\n        color: white;\\n        text-align: center;\\n        padding: 4px;\\n        width: 124px;\\n        text-decoration: none;\\n    }\\n\\n    div.scrollmenu a.flipped {\\n        transform:rotateX(180deg);\\n        -ms-transform:rotateX(180deg); /* IE 9 */\\n        -webkit-transform:rotateX(180deg); /* Safari and Chrome */\\n    }\\n\\n    div.scrollmenu a:hover {\\n        background-color: #acc2d8;\\n    }\\n\\n    div.scrollmeny a.flipped b {\\n        color: white;\\n        margin: 7px;\\n    }\\n\\n    table.discounttable {\\n        width: 100%;\\n        display: table;\\n        table-layout: fixed;\\n        border-collapse: collapse;\\n        background-color: whitesmoke;\\n        max-width: 1460px;\\n        margin-top: 10px;\\n    }\\n\\n    table.discounttable thead tr td {\\n        background-color: steelblue;\\n        display: table-cell;\\n        text-align: center;\\n        vertical-align: middle;\\n        word-wrap: break-word;\\n    }\\n\\n    table.discounttable thead tr td:hover {\\n        background-color: lightskyblue;\\n    }\\n\\n    table.discounttable thead tr td.weekdayindex {\\n        color: white;\\n        border: 1px solid white;\\n        height: 12px;\\n    }\\n\\n    table.discounttable thead tr td.weekdayname {\\n        color: white;\\n        border: 1px solid white;\\n        height: 16px;\\n    }\\n\\n    table.discounttable thead tr th {\\n        font-size: 24px;\\n    }\\n\\n    table.discounttable tbody tr td {\\n        height: 108px;\\n        border-left: 1px dashed grey;\\n        border-right: 1px dashed grey;\\n        border-bottom: 1px solid grey;\\n        background-color: whitesmoke;\\n    }\\n\\n    table.discounttable tbody tr td div {\\n        height: 100px;\\n        border: 1px solid grey;\\n        background-color: lightsalmon;\\n        margin:4px;\\n        border-radius: 15px;\\n    }\\n\\n    table.discounttable tbody tr td div:hover {\\n        background-color: rgb(255, 200, 175);\\n    }\\n\\n    table.discounttable tbody tr td div a {\\n        font-size:16px;\\n        padding: 8px;\\n        overflow: hidden;\\n        text-overflow:clip;\\n    }\\n\\n</style>\\n--><!--\\n<div class=\\\"col-lg-12\\\" style=\\\"padding:20px\\\">\\n    <table class=\\\"discounttable\\\">\\n        <thead>\\n            <tr>\\n                <th colspan=\\\"{{ vm.months[vm.selectedMonth].days.length }}\\\" style=\\\"text-align: center\\\">\\n                    <button class=\\\"btn btn-xs btn-default\\\" ng-click=\\\"vm.decreaseMonth()\\\"><i class=\\\"fa fa-angle-double-left\\\" aria-hidden=\\\"true\\\"></i></button>\\n                    {{ vm.months[vm.selectedMonth].name.toUpperCase() }} - {{ vm.selectedYear }}\\n                    <button class=\\\"btn btn-xs btn-default\\\" ng-click=\\\"vm.increaseMonth()\\\"><i class=\\\"fa fa-angle-double-right\\\" aria-hidden=\\\"true\\\"></i></button>\\n                </th>\\n            </tr>\\n            <tr>\\n                <td class=\\\"weekdayname\\\" ng-repeat=\\\"day in vm.months[vm.selectedMonth].days\\\">{{ day.name.substring(0, 3) }}</td>\\n            </tr>\\n            <tr>\\n                <td class=\\\"weekdayindex\\\" ng-repeat=\\\"day in vm.months[vm.selectedMonth].days\\\">{{ day.index }}</td>\\n            </tr>\\n        </thead>\\n        <tbody>\\n            <tr ng-repeat=\\\"discount in vm.discounts\\\">\\n                <td ng-repeat=\\\"day in vm.months[vm.selectedMonth].days\\\" colspan=\\\"{{ vm.getColspanForDiscount(discount, day) }}\\\" ng-if=\\\"!vm.shouldSkipRepeat(discount, day)\\\">\\n                    <div ng-show=\\\"vm.shouldDisplayDiscount(discount, day)\\\">\\n                        <a ng-show=\\\"day.index === discount.startDate.getDate()\\\" href = \\\"https://www.w3schools.com/tags/tag_a.asp\\\">\\n                            <b>{{ discount.name }}</b>\\n                            <br>\\n                        </a>\\n                        <span>\\n                            {{ discount.description.substring(0, 50) }} [...].\\n                        </span>\\n                    </div>\\n                </td>\\n            </tr>\\n            <!--<tr>                \\n                <td ng-repeat=\\\"day in vm.months[vm.selectedMonth].days\\\"></td>\\n            </tr>--><!--\\n        </tbody>\\n    </table>\\n</div>\\n\\n<br>\\n\\n<div class=\\\"scrollmenu flipped\\\">\\n    <a class=\\\"flipped b-r\\\" ng-repeat=\\\"date in vm.dates\\\">\\n        <b class=\\\"b-r\\\">&nbsp &nbsp</b>\\n        <b class=\\\"b-r\\\">&nbsp &nbsp &nbsp</b>\\n        <b class=\\\"b-r\\\">&nbsp &nbsp &nbsp</b>\\n        <b class=\\\"b-r\\\">&nbsp &nbsp &nbsp</b>\\n        <b class=\\\"b-r\\\">&nbsp &nbsp &nbsp</b>\\n        <b class=\\\"b-r\\\">&nbsp &nbsp &nbsp</b>\\n        <b>&nbsp &nbsp</b>\\n    </a>\\n    <br>\\n    <a class=\\\"flipped b-r\\\" ng-repeat=\\\"date in vm.dates\\\">\\n        v.{{ date }}\\n    </a>\\n</div>\\n-->\\n<!--\\n<div class=\\\"hbox\\\">\\n    <div class=\\\"m-t-xxs col-lg-12\\\" style=\\\"height:36px\\\">\\n        <div style=\\\"overflow: scroll; display:inline\\\">\\n            <span ng-repeat=\\\"date in vm.dates\\\">\\n                <span style=\\\"width:20px;\\\">{{ date }}</span>\\n            </span>\\n        </div>\\n        <table class=\\\"table\\\" style=\\\"table-layout:fixed;\\\">\\n        </table>\\n    </div>\\n</div>\\n-->\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n\\n                    <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.accountMessages.length > 0\\\">\\n                        <ul>\\n                            <li ng-repeat=\\\"message in vm.accountMessages\\\">{{message}}</li>\\n                        </ul>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <label class=\\\"col-sm-2 control-label\\\"> {{'analysis.fromdate' | translate}} </label>\\n                        <div class=\\\"col-sm-3\\\">\\n                            <wj-input-date\\n                                    value=\\\"vm.fromDate\\\"\\n                                    min=\\\"2000-01-01\\\"\\n                                    format=\\\"yyyy-MM-dd\\\"\\n                                    style=\\\"width:100%\\\">\\n                            </wj-input-date>\\n                        </div>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <label class=\\\"col-sm-2 control-label\\\"> {{'analysis.todate' | translate}} </label>\\n                        <div class=\\\"col-sm-3\\\">\\n                            <wj-input-date\\n                                    value=\\\"vm.toDate\\\"\\n                                    min=\\\"2000-01-01\\\"\\n                                    format=\\\"yyyy-MM-dd\\\"\\n                                    style=\\\"width:100%\\\">\\n                            </wj-input-date>\\n                        </div>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <label class=\\\"col-sm-2 control-label\\\"> {{'location.organizationnumber' | translate}} </label>\\n                        <div class=\\\"col-sm-3\\\">\\n                            <ui-select ng-model=\\\"vm.organizationNumber\\\" theme=\\\"bootstrap\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"orgNum in vm.organizationNumbers\\\">\\n                                    <span>{{orgNum}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n                    </div>\\n\\n                    <div class=\\\"col-sm-12\\\">\\n                        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.fetchSieFile()\\\" ng-disabled=\\\"vm.accountMessages.length > 0\\\"> {{'common.ok' | translate}} </button>\\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .transist-width {\\n        transition: all ease-in-out 0.195s;\\n    }\\n</style>\\n<!-- navbar header -->\\n<div class=\\\"navbar-header bg-black\\\">\\n    <button\\n        class=\\\"pull-right visible-xs dk\\\"\\n        ui-toggle-class=\\\"show\\\"\\n        data-target=\\\".navbar-collapse\\\"\\n    >\\n        <i class=\\\"fa fa-cog\\\"></i>\\n    </button>\\n    <button\\n        class=\\\"pull-right visible-xs\\\"\\n        ui-toggle-class=\\\"off-screen\\\"\\n        data-target=\\\".app-aside\\\"\\n        ui-scroll-to=\\\"app\\\"\\n    >\\n        <i class=\\\"fa fa-bars\\\"></i>\\n    </button>\\n    <!-- brand -->\\n    <a href=\\\"#/\\\" class=\\\"navbar-brand text-lt\\\">\\n        <!--<i class=\\\"fa fa-circle\\\"></i>-->\\n        <span class=\\\"hidden-folded m-l-xs\\\">\\n            <img\\n                src=\\\"./assets/images/CleverApps_FullLogo.png\\\"\\n                style=\\\"max-height: 28px\\\"\\n                class=\\\"img-full\\\"\\n                alt=\\\"{{'main.title' | translate}}\\\"\\n            />\\n        </span>\\n\\n        <span class=\\\"clearfix app-aside-folded visible-folded\\\">\\n            <span class=\\\"thumb-sm\\\">\\n                <img\\n                    src=\\\"./assets/images/CleverAppsLogo.png\\\"\\n                    style=\\\"max-height: 28px; max-width: 28px\\\"\\n                    class=\\\"img-full\\\"\\n                    alt=\\\"...\\\"\\n                />\\n            </span>\\n        </span>\\n    </a>\\n    <!-- / brand -->\\n\\n    <!-- navbar refresh needed -->\\n    <div\\n        class=\\\"ca-refreshclientbutton\\\"\\n        ng-click=\\\"vm.reload()\\\"\\n        ng-if=\\\"vm.hasVersionChanged && !vm.isReloading\\\"\\n        ng-hide=\\\"true\\\"\\n    >\\n        <div class=\\\"text-lg font-bold\\\">\\n            {{'common.updateneeded' | translate}}\\n        </div>\\n        <div class=\\\"text-xs text-u-c\\\">\\n            <i class=\\\"fa fa-refresh fa-spin fa-fw\\\"></i>\\n            {{'common.clicktorefresh' | translate}}\\n        </div>\\n    </div>\\n</div>\\n<!-- / navbar header -->\\n\\n<!-- navbar collapse -->\\n<div\\n    class=\\\"collapse pos-rlt navbar-collapse box-shadow bg-white-only\\\"\\n    ng-if=\\\"!vm.isReloading\\\"\\n>\\n    <!-- buttons -->\\n    <div class=\\\"nav navbar-nav hidden-xs\\\">\\n        <a\\n            href=\\\"#\\\"\\n            class=\\\"btn no-shadow navbar-btn\\\"\\n            ui-toggle=\\\"app-aside-folded\\\"\\n            target=\\\".app\\\"\\n        >\\n            <i class=\\\"fa fa-dedent fa-fw text hidden-folded\\\"></i>\\n            <i class=\\\"fa fa-indent fa-fw text-active visible-folded\\\"></i>\\n        </a>\\n\\n        <!-- currentpage info -->\\n        <span class=\\\"text-muted\\\">{{$state.current.name | translate}}</span>\\n        <!-- / currentpage info -->\\n\\n        <a\\n            ng-show=\\\"false\\\"\\n            href=\\\"#\\\"\\n            class=\\\"btn no-shadow navbar-btn\\\"\\n            ui-toggle=\\\"show\\\"\\n            target=\\\"#aside-user\\\"\\n        >\\n            <i class=\\\"icon-user fa-fw\\\"></i>\\n        </a>\\n        <button\\n            class=\\\"btn btn-danger\\\"\\n            ng-click=\\\"vm.openTimeStampingModal()\\\"\\n            ng-hide=\\\"(vm.latestTimeStamp.timeStampType.timeStampSystemType === 'in' || !vm.latestTimeStamp.id) || !vm.currentUser.usesTimeStamping\\\"\\n        >\\n            <i class=\\\"fa fa-clock-o\\\"></i>\\n        </button>\\n        <button\\n            class=\\\"btn btn-default\\\"\\n            ng-click=\\\"vm.openTimeStampingModal()\\\"\\n            ng-hide=\\\"(vm.latestTimeStamp.timeStampType.timeStampSystemType === 'out') || !vm.currentUser.usesTimeStamping\\\"\\n        >\\n            <i class=\\\"fa fa-clock-o\\\"></i>\\n        </button>\\n    </div>\\n    <!-- / buttons -->\\n\\n    <!-- navbar right -->\\n    <ul class=\\\"nav navbar-nav navbar-right\\\">\\n        <li class=\\\"dropdown\\\" uib-dropdown>\\n            <a\\n                href\\n                class=\\\"dropdown-toggle clear\\\"\\n                uib-dropdown-toggle\\n                style=\\\"flex-wrap: wrap\\\"\\n            >\\n                <span\\n                    class=\\\"thumb-sm avatar pull-right m-t-n-sm m-b-n-sm m-l-sm\\\"\\n                >\\n                    <img src=\\\"./assets/images/CleverAppsLogo.png\\\" alt=\\\"...\\\" />\\n                    <i class=\\\"on md b-white bottom\\\"></i>\\n                </span>\\n                <span class=\\\"hidden-sm hidden-md\\\"\\n                    >{{currentUser.firstName + ' ' + currentUser.lastName}}\\n                </span>\\n                <b class=\\\"caret\\\"></b>\\n\\n                <div\\n                    style=\\\"\\n                        width: 100%;\\n                        height: 0;\\n                        position: relative;\\n                        top: -0.7rem;\\n                    \\\"\\n                >\\n                    <span style=\\\"font-size: x-small\\\" class=\\\"hidden-sm hidden-md\\\"\\n                        >{{vm.tenant.tenantName}}</span\\n                    >\\n                </div>\\n            </a>\\n            <!-- dropdown -->\\n            <ul class=\\\"dropdown-menu animated fadeInRight w\\\" uib-dropdown-menu>\\n                <li>\\n                    <a ng-click=\\\"vm.logOut()\\\" href=\\\"\\\"\\n                        >{{'common.logout' | translate}}</a\\n                    >\\n                </li>\\n                <li ng-if=\\\"vm.supportViewOptionEnabled\\\">\\n                    <a ng-click=\\\"$state.go('support.supportcases')\\\" href=\\\"\\\"\\n                        >Support Vyn</a\\n                    >\\n                </li>\\n            </ul>\\n            <!-- / dropdown -->\\n        </li>\\n    </ul>\\n    <!-- / navbar right -->\\n</div>\\n<!-- / navbar collapse -->\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .transist-width{\\n        transition: all ease-in-out .195s;\\n    }\\n</style>\\n<div class=\\\"aside-wrap\\\" ng-hide=\\\"vm.isReloading\\\">\\n    <div class=\\\"navi-wrap\\\">\\n        <!-- user -->\\n        <div class=\\\"clearfix hidden-xs text-center hide\\\" id=\\\"aside-user\\\">\\n            <div class=\\\"dropdown wrapper\\\" dropdown>\\n                <a href=\\\"\\\">\\n                        <span class=\\\"thumb-lg w-auto-folded avatar m-t-sm\\\">\\n                        <img src=\\\"./assets/images/a0.jpg\\\" class=\\\"img-full\\\" alt=\\\"...\\\">\\n                        </span>\\n                </a>\\n                <a href class=\\\"dropdown-toggle hidden-folded\\\" dropdown-toggle>\\n                        <span class=\\\"clear\\\">\\n                            <span class=\\\"block m-t-sm\\\">\\n                            <strong class=\\\"font-bold text-lt\\\">Thomas Sverker</strong>\\n                                <b class=\\\"caret\\\"></b>\\n                            </span>\\n                            <span class=\\\"text-muted text-xs block\\\">VD</span>\\n                        </span>\\n                </a>\\n                <!-- dropdown -->\\n                <ul class=\\\"dropdown-menu animated fadeInRight w hidden-folded\\\">\\n                    <li class=\\\"wrapper b-b m-b-sm bg-info m-t-n-xs\\\">\\n                        <span class=\\\"arrow top hidden-folded arrow-info\\\"></span>\\n\\n                        <div>\\n                            <p>300mb of 500mb used</p>\\n                        </div>\\n                        <progressbar value=\\\"60\\\" type=\\\"white\\\" class=\\\"progress-xs m-b-none dker\\\"></progressbar>\\n                    </li>\\n                    <li>\\n                        <a href=\\\"\\\">{{'common.settings' | translate}}</a>\\n                    </li>\\n                    <li>\\n                        <a href=\\\"\\\">{{'common.profile' | translate}}</a>\\n                    </li>\\n                    <li>\\n                        <a href>\\n                            <span class=\\\"badge bg-danger pull-right\\\">3</span>\\n                            {{'common.notifications' | translate}}\\n                        </a>\\n                    </li>\\n                    <li class=\\\"divider\\\"></li>\\n                    <li>\\n                        <a href=\\\"\\\">{{'common.logout' | translate}}</a>\\n                    </li>\\n                </ul>\\n                <!-- / dropdown -->\\n            </div>\\n            <div class=\\\"line dk hidden-folded\\\"></div>\\n        </div>\\n        <!-- / user -->\\n\\n        <!-- nav -->\\n        <div style=\\\"height:94vh; width:100%; display:table;\\\">\\n            <nav ui-nav class=\\\"navi clearfix\\\" style=\\\"margin-bottom:10px\\\">\\n                <ul class=\\\"nav\\\">\\n                    <navigation-node class=\\\"parent\\\" ng-repeat=\\\"node in vm.menuNodes.nodes\\\" level=\\\"0\\\" node = \\\"node\\\" claims=\\\"vm.currentUserClaims\\\" license-modules=\\\"vm.currentLicense\\\" root=\\\"vm.menuNodes\\\" branch=\\\"node\\\"></navigation-node>\\n                </ul>\\n            </nav>\\n            <div class=\\\"hidden-folded m-l-xs navbar-brand text-lt\\\" style=\\\"display: table-row; height: 65px;\\\">\\n                <img src=\\\"{{vm.currentTenantLogoPath}}\\\" style=\\\"max-width:175px; max-height: 175px; vertical-align: bottom;\\\" class=\\\"img-full\\\" alt=\\\"\\\">\\n            </div>\\n        </div>\\n        <!-- nav -->\\n\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<!-- navbar -->\\n<div class=\\\"app-header navbar\\\" ng-include=\\\"'main/main-header.tpl.html'\\\"></div>\\n<!-- / navbar -->\\n\\n<!-- menu -->\\n<aside class=\\\"app-aside hidden-xs bg-black\\\" ng-include=\\\"'main/main-menu.tpl.html'\\\"></aside>\\n<!-- / menu -->\\n\\n<!-- content -->\\n<div class=\\\"app-content h-full\\\" ng-if=\\\"!vm.isReloading\\\">\\n\\n    <!-- Check for the problematic states -->\\n\\n    <div style=\\\"overflow-x:auto; width: 100%\\\">\\n        <div ng-class=\\\"{'app-content-body app-content-full h-full fade-in-up': (\\n                        !$state.includes('stock.scannerinventorying') &&\\n                        !$state.includes('order.ordersearch') &&\\n                        !$state.includes('order.orderdelivery') &&\\n                        !$state.includes('contacts.bulkoperation')\\n                       )}\\\"\\n             ui-view=\\\"\\\"></div>\\n    </div>\\n\\n</div>\\n<!-- /content -->\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n\\n    <div ui-view=\\\"\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\"> \\n        <div>{{ 'inventory.row' | translate }} {{ 'order.deliveryplanning.comment' | translate }}</div> \\n        <div>{{ vm.orderArticle.article.alternativeArticleNumber}} {{ vm.orderArticle.article.articleName }}</div> \\n    </div>\\n    <div class=\\\"body bg-gray\\\">\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"comment\\\" maxlength=\\\"250\\\" ng-model=\\\"vm.comment\\\" required/>\\n    </div>\\n\\n    <div class=\\\"col-lg-12\\\" style=\\\"text-align-last: center;\\\">\\n        <div>\\n            <button class=\\\"btn btn-md btn-success\\\" ng-disabled=\\\"vm.comment.length == 0\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.apply' | translate}}</button>\\n            &nbsp;\\n            <button class=\\\"btn btn-md btn-danger\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-sm-12\\\">\\n    <div class=\\\"col-sm-12\\\">\\n        <input id=\\\"xlf\\\" type=\\\"file\\\" name=\\\"xlfile\\\"> </input>\\n    </div>\\n    <label class=\\\"col-sm-1 control-label\\\">{{'order.barcodes' | translate}}:</label>\\n    <div class=\\\"col-sm-8\\\">\\n        <textarea ng-model=\\\"vm.scannedBarcodes\\\" style=\\\"width: 100%;\\\" rows=\\\"4\\\"></textarea>\\n    </div>\\n    <div> \\n        <button ng-click=\\\"vm.getArticlesAndQuantites()\\\" class=\\\"btn btn-default\\\" ng-disabled=\\\"!vm.order.company.id && !vm.order.fromLocation.id\\\"> + </button> \\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    tr.no-b-border td{\\n        border-bottom: 0px !important;\\n    }\\n</style>\\n<div class=\\\"col-lg-12\\\">\\n    <!-- OrderArticles grid that can display both variant and non-variant articles -->\\n    <label class=\\\"i-checks m-t-xs\\\">\\n        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.hiddenDeliveredRows\\\" ng-change=\\\"vm.hideDeliveredRows()\\\" />\\n        <i></i> {{'order.hideDeliveredRows' | translate}}\\n    </label>\\n    <label class=\\\"i-checks m-t-xs\\\">\\n        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.displayPrices\\\" ng-disabled=\\\"!vm.canDeliverIn()\\\" />\\n        <i></i> {{'order.displayPrices' | translate}}\\n    </label><br/>\\n    <table style=\\\"width: 100%;\\\">\\n        <!-- <thead>\\n            <th style=\\\"width:7%\\\">1</th>\\n            <th style=\\\"width:19%\\\">2</th>\\n            <th style=\\\"width:9%\\\">3</th>\\n            <th style=\\\"width:9%\\\">4</th>\\n            <th style=\\\"width:9%\\\">5</th>\\n            <th style=\\\"width:9%\\\">6</th>\\n            <th style=\\\"width:9%\\\">7</th>\\n            <th style=\\\"width:9%\\\">8</th>\\n            <th style=\\\"width:9%\\\">9</th>\\n            <th>10</th>\\n            <th>11</th>\\n        </thead> -->\\n        <tbody>\\n            <tr>\\n                <td colspan=\\\"10\\\" style=\\\"vertical-align: top;\\\">\\n                    <table class=\\\"ca-flexgrid row-borders\\\">\\n                        <thead>\\n                            <!-- AlternativeArticleNumber (\\\"Leverantörens Produktnummer\\\") -->\\n                            <th>\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'article.alternativearticlenumber'\\\" \\n                                    value-name=\\\"'article.alternativeArticleNumber'\\\"/>\\n                            </th>\\n                            <!-- ArticleName (\\\"Benämning\\\")-->\\n                            <th>\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'article.articlename'\\\" \\n                                    value-name=\\\"'article.articleName'\\\"/>\\n                            </th>\\n                            <!-- AveragePurchaseCost (\\\"Inpris\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.displayPrices\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'article.purchasecost'\\\" \\n                                    value-name=\\\"'averageOrderRowPurchaseCost'\\\"/>\\n                            </th>\\n                            <!-- SalesPrice (\\\"Utpris\\\")-->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.displayPrices\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'article.salesprice'\\\" \\n                                    value-name=\\\"'averageArticleVariantSalesPrice'\\\"/>\\n                            </th>\\n                            <!-- SummarizedPurchaseCost (\\\"Kostpris\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.displayPrices\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'article.totalpurchasecost'\\\" \\n                                    value-name=\\\"'summarizedPurchaseCost'\\\"/>\\n                            </th>\\n                            <!-- SummarizedSalesPrice (\\\"Försäljningspris\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.displayPrices\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'article.totalsalesprice'\\\" \\n                                    value-name=\\\"'summarizedSalesPrice'\\\"/>\\n                            </th>\\n                            <!-- Variant1/Colour (\\\"Variant1/färg\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.anyNonVariantArticles()\\\">                                \\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'reports.transit.articlevariant.variant1'\\\" \\n                                    value-name=\\\"'nonVariantVariantDetail1Name'\\\"/>\\n                            </th>\\n                            <!-- Variant2/Size (\\\"Variant2/storlek\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.anyNonVariantArticles()\\\">                                \\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'reports.transit.articlevariant.variant2'\\\" \\n                                    value-name=\\\"'nonVariantVariantDetail2Name'\\\"/>\\n                            </th>\\n                            <!-- SummarizedQuantity (\\\"Kvantitet\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.isModifying\\\">                                \\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'article.totalquantity'\\\" \\n                                    value-name=\\\"'summarizedQuantity'\\\"/>\\n                            </th>\\n                            <!-- Beställt Antal -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"!vm.isModifying\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'resellerorder.totalfulfillablequantity'\\\" \\n                                    value-name=\\\"'summarizedQuantity'\\\"/>\\n                            </th>\\n                            <!-- QuantityToDeliver (\\\"Att Leverera/antal\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"!vm.isModifying\\\" ng-if=\\\"vm.anyNonVariantArticles()\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'common.quantity'\\\" \\n                                    value-name=\\\"'nonVariantQuantityToDeliver'\\\"/>\\n                            </th>\\n                            <!-- SummarizedDeliveredQuantity (\\\"Levererat Antal\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'order.deliveredquantity'\\\" \\n                                    value-name=\\\"'summarizedDeliveredQuantity'\\\"/>\\n                            </th>\\n                            <!-- DeliveredPurchaseCost (\\\"Levererad Kostnad\\\")-->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.displayPrices\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'reports.salesthroughput.deliveredquantitypurchasecost'\\\" \\n                                    value-name=\\\"'summarizedDeliveredCost'\\\"/>\\n                            </th>\\n                            <!-- AggregatedRowStatus (\\\"Status\\\")-->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\">\\n                                <ca-sort-table-data-header \\n                                    order-by=\\\"vm.sortContentBy\\\" \\n                                    reverse=\\\"vm.sortContentReverse\\\" \\n                                    header=\\\"'order.status'\\\" \\n                                    value-name=\\\"'lowestStatusName'\\\"/>\\n                            </th>\\n                            <!-- Deliver (\\\"Leverera\\\") -->\\n                            <!-- Rest (\\\"Resta leverans\\\") -->\\n                            <!-- Delivery date (\\\"Leveransdatum\\\") -->\\n                            <th class=\\\"ca-flexgridcell-align-right\\\" colspan=\\\"3\\\" ng-if=\\\"vm.anyNonVariantArticles()\\\" ng-show=\\\"!vm.isModifying\\\">\\n                            </th>\\n                            <th></th>\\n                        </thead>\\n                        <tbody ng-repeat=\\\"orderArticle in vm.filteredOrderArticles | orderBy: vm.sortContentBy : vm.sortContentReverse\\\">\\n                            <tr ng-class=\\\"{'no-b-border': orderArticle.orderRows[0].comment}\\\">\\n                                <!-- AlternativeArticleNumber (\\\"Leverantörens Produktnummer\\\") -->\\n                                <!-- isVariant -->\\n                                <td ng-if=\\\"vm.shouldBeTreatedAsVariant(orderArticle)\\\"\\n                                    ng-class=\\\"{'ca-flexgrid-celllink' : !vm.isRowDelivered(orderArticle.lowestSystemStatusAmongRows)}\\\"\\n                                    uib-tooltip=\\\"{{'article.articlenumber' | translate}}: {{orderArticle.article.articleNumber}}\\\"\\n                                    tooltip-popup-delay=\\\"300\\\"\\n                                    tooltip-placement=\\\"top-left\\\"\\n                                    tooltip-append-to-body=\\\"true\\\"\\n                                    ng-click=\\\"vm.viewOrderArticle(orderArticle.article, orderArticle.lowestSystemStatusAmongRows)\\\"\\n                                    style=\\\"width:7%\\\">\\n                                    {{\\n                                        orderArticle.article.alternativeArticleNumber\\n                                        && orderArticle.article.alternativeArticleNumber.length > 0\\n                                        ? orderArticle.article.alternativeArticleNumber\\n                                        : orderArticle.article.articleNumber\\n                                    }}\\n                                </td>\\n                                <!-- IsNotVariant -->\\n                                <td ng-if=\\\"vm.shouldBeTreatedAsNonVariant(orderArticle)\\\"\\n                                    uib-tooltip=\\\"{{'article.articlenumber' | translate}}: {{orderArticle.article.articleNumber}}\\\"\\n                                    tooltip-popup-delay=\\\"300\\\"\\n                                    tooltip-placement=\\\"top-left\\\"\\n                                    tooltip-append-to-body=\\\"true\\\"\\n                                    style=\\\"width:7%\\\">\\n                                    {{\\n                                        orderArticle.article.alternativeArticleNumber\\n                                        && orderArticle.article.alternativeArticleNumber.length > 0\\n                                        ? orderArticle.article.alternativeArticleNumber\\n                                        : orderArticle.article.articleNumber\\n                                    }}\\n                                </td>\\n                                <!-- ArticleName (\\\"Benämning\\\")-->\\n                                <td style=\\\"width:19%\\\">\\n                                    {{orderArticle.article.articleName}}\\n                                </td>\\n                                <!-- AveragePurchaseCost (\\\"Inpris\\\") -->\\n                                <td style=\\\"width:9%\\\" class=\\\"ca-flexgridcell-align-right\\\" ng-if=\\\"vm.haveOrderArticlePurchaseCostClaim\\\" ng-show=\\\"vm.displayPrices\\\">\\n                                    {{orderArticle.averageOrderRowPurchaseCost.toFixed(2)}}\\n                                </td>\\n                                <!-- SalesPrice (\\\"Utpris\\\")-->\\n                                <td style=\\\"width:9%\\\" class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.displayPrices\\\">\\n                                    {{orderArticle.article.salesPrice.toFixed(2)}}\\n                                </td>\\n                                <!-- SummarizedPurchaseCost (\\\"Kostpris\\\") -->\\n                                <td style=\\\"width:9%\\\" class=\\\"ca-flexgridcell-align-right\\\" ng-if=\\\"vm.haveOrderArticlePurchaseCostClaim && vm.displayPrices\\\">\\n                                    {{orderArticle.summarizedPurchaseCost.toFixed(2)}}\\n                                </td>\\n                                <!-- SummarizedSalesPrice (\\\"Försäljningspris\\\") -->\\n                                <td style=\\\"width:9%\\\" class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.displayPrices\\\"> \\n                                    {{orderArticle.summarizedSalesPrice.toFixed(2)}}\\n                                </td>\\n\\n                                <!-- Variant1/Colour (\\\"Variant1/färg\\\") -->\\n                                <td class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.anyNonVariantArticles()\\\">\\n                                    <span ng-if=\\\"orderArticle.nonVariantVariantDetail1Name\\\"> {{orderArticle.nonVariantVariantDetail1Name}} </span>\\n                                </td>\\n                                <!-- Variant2/Size (\\\"Variant2/storlek\\\") -->\\n                                <td class=\\\"ca-flexgridcell-align-right\\\" ng-show=\\\"vm.anyNonVariantArticles()\\\">\\n                                    <span ng-if=\\\"orderArticle.nonVariantVariantDetail2Name\\\"> {{orderArticle.nonVariantVariantDetail2Name}} </span>\\n                                </td>\\n\\n                                <!-- ---------------------------------------------------- -->\\n                                <!-- SummarizedQuantity (\\\"Kvantitet\\\" / \\\"Beställt Antal\\\") -->\\n                                <!-- ---------------------------------------------------- -->\\n                                <td class=\\\"ca-flexgridcell-align-right\\\" style=\\\"width: 50px;\\\">\\n                                    <!-- IsVariant -->\\n                                    <div ng-if=\\\"vm.shouldBeTreatedAsVariant(orderArticle)\\\" style=\\\"width: 50px;\\\">\\n                                        {{orderArticle.summarizedQuantity}}\\n                                    </div>\\n                                    <!-- IsNotVariant -->\\n                                    <div ng-if=\\\"vm.shouldBeTreatedAsNonVariant(orderArticle) && vm.isModifying\\\" style=\\\"border: 1px; border-color: #2c2c2c; ; width: 50px;\\\">\\n                                        <input type=\\\"number\\\"\\n                                                style=\\\"width: 50px\\\"\\n                                                onclick=\\\"this.select()\\\"\\n                                                ng-focus=\\\"vm.viewOrderArticle(orderArticle.article, orderArticle.lowestSystemStatusAmongRows)\\\"\\n                                                class=\\\"ca-flexgridcell-number-input\\\"\\n                                                ng-model=\\\"orderArticle.orderRows[0].quantity\\\"\\n                                                ng-change=\\\"vm.updatedQuantity()\\\"\\n                                                enter-as-tab\\n                                                ng-if=\\\"(vm.isRowCreated(orderArticle.lowestSystemStatusAmongRows) || orderArticle.lowestSystemStatusAmongRows === undefined) && vm.isAllowedToChangeQuantity()\\\">\\n                                        <span ng-if=\\\"(!vm.isRowCreated(orderArticle.lowestSystemStatusAmongRows) && orderArticle.lowestSystemStatusAmongRows !== undefined) || !vm.isAllowedToChangeQuantity()\\\" style=\\\"width: 50px;\\\"> {{orderArticle.orderRows[0].quantity}} </span>\\n                                    </div>\\n                                    <div ng-if=\\\"vm.shouldBeTreatedAsNonVariant(orderArticle) && !vm.isModifying\\\" style=\\\"border: 1px; border-color: #2c2c2c; width: 50px;\\\">\\n                                        {{orderArticle.orderRows[0].quantity}}\\n                                    </div>\\n                                </td>\\n\\n                                <!-- ---------------------------------------------------- -->\\n                                <!-- QuantityToDeliver (\\\"Att Leverera/antal\\\") -->\\n                                <!-- ---------------------------------------------------- -->\\n                                <td ng-show=\\\"!vm.isModifying\\\" style=\\\"width: 50px;\\\" class=\\\"ca-flexgridcell-align-right\\\" ng-if=\\\"vm.anyNonVariantArticles()\\\">\\n                                    <!-- IsVariant (only non-variant prooducts are delivered in this section) -->\\n                                    <div ng-if=\\\"vm.shouldBeTreatedAsVariant(orderArticle) || vm.isDelivered(orderArticle)\\\" style=\\\"width: 50px;\\\">\\n                                        0\\n                                    </div>\\n                                    <!-- IsNotVariant -->\\n                                    <div ng-if=\\\"vm.shouldBeTreatedAsNonVariant(orderArticle) && !vm.isDelivered(orderArticle)\\\" style=\\\"border: 1px; border-color: #2c2c2c; width: 50px;\\\">\\n                                        <input type=\\\"number\\\"\\n                                                style=\\\"width: 50px;\\\"\\n                                                onclick=\\\"this.select()\\\"\\n                                                class=\\\"ca-flexgridcell-number-input\\\"\\n                                                ng-model=\\\"orderArticle.orderRows[0].quantityToDeliver\\\"\\n                                                ng-change=\\\"vm.updatedQuantityToDeliver()\\\"\\n                                                enter-as-tab>\\n                                    </div>\\n                                </td>\\n\\n                                <!-- SummarizedDeliveredQuantity (\\\"Levererat Antal\\\") -->\\n                                <td style=\\\"width:5%; min-width: 20px;\\\" class=\\\"ca-flexgridcell-align-right\\\">\\n                                    {{orderArticle.summarizedDeliveredQuantity}}\\n                                </td>\\n                                <!-- DeliveredPurchaseCost (\\\"Levererad Kostnad\\\")-->\\n                                <td style=\\\"width:5%; min-width: 20px;\\\" class=\\\"ca-flexgridcell-align-right\\\" ng-if=\\\"vm.haveOrderArticlePurchaseCostClaim && vm.displayPrices\\\">\\n                                    {{ orderArticle.summarizedDeliveredCost.toFixed(2) }}\\n                                </td>\\n                                <!-- AggregatedRowStatus (\\\"Status\\\")-->\\n                                <td class=\\\"ca-flexgridcell-align-right\\\">\\n                                    {{ orderArticle.lowestStatusName | translate }}\\n                                </td>\\n                                <!-- Deliver (\\\"Leverera\\\") -->\\n                                <td class=\\\"ca-flexgridcell-align-right\\\" ng-if=\\\"vm.shouldBeTreatedAsNonVariant(orderArticle) && !vm.isDelivered(orderArticle)\\\" ng-show=\\\"!vm.isModifying\\\">\\n                                    <button\\n                                        class=\\\"btn btn-xs btn-primary\\\"\\n                                        ng-click=\\\"vm.deliver(orderArticle)\\\"\\n                                        ng-disabled=\\\"vm.ongoingRequest || !vm.canDeliverIn() || orderArticle.orderRows[0].quantityToDeliver < 0\\\"\\n                                        ng-hide=\\\"vm.noMoreOrderArticlesToDeliver()\\\"> \\n                                        {{'common.deliver' | translate}}\\n                                    </button>\\n                                </td>\\n                                <!-- Rest (\\\"Resta leverans\\\") -->\\n                                <td class=\\\"ca-flexgridcell-align-right\\\" ng-if=\\\"vm.shouldBeTreatedAsNonVariant(orderArticle) && !vm.isDelivered(orderArticle)\\\" ng-show=\\\"!vm.isModifying\\\">\\n                                    <label class=\\\"i-checks m-t-xs\\\">\\n                                        <input type=\\\"checkbox\\\" \\n                                            namef=\\\"a\\\" \\n                                            ng-model=\\\"orderArticle.restOrderArticle\\\" \\n                                            ng-disabled=\\\"!vm.canDeliverIn() || (orderArticle.orderRows[0].quantityToDeliver + orderArticle.summarizedDeliveredQuantity) >= orderArticle.orderRows[0].quantity\\\" />\\n                                        <i></i>\\n                                        {{'order.rest' | translate}}\\n                                    </label>\\n                                </td>\\n                                <!-- Delivery date (\\\"Leveransdatum\\\") -->\\n                                <td style=\\\"width: 130px\\\" class=\\\"ca-flexgridcell-align-right\\\" ng-if=\\\"vm.shouldBeTreatedAsNonVariant(orderArticle) && !vm.isDelivered(orderArticle)\\\" ng-show=\\\"!vm.isModifying\\\">\\n                                    <wj-input-date\\n                                        style=\\\"width: 130px\\\"\\n                                        value=\\\"orderArticle.deliveredDate\\\"\\n                                        initialized=\\\"vm.setWijmoInputDateLimits(s)\\\"\\n                                        format=\\\"yyyy-MM-dd\\\"\\n                                        ng-disabled=\\\"!vm.canDeliverIn()\\\">\\n                                    </wj-input-date>\\n                                </td>\\n                                <td colspan=\\\"100\\\" class=\\\"ca-flexgridcell-align-right\\\" \\n                                    uib-tooltip=\\\"{{ orderArticle.orderRows[0].comment ? 'stock.changeinventory' : 'common.add' | translate}} {{ 'order.deliveryplanning.comment' | translate }}\\\"\\n                                    tooltip-popup-delay=\\\"300\\\"\\n                                    tooltip-placement=\\\"top\\\"\\n                                    tooltip-append-to-body=\\\"true\\\">\\n                                    <button class=\\\"btn btn-link btn-xs\\\" ng-click=\\\"vm.openOrderRowCommentDialog(orderArticle);\\\">\\n                                        <i class=\\\"fa fa-comment-o\\\" ng-class=\\\"orderArticle.orderRows[0].comment ? 'fa-commenting-o' : 'fa-comment-o'\\\" style=\\\"font-size:medium;\\\" aria-hidden=\\\"true\\\"></i>\\n                                    </button>\\n                                </td>\\n                            </tr>\\n                            <tr ng-if=\\\"orderArticle.orderRows[0].comment\\\">\\n                                <td ng-click=\\\"vm.openOrderRowCommentDialog(orderArticle);\\\" colspan=\\\"100\\\" \\n                                    uib-tooltip=\\\"{{ 'stock.changeinventory' | translate}} {{ 'order.deliveryplanning.comment' | translate }}\\\"\\n                                    tooltip-popup-delay=\\\"300\\\"\\n                                    tooltip-placement=\\\"bottom-left\\\"\\n                                    tooltip-append-to-body=\\\"true\\\"\\n                                    style=\\\"padding:0px; background-color:cornsilk; border-bottom-width: 1px;\\\">\\n                                    <div style=\\\"height:14px; padding-left:6px; color: grey;font-size:x-small; vertical-align: top;\\\">\\n                                        <u>{{ 'inventory.row' | translate }} {{ 'order.deliveryplanning.comment' | translate }}:</u>&ensp;{{orderArticle.orderRows[0].comment}}\\n                                    </div>\\n                                </td>\\n                            </tr>\\n                        </tbody>\\n                    </table>\\n                </td>\\n\\n                <!--\\n                <td style=\\\"padding-left: 20px; vertical-align: top; width: 200px;\\\" black; ng-show=\\\"!vm.isModifying\\\" ng-if=\\\"vm.anyNonVariantArticles()\\\">\\n                    <table class=\\\"ca-flexgrid row-borders\\\">\\n                        <thead>\\n                            <th>&nbsp;</th>\\n                            <th>&nbsp;</th>\\n                        </thead>\\n                        <tbody>\\n                            <tr>\\n                                <td>\\n                                    <button\\n                                        class=\\\"btn btn-xs btn-primary\\\"\\n                                        ng-click=\\\"vm.deliver()\\\"\\n                                        ng-disabled=\\\"vm.ongoingRequest || !vm.canDeliverIn()\\\"\\n                                        ng-hide=\\\"vm.noMoreOrderArticlesToDeliver()\\\"> {{'common.deliver' | translate}} {{vm.calculateTotal}}\\n                                    </button>\\n                                </td>\\n                                <td>\\n                                    {{vm.getCurrentDeliveryQuantity()}} {{'common.outOf' | translate}} {{vm.getTotalQuantityLeftToDeliver()}}\\n                                </td>\\n                            </tr>\\n                            <tr>\\n                                <td colspan=\\\"2\\\">\\n                                    <label class=\\\"i-checks m-t-xs\\\">\\n                                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.restCurrentOrderArticle\\\" ng-disabled=\\\"!vm.canDeliverIn()\\\" />\\n                                        <i></i>\\n                                        {{'order.rest' | translate}}\\n                                    </label>\\n                                </td>\\n                            </tr>\\n                            <tr>\\n                                <td colspan=\\\"2\\\">\\n                                    {{'order.deliverydate' | translate}}:\\n                                </td>\\n                            </tr>\\n                            <tr>\\n                                <td colspan=\\\"2\\\">\\n                                    <wj-input-date\\n                                        value=\\\"vm.order.deliveredDate\\\"\\n                                        initialized=\\\"vm.setWijmoInputDateLimits(s)\\\"\\n                                        format=\\\"yyyy-MM-dd\\\"\\n                                        ng-disabled=\\\"!vm.canDeliverIn()\\\">\\n                                    </wj-input-date>\\n                                </td>\\n                            </tr>\\n                        </tbody>\\n                    </table>\\n                </td> \\n                -->\\n\\n            </tr>\\n            <!-- <tr>\\n                <td colspan=\\\"6\\\"> &nbsp; </td>\\n                <td style=\\\"border: 1px solid black;\\\" align=\\\"center\\\" ng-show=\\\"!vm.isModifying\\\">\\n                    ↑<br/>\\n                    <button\\n                        class=\\\"btn btn-xs btn-primary\\\"\\n                        ng-click=\\\"vm.deliverNonVariantArticles()\\\"\\n                        ng-disabled=\\\"vm.ongoingRequest || !vm.canDeliverIn()\\\"\\n                        ng-hide=\\\"vm.noMoreOrderArticlesToDeliver()\\\"> {{'common.deliver' | translate}}\\n                    </button> <br/>\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.restCurrentOrderArticle\\\" ng-disabled=\\\"!vm.canDeliverIn()\\\" />\\n                        <i></i>\\n                        {{'order.rest' | translate}}\\n                    </label><br/>\\n\\n                    {{'order.deliverydate' | translate}}:\\n                    <wj-input-date\\n                        value=\\\"vm.order.deliveredDate\\\"\\n                        initialized=\\\"vm.setWijmoInputDateLimits(s)\\\"\\n                        format=\\\"yyyy-MM-dd\\\"\\n                        ng-disabled=\\\"!vm.canDeliverIn()\\\">\\n                    </wj-input-date>\\n                </td>\\n                <td colspan=\\\"3\\\"> &nbsp; </td>\\n            </tr> -->\\n        </tbody>\\n    </table>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\" ng-hide=\\\"vm.isHidden\\\">\\n    <div class=\\\"col-sm-12\\\">&nbsp;</div>\\n    <!-- Row 1 -->\\n    <div class=\\\"form-group row\\\">\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.ordertype' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\" ng-style=\\\"vm.getOrderTypeRowStyle()\\\">\\n\\n            <ui-select ng-model=\\\"vm.order.orderType\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"(vm.order.orderArticles.length > 0 || vm.order.approved) && !vm.isCopying\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.orderTypeName | translate}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"orderType in vm.orderTypes | filter:{'orderTypeName': $select.search}\\\">\\n                    <span>{{orderType.orderTypeName | translate}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n\\n        </div>\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.externalordernumber' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\">\\n            <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                    type=\\\"text\\\"\\n                    placeholder=\\\"{{'order.externalordernumber' | translate}}\\\"\\n                    ng-model=\\\"vm.order.orderNumberExternal\\\"\\n                    ng-disabled=\\\"vm.order.approved\\\" />\\n        </div>\\n    </div>\\n\\n    <!-- Row 2 -->\\n    <div class=\\\"form-group row\\\">\\n        <label class=\\\"col-sm-2 control-label\\\" ng-show=\\\"vm.order.orderType.orderSystemType.toLowerCase() === 'store' || vm.order.orderType.orderSystemType.toLowerCase() === 'return'\\\">\\n            {{'order.company' | translate}}:\\n        </label>\\n        <div class=\\\"col-lg-4\\\" ng-show=\\\"vm.order.orderType.orderSystemType.toLowerCase() === 'store' || vm.order.orderType.orderSystemType.toLowerCase() === 'return'\\\" ng-style=\\\"vm.getCompanyRowStyle()\\\">\\n            <ui-select ng-model=\\\"vm.order.company\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"!vm.canChangeCompany()\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.companyName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"company in vm.companies | filter:{'companyName': $select.search}\\\">\\n                    <span>{{company.companyName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n\\n        <label class=\\\"col-sm-2 control-label\\\" ng-show=\\\"vm.order.orderType.orderSystemType.toLowerCase() === 'internal' || vm.order.orderType.orderSystemType.toLowerCase() === 'return'\\\">\\n            {{'order.fromlocation' | translate}}:\\n        </label>\\n        <div class=\\\"col-lg-4\\\" ng-show=\\\"vm.order.orderType.orderSystemType.toLowerCase() === 'internal' || vm.order.orderType.orderSystemType.toLowerCase() === 'return'\\\" ng-style=\\\"vm.getFromLocationRowStyle()\\\">\\n            <ui-select ng-model=\\\"vm.order.fromLocation\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"!vm.canChangeFromLocation()\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"location in vm.locations | filter:{'locationName': $select.search}\\\">\\n                    <span>{{location.locationName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n\\n        <div class=\\\"col-sm-6\\\">&nbsp;</div>\\n    </div>\\n\\n    <!-- Row 3 -->\\n    <div class=\\\"form-group row\\\">\\n        <label class=\\\"col-sm-2 control-label\\\" ng-show=\\\"vm.order.orderType.orderSystemType.toLowerCase() !== 'undefined' && vm.order.orderType.orderSystemType.toLowerCase() !== 'return'\\\">{{'order.destination' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\" ng-style=\\\"vm.getDestinationRowStyle()\\\" ng-show=\\\"vm.order.orderType.orderSystemType.toLowerCase() !== 'undefined' && vm.order.orderType.orderSystemType.toLowerCase() !== 'return'\\\">\\n\\n            <ui-select ng-model=\\\"vm.order.destination\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"!vm.canChangeDestination()\\\" ng-endable=\\\"vm.allRowsAreUndelivered()\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{ $select.selected.locationName }}</ui-select-match>\\n                <ui-select-choices repeat=\\\"location in vm.destinations | filter:{'locationName': $select.search}\\\">\\n                    <span>{{location.locationName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n\\n            <div class=\\\"alert alert-warning\\\" style=\\\"padding:3px 15px; margin-bottom:3px;\\\" ng-if=\\\"vm.order.destination && vm.order.destination.resellerPriceList\\\">{{ 'order.destinationUsesResellerPriceList' | translate }}</div>\\n        </div>\\n        \\n        <div class=\\\"col-sm-6\\\" ng-show=\\\"vm.order.orderType.orderSystemType.toLowerCase() === 'undefined' || vm.order.orderType.orderSystemType.toLowerCase() === 'return'\\\">\\n            &nbsp;\\n        </div>\\n\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.planneddeliverydate' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\">\\n            <span ng-if=\\\"true\\\">\\n            <!--<span ng-if=\\\"(!vm.enableDeliveryPlanning || vm.isDeliveryPlanningDisabled())\\\">-->\\n                <wj-input-date\\n                        value=\\\"vm.order.plannedDeliveryDate\\\"\\n                        format=\\\"yyyy-MM-dd\\\"\\n                        style=\\\"width:100%; display:inline-block\\\"\\n                        ng-disabled=\\\"vm.order.approved || !vm.isCreatedOrNew\\\">\\n                </wj-input-date>\\n            </span>\\n            <span ng-if=\\\"false\\\">\\n            <!--<span ng-if=\\\"(vm.enableDeliveryPlanning && !vm.isDeliveryPlanningDisabled())\\\">-->\\n                <wj-input-date\\n                        value=\\\"vm.order.plannedDeliveryDate\\\"\\n                        format=\\\"yyyy-MM-dd\\\"\\n                        style=\\\"width:45%; display:inline-block\\\"\\n                        ng-disabled=\\\"vm.order.approved\\\"\\n                        text-changed=\\\"vm.dateChangeDeliveryPlanningDialog()\\\"\\n                        ng-show=\\\"vm.deliveryPlanningTemplate.length === 0\\\">\\n                </wj-input-date>\\n                <wj-input-date\\n                        tooltip-placement=\\\"top\\\" \\n                        tooltip-append-to-body=\\\"true\\\" \\n                        uib-tooltip=\\\"Datum låst på grund av skapad leveransbevakning. Radera ändringarna för att justera.\\\" \\n                        tooltip-popup-delay=\\\"100\\\"\\n                        value=\\\"vm.order.plannedDeliveryDate\\\"\\n                        format=\\\"yyyy-MM-dd\\\"\\n                        style=\\\"width:35%; display:inline-block\\\"\\n                        ng-disabled=\\\"vm.order.approved || vm.deliveryPlanningTemplate.length !== 0\\\"\\n                        text-changed=\\\"vm.dateChangeDeliveryPlanningDialog()\\\"\\n                        ng-show=\\\"vm.deliveryPlanningTemplate.length !== 0\\\">\\n                </wj-input-date>\\n                <button \\n                    tooltip-placement=\\\"top\\\" \\n                    tooltip-append-to-body=\\\"true\\\" \\n                    uib-tooltip=\\\"Radera ändringar på leveransbevakning.\\\" \\n                    tooltip-popup-delay=\\\"100\\\"\\n                    tooltip-enable=\\\"vm.deliveryPlanningTemplate.length !== 0\\\"\\n                    style=\\\"padding:6px; width:34px; display:inline-block\\\"\\n                    class=\\\"btn btn-danger\\\" \\n                    ng-show=\\\"vm.deliveryPlanningTemplate.length !== 0\\\" \\n                    ng-click=\\\"vm.resetDeliveryPlanningTemplate()\\\">\\n                    <i class=\\\"fa fa-ban\\\" aria-hidden=\\\"true\\\"></i>\\n                </button>\\n                <button \\n                    tooltip-placement=\\\"top\\\" \\n                    tooltip-append-to-body=\\\"true\\\" \\n                    uib-tooltip=\\\"{{'order.deliveryplanning.createafterplanneddate' | translate}}\\\" \\n                    tooltip-popup-delay=\\\"100\\\"\\n                    tooltip-enable=\\\"vm.deliveryPlanningTemplate.length === 0\\\"\\n                    style=\\\"width:54%; display:inline-block\\\"\\n                    class=\\\"btn btn-primary\\\" \\n                    ng-disabled=\\\"vm.isDeliveryPlanningDisabled()\\\" \\n                    ng-click=\\\"vm.openEditDeliveryPlanning()\\\">\\n                    <span ng-if=\\\"vm.deliveryPlanningTemplate.length === 0\\\">{{'role.create' | translate}}</span>\\n                    <span ng-if=\\\"vm.deliveryPlanningTemplate.length !== 0\\\">{{'common.correct' | translate}}</span> \\n                    {{'order.deliveryPlanning' | translate}}\\n                </button>\\n            </span>\\n        </div>\\n    </div>\\n\\n    <!-- Row 4 -->\\n    <div class=\\\"form-group row\\\">\\n        <label class=\\\"col-sm-2 control-label\\\">{{'article.collection' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\" ng-style=\\\"vm.getCollectionRowStyle()\\\">\\n            <ca-singleselect model=\\\"vm.order.collection\\\" choices=\\\"vm.collections\\\" order-by=\\\"'collectionDescription'\\\" item-renderer=\\\"'collectionDescription'\\\" filter-by=\\\"['collectionDescription']\\\" disabled-by=\\\"!vm.canChangeCollection()\\\" />\\n        </div>\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.termsofdelivery' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\">\\n\\n            <ui-select ng-model=\\\"vm.order.deliveryTerms\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.order.approved || !vm.isCreatedOrNew\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.code}} {{$select.selected.name}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"term in vm.deliveryTerms | filter:{'name': $select.search}\\\">\\n                    <span>{{term.code}} {{term.name}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n\\n    <!-- Row 5 -->\\n    <div class=\\\"form-group row\\\">\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.ourreference' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\">\\n            <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                    type=\\\"text\\\"\\n                    placeholder=\\\"{{'order.ourreference' | translate}}\\\"\\n                    ng-model=\\\"vm.order.ourReference\\\"\\n                    ng-disabled=\\\"vm.order.approved || !vm.isCreatedOrNew\\\"/>\\n        </div>\\n\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.purchaser' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\">\\n            <ui-select ng-model=\\\"vm.order.purchaser\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.order.approved || !vm.isCreatedOrNew\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.firstName}} {{$select.selected.lastName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"user in vm.users | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['firstName', 'lastName']}\\\">\\n                    <span>{{user.firstName}} {{user.lastName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n\\n    <!-- Row 6 -->\\n    <div class=\\\"form-group row\\\">\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.currency' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\" ng-style=\\\"vm.getCurrencyStyle()\\\">\\n            <ui-select ng-model=\\\"vm.order.currency\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"!vm.canChangeCurrency()\\\" class=\\\"enterAsTab\\\" enter-as-tab on-select=\\\"vm.setCurrencyRate()\\\">\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.code}} {{$select.selected.name}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"currency in vm.currencies | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['code', 'name']}\\\">\\n                    <span>{{currency.code}} {{currency.name}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.currencyrate' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\">\\n            <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                    type=\\\"number\\\" \\n                    step=\\\"any\\\" \\n                    placeholder=\\\"{{'order.currencyrate' | translate}}\\\"\\n                    ng-model=\\\"vm.order.currencyRate\\\"\\n                    ng-disabled=\\\"vm.order.approved || !vm.isCreatedOrNew\\\" />\\n        </div>\\n    </div>\\n\\n    <div class=\\\"col-sm-12\\\" style=\\\"height:12px\\\">&nbsp;</div>\\n\\n    <!-- Row 7 -->\\n    <div class=\\\"form-group row\\\">\\n\\n        <label class=\\\"col-sm-2 control-label\\\">{{'order.note' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\">\\n            <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                    type=\\\"text\\\"\\n                    maxlength=\\\"290\\\"\\n                    placeholder=\\\"{{'order.note' | translate}}\\\"\\n                    ng-model=\\\"vm.order.orderNote\\\"\\n                    ng-disabled=\\\"vm.order.approved\\\"/>\\n        </div>\\n        \\n        <label class=\\\"col-sm-2 control-label\\\">{{'base.country' | translate}}:</label>\\n        <div class=\\\"col-lg-4\\\" ng-style=\\\"vm.getCountryStyle()\\\">\\n            <ui-select ng-model=\\\"vm.order.countryOfOrigin\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.order.approved || !vm.isCreatedOrNew\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.code}} {{$select.selected.name}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"country in vm.countries | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['code', 'name']}\\\">\\n                    <span>{{country.code}} {{country.name}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"form-group row\\\">\\n        &nbsp;\\n    </div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<label class=\\\"col-sm-12\\\" tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{'article.articlenumber' | translate}}: {{ vm.currentOrderArticle.article.articleNumber + (vm.currentOrderArticle.article.articleName != undefined && vm.currentOrderArticle.article.articleName.length > 0 ? ' - ' + vm.currentOrderArticle.article.articleName : '') }}\\\" tooltip-popup-delay=\\\"300\\\">\\n    {{ vm.currentOrderArticle.article.alternativeArticleNumber !== undefined && vm.currentOrderArticle.article.alternativeArticleNumber.length > 0 ? vm.currentOrderArticle.article.alternativeArticleNumber : vm.currentOrderArticle.article.articleNumber }}\\n    {{ vm.currentOrderArticle.article.articleName != undefined && vm.currentOrderArticle.article.articleName.length > 0 ? ' - ' + vm.currentOrderArticle.article.articleName : '' }}\\n</label>\\n\\n<div class=\\\"col-lg-12 m-b\\\">\\n    <div class=\\\"col-lg-1\\\">\\n        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.deliverOrderSection()\\\" ng-disabled=\\\"vm.ongoingRequest || !vm.canDeliverIn()\\\" ng-hide=\\\"vm.orderArticleIsDelivered()\\\"> {{'common.deliver' | translate}}  </button>\\n    </div>\\n    <div class=\\\"col-lg-1\\\"ng-hide=\\\"vm.orderArticleIsDelivered()\\\">\\n        &nbsp;\\n    </div>\\n    <div class=\\\"col-lg-2\\\" ng-hide=\\\"vm.orderArticleIsDelivered()\\\">\\n        <div class=\\\"m-b-none m-t-none\\\" ng-hide=\\\"vm.order.orderType.orderSystemType === 'return'\\\">\\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.restCurrentOrderArticle\\\" ng-disabled=\\\"!vm.canDeliverIn()\\\" />\\n                <i></i>\\n                {{'order.rest' | translate}}\\n            </label>\\n        </div>\\n    </div>\\n    <label class=\\\"col-lg-1 m-t-xs\\\" ng-hide=\\\"vm.orderArticleIsDelivered()\\\"> {{'order.deliverydate' | translate}}: </label>\\n    <div class=\\\"col-lg-2\\\" ng-hide=\\\"vm.orderArticleIsDelivered()\\\">\\n        <wj-input-date\\n                value=\\\"vm.order.deliveredDate\\\"\\n                initialized=\\\"vm.setWijmoInputDateLimits(s)\\\"\\n                format=\\\"yyyy-MM-dd\\\"\\n                ng-disabled=\\\"!vm.canDeliverIn()\\\">\\n        </wj-input-date>\\n    </div>\\n    <div class=\\\"col-lg-5\\\" ng-hide=\\\"vm.orderArticleIsDelivered()\\\">\\n        &nbsp;\\n    </div>\\n    <div class=\\\"col-sm-12\\\">\\n        <wj-flex-grid style=\\\"width: auto; max-width:100%\\\"\\n            id=\\\"orderRowsFlexGrid\\\"\\n            headers-visibility=\\\"Column\\\"\\n            class=\\\"orders-flex-grid orders-flex-grid-multi\\\"\\n            auto-generate-columns=\\\"False\\\"\\n            initialized=\\\"vm.captureRowsGrid(s)\\\"\\n            beginning-edit=\\\"vm.handleNonexistingArticleVariants(s, e)\\\"\\n            cell-edit-ended=\\\"vm.transferQuantityDataToOrder();vm.recalculateGridTotals();\\\">\\n        </wj-flex-grid>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"editableForm\\\">\\n    <div class=\\\"col-sm-12\\\" style=\\\"margin-bottom:5px;\\\"  ng-show=\\\"!vm.isSingleVariantArticle(vm.currentOrderArticle.article)\\\">\\n        <label tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{'article.articlenumber' | translate}}: {{ vm.currentOrderArticle.article.articleNumber + (vm.currentOrderArticle.article.articleName != undefined && vm.currentOrderArticle.article.articleName.length > 0 ? ' - ' + vm.currentOrderArticle.article.articleName : '') }}\\\" tooltip-popup-delay=\\\"300\\\">\\n            {{ vm.currentOrderArticle.article.alternativeArticleNumber !== undefined && vm.currentOrderArticle.article.alternativeArticleNumber.length > 0 ? vm.orderArticle.article.alternativeArticleNumber : vm.currentOrderArticle.article.articleNumber }}\\n            {{ vm.currentOrderArticle.article.articleName != undefined && vm.currentOrderArticle.article.articleName.length > 0 ? ' - ' + vm.currentOrderArticle.article.articleName : '' }}\\n        </label>\\n        <span style=\\\"margin-left:30px;\\\" ng-if=\\\"vm.order.orderType && vm.order.orderType.orderSystemType === 'internal'\\\">\\n            <button ng-click=\\\"vm.getStockQuantitiesForCurrentArticle()\\\" class=\\\"btn btn-sm btn-default\\\">\\n                {{ vm.hasRetrievedStocks(vm.currentOrderArticle.article) ? 'order.updateStockQuantities' : 'order.showStockQuantities' | translate }} {{ '(' + vm.order.fromLocation.locationName + ')' }}\\n            </button>\\n        </span>\\n    </div>\\n    <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.isAllowedToAddProduct && !vm.isSingleVariantArticle(vm.currentOrderArticle.article)\\\">\\n        <wj-flex-grid style=\\\"width:auto; max-width:100%;\\\" class=\\\"orders-flex-grid orders-flex-grid-multi\\\"\\n            id=\\\"orderRowsFlexGrid\\\"\\n            headers-visibility=\\\"Column\\\"\\n            auto-generate-columns=\\\"False\\\"\\n            initialized=\\\"vm.captureRowsGrid(s)\\\"\\n            beginning-edit=\\\"vm.beginEditingOrderRow(s, e)\\\"\\n            cell-edit-ended=\\\"vm.orderRowEditEnded(s, e)\\\"\\n            ng-disabled=\\\"vm.order.approved\\\">\\n        </wj-flex-grid>\\n    </div>\\n\\n    <div class=\\\"col-sm-12\\\">\\n        &nbsp;\\n    </div>\\n\\n    <!-- <label class=\\\"col-sm-12\\\" ng-show=\\\"vm.hasQuantities\\\"> -->\\n        <label class=\\\"col-sm-12\\\">\\n        {{ vm.currentOrderArticle.article.alternativeArticleNumber !== undefined && vm.currentOrderArticle.article.alternativeArticleNumber.length > 0 ? vm.currentOrderArticle.article.alternativeArticleNumber : vm.currentOrderArticle.article.articleNumber }}\\n        {{ vm.currentOrderArticle.article.articleName != undefined && vm.currentOrderArticle.article.articleName.length > 0 ? ' - ' + vm.currentOrderArticle.article.articleName : '' }}\\n        <span class=\\\"alert alert-warning\\\" style=\\\"float:none; clear:both; padding:3px 15px; margin-bottom:3px; margin-left:30px;\\\" ng-if=\\\"vm.order.destination && vm.order.destination.resellerPriceList\\\">{{ 'order.pricesFromResellerPriceList' | translate }}</div>\\n    </label>\\n    <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.hasGridQuantities() && vm.currentOrderArticle.hasDifferentVariantPrices\\\">\\n        <wj-flex-grid style=\\\"width: auto\\\"\\n                        headers-visibility=\\\"Column\\\"\\n                        class=\\\"orders-flex-grid orders-flex-grid-multi\\\"\\n                        initialized=\\\"vm.captureVariantPricesGrid(s)\\\"\\n                        cell-edit-ended=\\\"vm.recalculateVariantGridTotals(); vm.transferVariantPurchaseCostDataToOrder()\\\"\\n                        ng-disabled=\\\"vm.order.approved\\\">\\n            <wj-flex-grid-column header=\\\"{{'order.status' | translate}}\\\" binding=\\\"statusName\\\" width=\\\"75\\\" align=\\\"left\\\" is-read-only=\\\"true\\\" > {{$item.statusName | translate}} </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.variant' | translate}}\\\" binding=\\\"color\\\" width=\\\"150\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.size' | translate}}\\\" binding=\\\"size\\\" width=\\\"150\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\"  header=\\\"{{'article.purchaseprice' | translate}} {{ vm.getCurrencyCodeString() }}\\\" binding=\\\"originalPurchasePrice\\\" width=\\\"150\\\" align=\\\"right\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'order.discountPercent' | translate}}\\\" binding=\\\"discountPercent\\\" width=\\\"75\\\" is-read-only=\\\"false\\\" align=\\\"right\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'order.newpurchaseprice' | translate}} {{ vm.getCurrencyCodeString() }}\\\" binding=\\\"effectivePurchasePrice\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'order.newpurchaseprice' | translate}} ({{ vm.defaultCurrency.code }})\\\" binding=\\\"\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"true\\\"> {{ ($item.effectivePurchasePrice * vm.order.currencyRate).toFixed(2) }} </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'order.currencyrate' | translate}}\\\" binding=\\\"\\\" width=\\\"75\\\" align=\\\"right\\\" is-read-only=\\\"true\\\"> {{vm.order.currencyRate}} </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.shippingCost' | translate}} ({{ vm.defaultCurrency.code }})\\\" binding=\\\"shippingCost\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.customsPercent' | translate}} %\\\" binding=\\\"customsPercent\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.otherCosts' | translate}} ({{ vm.defaultCurrency.code }})\\\" binding=\\\"otherCosts\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'order.standardCostAddPercent' | translate}}\\\" binding=\\\"standardCostAddPercent\\\" width=\\\"75\\\" is-read-only=\\\"false\\\" align=\\\"right\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'article.purchasecost' | translate}}\\\" binding=\\\"purchaseCost\\\" width=\\\"150\\\" is-read-only=\\\"true\\\" align=\\\"right\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'order.totalquantity' | translate}}\\\" width=\\\"150\\\" is-read-only=\\\"true\\\" align=\\\"right\\\"> {{$item.quantity}} </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"=\\\" is-read-only=\\\"true\\\" align=\\\"right\\\"> {{($item.purchaseCost * $item.quantity).toFixed(2)}} </wj-flex-grid-column>\\n            <!-- <wj-flex-grid-column header=\\\"{{'order.currencyrate' | translate}}\\\" binding=\\\"\\\" width=\\\"75\\\" align=\\\"right\\\" is-read-only=\\\"true\\\"> {{vm.order.currencyRate}} </wj-flex-grid-column> -->\\n\\n            <!-- <wj-flex-grid-column header=\\\"=\\\" is-read-only=\\\"true\\\" align=\\\"right\\\"> {{ vm.getTotalRowSum($item) }} </wj-flex-grid-column> -->\\n        </wj-flex-grid>\\n    </div>\\n\\n    <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.hasGridQuantities() && !vm.currentOrderArticle.hasDifferentVariantPrices\\\">\\n        <wj-flex-grid style=\\\"width: auto\\\"\\n                        headers-visibility=\\\"Column\\\"\\n                        class=\\\"orders-flex-grid orders-flex-grid-multi\\\"\\n                        initialized=\\\"vm.capturePricesGrid(s)\\\"\\n                        cell-edit-ended=\\\"vm.recalculateGridTotals(); vm.transferPurchaseCostDataToOrder()\\\"\\n                        ng-disabled=\\\"vm.order.approved\\\">\\n            <wj-flex-grid-column header=\\\"{{'order.status' | translate}}\\\" binding=\\\"statusName\\\" width=\\\"50\\\" align=\\\"left\\\" is-read-only=\\\"true\\\" > {{$item.statusName | translate}} </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.variant' | translate}}\\\" binding=\\\"color\\\" width=\\\"150\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'article.purchaseprice' | translate}} {{ vm.getCurrencyCodeString() }}\\\" binding=\\\"originalPurchasePrice\\\" width=\\\"150\\\" is-read-only=\\\"false\\\" align=\\\"right\\\"> {{$item.originalPurchasePrice.toFixed(2)}}</wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'order.discountPercent' | translate}}\\\" binding=\\\"discountPercent\\\" width=\\\"75\\\" is-read-only=\\\"false\\\" align=\\\"right\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'order.newpurchaseprice' | translate}} {{ vm.getCurrencyCodeString() }}\\\" width=\\\"150\\\" is-read-only=\\\"true\\\" align=\\\"right\\\" is-read-only=\\\"true\\\">{{$item.effectivePurchasePrice.toFixed(2)}} </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'order.currencyrate' | translate}}\\\" binding=\\\"\\\" width=\\\"50\\\" is-read-only=\\\"true\\\" align=\\\"right\\\" is-read-only=\\\"true\\\"> {{vm.order.currencyRate}} </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'order.newpurchaseprice' | translate}} ({{ vm.defaultCurrency.code }})\\\" binding=\\\"\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"true\\\"> {{ ($item.effectivePurchasePrice * vm.order.currencyRate).toFixed(2) }} </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.shippingCost' | translate}} ({{vm.defaultCurrency.code}})\\\" binding=\\\"shippingCost\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.customsPercent' | translate}} %\\\" binding=\\\"customsPercent\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.otherCosts' | translate}} ({{ vm.defaultCurrency.code }})\\\" binding=\\\"otherCosts\\\" width=\\\"150\\\" align=\\\"right\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'order.standardCostAddPercent' | translate}}\\\" binding=\\\"standardCostAddPercent\\\" width=\\\"75\\\" is-read-only=\\\"false\\\" align=\\\"right\\\"> </wj-flex-grid-column>\\n            <!-- <wj-flex-grid-column header=\\\"{{'order.currencyrate' | translate}}\\\" binding=\\\"\\\" width=\\\"75\\\" is-read-only=\\\"true\\\" align=\\\"right\\\" is-read-only=\\\"true\\\"> {{vm.order.currencyRate}} </wj-flex-grid-column> -->\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'article.purchasecost' | translate}}\\\" width=\\\"150\\\" is-read-only=\\\"true\\\" align=\\\"right\\\">{{$item.purchaseCost.toFixed(2)}} </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'order.totalquantity' | translate}}\\\" width=\\\"150\\\" is-read-only=\\\"true\\\" align=\\\"right\\\"> {{$item.sumQuantity}} </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"=\\\" is-read-only=\\\"true\\\" align=\\\"right\\\"> {{($item.purchaseCost * $item.sumQuantity).toFixed(2)}} </wj-flex-grid-column>\\n            <!-- <wj-flex-grid-column header=\\\"=\\\" is-read-only=\\\"true\\\" align=\\\"right\\\"> {{ vm.getTotalRowSum($item) }} </wj-flex-grid-column> -->\\n        </wj-flex-grid>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-sm-12\\\">\\n    <input id=\\\"navScanInput\\\" type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md b-t b-r b-l b-b\\\" ng-model=\\\"vm.navigationScannerInput\\\" placeholder=\\\"{{'order.scan' | translate}}\\\" ng-keypress=\\\"vm.scanInputKeyPress($event)\\\">\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    table.orderHead {\\n        border-top: 1px solid #c6c6c6;\\n        border-left: 1px solid #c6c6c6;\\n    }\\n    table.orderHead thead tr th {\\n        overflow: hidden;\\n        white-space: nowrap;\\n        text-overflow: ellipsis;\\n        padding: 3px;\\n        border-right: 1px solid #c6c6c6;\\n        border-bottom: 1px solid #c6c6c6;\\n        outline: none;\\n        background-color: #edf1f2;\\n        color: #000000;\\n        font-weight: bold;\\n        border-right: solid 1px #c1c5c6;\\n        border-bottom: solid 1px #c1c5c6;\\n    }\\n    table.orderHead tbody tr td {\\n        overflow: hidden;\\n        white-space: nowrap;\\n        text-overflow: ellipsis;\\n        padding: 3px;\\n        border-right: 1px solid #c6c6c6;\\n        border-bottom: 1px solid #c6c6c6;\\n        outline: none;\\n    }\\n    alignRight {\\n        text-align: right;\\n    }\\n</style>\\n<div class=\\\"col-lg-12\\\">\\n    <table class=\\\"orderHead orders-flex-grid\\\" style=\\\"max-width:1178px;\\\">\\n        <thead>\\n            <th>{{ 'order.ordernumber' | translate }}</th>\\n            <th>{{ 'order.externalordernumber' | translate }}</th>\\n            <th>{{ 'order.ordertype' | translate }}</th>\\n            <th>{{ 'order.collection' | translate }}</th>\\n    \\n            <th ng-if=\\\"vm.shouldShowFromLocation()\\\">{{'order.fromlocation' | translate}}</th>\\n            <th ng-if=\\\"vm.shouldShowSupplier()\\\">{{'order.companyname' | translate}}</th>\\n            <th ng-if=\\\"vm.shouldShowDestination()\\\">{{'order.destination' | translate}}</th>\\n    \\n            <th ng-if=\\\"vm.haveOrderArticlePurchaseCostClaim\\\" class=\\\"alignRight\\\">{{ 'order.totalpurchasecost' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'order.totalsalesprice' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'order.totalquantity' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'order.deliveredquantity' | translate }}</th>\\n            <th class=\\\"alignRight\\\">{{ 'order.deliveredcost' | translate }}</th>\\n            <th>{{ 'order.planneddeliverydate' | translate }}</th>\\n            <th>{{ 'order.status' | translate }}</th>\\n        </thead>\\n        <tbody>\\n            <tr>\\n                <td>{{ vm.order.orderNumber }}</td>\\n                <td>{{ vm.order.orderNumberExternal }}</td>\\n                <td>{{ vm.order.orderType.orderTypeName | translate }}</td>\\n                <td>{{ vm.order.collection.collectionDescription }}</td>\\n\\n                <td ng-if=\\\"vm.shouldShowFromLocation()\\\">{{ vm.order.fromLocation.locationName }}</td>\\n                <td ng-if=\\\"vm.shouldShowSupplier()\\\">{{ vm.order.company.companyName }}</td>\\n                <td ng-if=\\\"vm.shouldShowDestination()\\\">{{ vm.order.destination.locationName }}</td>\\n\\n                <td ng-if=\\\"vm.haveOrderArticlePurchaseCostClaim\\\" class=\\\"alignRight\\\">{{ vm.order.summarizedPurchaseCost.toFixed(2) }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.order.summarizedSalesPrice.toFixed(2) }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.order.summarizedQuantity }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.order.summarizedDeliveredQuantity }}</td>\\n                <td class=\\\"alignRight\\\">{{ vm.order.deliveredValue.toFixed(2) }}</td>\\n                <td>{{ vm.order.plannedDeliveryDate | date:'yyyy-MM-dd' }}</td>\\n                <td>{{ vm.order.statusName | translate }}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <!-- \\n        Panel header section \\n    -->\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.returnToState()\\\">\\n            {{'common.return' | translate}}\\n        </button>\\n        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.outDeliverOrder()\\\"\\n            ng-if=\\\"vm.isModifying && vm.isAllowedtoOutDeliverOrder()\\\">\\n            {{'common.outdeliver' | translate}}\\n        </button>\\n\\n        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.deliverOrder()\\\"\\n            ng-if=\\\"!vm.isModifying\\\" ng-disabled=\\\"!vm.canDeliverEntireOrder()\\\">\\n            {{'common.deliverEntireOrder' | translate}}\\n        </button>\\n\\n        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.saveOrder()\\\" ng-if=\\\"vm.isModifying && !vm.order.approved\\\" ng-disabled=\\\"(!vm.order.orderArticles || vm.order.orderArticles.length === 0) || !vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.approveOrder()\\\" ng-if=\\\"vm.isModifying && vm.showApproveButton() && !vm.order.approved\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'common.approve' | translate}} </button>\\n        <button class=\\\"btn btn-sm btn-success\\\" ng-if=\\\"vm.isModifying && vm.showApproveButton() && vm.order.approved\\\" ng-disabled=\\\"true\\\"> {{'common.approved' | translate}} </button>\\n\\n        <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.downloadOrderLabels()\\\"\\n            ng-if=\\\"!vm.isModifying\\\">\\n            {{'order.printlabel' | translate}}\\n        </button>\\n\\n        <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.getOrderPrintout()\\\"\\n            ng-if=\\\"vm.order.id && vm.order.orderType.orderSystemType.toLowerCase() != 'return'\\\">\\n            {{'order.getaspdf' | translate}}\\n        </button>\\n        \\n        <span style=\\\"padding-left: 20px;\\\">\\n            <span ng-if=\\\"vm.order.id === 0\\\">{{'order.order' | translate}}: {{'common.new' | translate}}</span>\\n            <span ng-if=\\\"vm.order.id !== 0\\\">{{'order.order' | translate}}: {{vm.order.orderNumber}} - {{vm.order.orderNumberExternal}} - {{vm.order.destination.locationName}}</span>\\n        </span>\\n\\n        <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" style=\\\"float:right; margin-right:10%\\\" ng-click=\\\"vm.finalizeDelivery()\\\"\\n            ng-if=\\\"!vm.isModifying && vm.order.systemStatus !== 'delivered'\\\"\\n            ng-disabled=\\\"!vm.canDeliverIn()\\\">\\n            {{'order.finalizeDelivery' | translate}}\\n        </button>\\n    </div>\\n\\n    <div class=\\\"col-sm-12\\\" ng-if=\\\"vm.order.orderNote && !vm.isModifying\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <label> {{'order.note' | translate}}: </label>\\n            <label> {{vm.order.orderNote}} </label>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"col-sm-12\\\" ng-if=\\\"vm.order.orderNote && !vm.isModifying\\\">\\n        &nbsp;\\n    </div>\\n\\n    <!--\\n        Metadata and order summary section\\n    -->\\n    <div class=\\\"col-lg-12\\\" ng-click=\\\"vm.toggleMetadataPanelVisibility()\\\" ng-hide=\\\"vm.showOrderMetadataPanel\\\" ng-if=\\\"vm.isModifying\\\">\\n        <a class=\\\"auto\\\" href=\\\"\\\">\\n            <div class=\\\"col-lg-12\\\">\\n                <i class=\\\"fa fa-fw fa-angle-right\\\"> </i> <span class=\\\"ca-font\\\"> {{'order.showOrderHead' | translate}}</span>\\n            </div>\\n        </a>\\n    </div>\\n    <div class=\\\"col-lg-12\\\" ng-click=\\\"vm.toggleMetadataPanelVisibility()\\\" ng-show=\\\"vm.showOrderMetadataPanel\\\" ng-if=\\\"vm.isModifying\\\">\\n        <a class=\\\"auto\\\" href=\\\"\\\">\\n            <div class=\\\"col-lg-12 b-b\\\" ng-click=\\\"vm.toggleExtraOptionsVisibility()\\\">\\n                <i class=\\\"fa fa-fw fa-angle-down\\\"> </i> <span class=\\\"ca-font\\\"> {{'order.hideOrderHead' | translate}}</span>\\n            </div>\\n        </a>\\n    </div>\\n\\n    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showOrderMetadataPanel\\\">\\n        <ca-order-meta-data order=\\\"vm.order\\\" delivery-planning-template=\\\"vm.deliveryPlanningTemplate\\\" disabled=\\\"False\\\" is-hidden=\\\"False\\\" is-copying=\\\"vm.isCopying\\\" order-change-count=\\\"vm.orderChangeCount\\\" init-order-type=\\\"vm.inputOrderSystemType\\\" init-company=\\\"vm.inputSupplierId\\\" set-collection-automatically=\\\"!vm.isCopying\\\" set-currency-rate-automatically=\\\"!vm.isModifying\\\"></ca-order-meta-data>\\n    </div>\\n\\n    <div class=\\\"panel-body b-b\\\">\\n        <ca-order-totals order=\\\"vm.order\\\" order-change-count=\\\"vm.orderChangeCount\\\"> </ca-order-totals>\\n    </div>\\n\\n    <!--\\n        Article summary section (\\\"ArticlesGrid\\\")\\n    -->\\n    <div class=\\\"col-lg-12\\\" ng-if=\\\"vm.usingScannerNavigation\\\">\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n        <ca-order-scanner-navigation order-change-count=\\\"vm.orderChangeCount\\\" order=\\\"vm.order\\\" on-article-selected=\\\"vm.viewOrderArticle(article)\\\" deliver-order=\\\"vm.deliverOrder()\\\" disabled=\\\"!vm.usingScannerNavigation\\\"> </ca-order-scanner-navigation>\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n    </div>\\n\\n    <div class=\\\"col-sm-12\\\" ng-hide=\\\"vm.visibility.orderArticlesAddForm || vm.order.approved\\\">\\n\\n        <div class=\\\"col-sm-12\\\"> &nbsp; </div>\\n\\n        <!-- \\n            Barcode list input\\n        -->\\n        <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.isShowingScanningForm\\\">\\n            <div class=\\\"col-sm-1\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                    <button class=\\\"btn btn-dark\\\" ng-click=\\\"vm.toggleScanningForm()\\\">{{'order.scan' | translate}}</button>\\n                </div>\\n            </div>\\n            <div class=\\\"col-sm-9\\\">\\n                <ca-barcode-scanning-input on-order-articles-retrieved=\\\"vm.receiveOrderArticles(orderArticles)\\\" order=\\\"vm.order\\\"> </ca-barcode-scanning-input>\\n            </div>\\n        </div>\\n\\n        <!--\\n            Standard article search input\\n        -->\\n        <div class=\\\"col-sm-12\\\" ng-show=\\\"!vm.isShowingScanningForm && vm.isAllowedToAddProduct\\\">\\n            <div class=\\\"col-sm-1\\\" ng-if=\\\"!vm.isNewOrder\\\">\\n                <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.toggleScanningForm()\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\">{{'order.scan' | translate}}</button>\\n            </div>\\n\\n            <label class=\\\"col-sm-1 control-label\\\">{{'article.articlenumber' | translate}}:</label>\\n            <div class=\\\"col-sm-4\\\">\\n                 <ca-article-search-multi-select company=\\\"vm.order.company\\\" articles-to-exclude=\\\"vm.order.orderArticles\\\" select-same-twice-allowed=\\\"false\\\" on-articles-retrieved=\\\"vm.receiveArticles(articles)\\\" page-size=\\\"20\\\" disabled=\\\"!vm.isAllowedToSave()\\\" />\\n            </div>\\n            <div class=\\\"col-sm-3\\\"> </div>\\n        </div>\\n        <div class=\\\"col-sm-12\\\">&nbsp;</div>\\n\\n    </div>\\n\\n    <div class=\\\"panel-body b-b\\\">\\n        <div class=\\\"editableForm\\\">\\n            <ca-order-articles \\n                order-change-count=\\\"vm.orderChangeCount\\\" \\n                is-modifying=\\\"vm.isModifying\\\"\\n                order=\\\"vm.order\\\" \\n                disabled=\\\"false\\\" \\n                on-article-selected=\\\"vm.viewOrderArticle(article)\\\"\\n                links=\\\"vm.links\\\"> \\n            </ca-order-articles>\\n        </div>\\n    </div>\\n\\n    <!-- Shown if any article has been selected -->\\n    <div ng-show=\\\"vm.currentOrderArticle.id !== undefined\\\">\\n\\n        <!-- Is shown during deliver mode --> \\n        <div class=\\\"panel-body b-b\\\"  ng-if=\\\"!vm.isModifying\\\">\\n            <ca-order-rows-delivery order=\\\"vm.order\\\" links=\\\"vm.links\\\" order-change-count=\\\"vm.orderChangeCount\\\" disabled=\\\"False\\\" current-order-article=\\\"vm.currentOrderArticle\\\"> </ca-order-rows-delivery>\\n        </div>\\n\\n        <!-- Is shown during editing mode -->\\n        <div class=\\\"panel-body b-b\\\" ng-show=\\\"vm.isModifying\\\">\\n            <ca-order-rows-edit order=\\\"vm.order\\\" order-change-count=\\\"vm.orderChangeCount\\\" disabled=\\\"False\\\" current-order-article=\\\"vm.currentOrderArticle\\\"> </ca-order-rows-edit>\\n        </div>\\n\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\"> {{'common.correct' | translate}} {{'order.deliveryPlanning' | translate}}:</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <table class=\\\"table\\\" style=\\\"padding-right: 8%;padding-left: 8%;\\\">\\n            <thead>\\n                <th style=\\\"width:15%\\\">{{'common.delete' | translate}}:</th>\\n                <th style=\\\"width:35%\\\">{{'order.deliveryplanning.stage' | translate}}:</th>\\n                <th style=\\\"width:35%\\\">{{'order.deliveryplanning.planned' | translate}}:</th>\\n                <th style=\\\"width:15%\\\">{{'order.deliveryplanning.leadTime' | translate}}:</th>\\n            </thead>\\n            <tbody>\\n                <tr ng-repeat=\\\"plan in vm.deliveryPlanTemplate\\\" ng-if=\\\"!plan.disabled\\\" style=\\\"height: 38px;\\\">\\n                    <td style=\\\"width:15%;\\\"><input type=\\\"checkbox\\\" ng-change=\\\"vm.recalcLeadTime()\\\" style=\\\"transform: scale(1.25);\\\" ng-model=\\\"plan.disabled\\\"/></td>\\n                    <td style=\\\"width:35%\\\"><input style=\\\"width:95%;\\\" type=\\\"text\\\" ng-model=\\\"plan.name\\\"></td>\\n                    <td style=\\\"width:35%\\\">\\n                        <wj-input-date\\n                            style=\\\"width:95%;\\\"\\n                            value=\\\"plan.plannedDate\\\"\\n                            format=\\\"yyyy-MM-dd\\\"\\n                            is-dropped-down-changing=\\\"vm.recalcLeadTime()\\\"\\n                            id=\\\"date{{plan.id}}\\\">\\n                        </wj-input-date>\\n                    </td>\\n                    <td style=\\\"width:15%\\\"> \\n                        <div style=\\\"position: absolute; z-index: 40000;\\\">\\n                            <div style=\\\"white-space: nowrap; padding-top:27px;\\\" ng-if=\\\"plan.nextPlanId !== null\\\">\\n                                <div ng-style=\\\"vm.errorLeadTime(plan.leadTimeInDays)\\\"  style=\\\"background-color: whitesmoke; border:1px; border-style:solid; border-color:lightgray\\\">\\n                                    <i class=\\\"fa fa-exchange\\\" style=\\\"font-size: 18px; transform: rotate(90deg);\\\" aria-hidden=\\\"true\\\"></i>\\n                                    <span style=\\\"padding-left:8px;font-size: 16px;width:50px;padding-right:8px;\\\">{{plan.leadTimeInDays}}</span>\\n                                    <!--<input style=\\\"width:50px\\\" type=\\\"number\\\" step=\\\"1\\\" ng-model=\\\"plan.leadTime\\\" ng-change=\\\"vm.changeDateAfterLeadTime(plan)\\\" ng-disabled=\\\"true\\\">\\n                                    {{plan.leadTime}}<i class=\\\"fa fa-arrows-v\\\" aria-hidden=\\\"true\\\"></i>-->\\n                                </div>\\n                            </div>\\n                        </div>\\n                    </td>\\n                </tr>\\n                <tr ng-repeat=\\\"plan in vm.deliveryPlanTemplate\\\" style=\\\"background-color: lightgrey; color:gray;\\\" ng-if=\\\"plan.disabled\\\">\\n                    <td style=\\\"width:15%;\\\" style=\\\"height:18px; padding-top:0px; padding-bottom:0px\\\"><input style=\\\"margin-top:0px; transform: scale(1.25);\\\" type=\\\"checkbox\\\" ng-change=\\\"vm.recalcLeadTime()\\\" ng-model=\\\"plan.disabled\\\" /></td>\\n                    <td style=\\\"width:35%\\\" style=\\\"height:18px; padding-top:0px; padding-bottom:0px\\\" colspan=\\\"3\\\">{{plan.name}}</td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n\\n    <div class=\\\"col-lg-12\\\" style=\\\"text-align-last: center;\\\">\\n        <div>\\n            <button class=\\\"btn btn-md btn-danger\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n            <button class=\\\"btn btn-md btn-success\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.apply' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    td {\\n        font-size: 12px;\\n        padding-top: 1px;\\n        padding-bottom: 1px;\\n    }\\n    th {\\n        padding-top: 1px;\\n        padding-bottom: 1px;\\n    }\\n</style>\\n\\n<div class=\\\"col-lg-12\\\"  style=\\\"background-color: whitesmoke;\\\">\\n    <div class=\\\"m-b-sm m-t-sm\\\">\\n        <button ng-click=\\\"vm.goBackToOrderView()\\\" class=\\\"btn\\\" ng-class=\\\"'btn-default'\\\">{{'common.back' | translate}}</button>\\n    </div>\\n    <h3>{{'order.ordernumber' | translate}}: {{vm.order.orderNumber}}</h3>\\n    <div style=\\\"display: flex; align-items:center;\\\">\\n        <div class=\\\"col-lg-12\\\" style=\\\"max-width: 280px;\\\">\\n            <label style=\\\"font-weight:bold; vertical-align: text-top; padding-right:10px;\\\"> {{'order.externalordernumber'| translate}}: </label>\\n            <label>{{vm.order.orderNumberExternal}} </label>\\n        </div>\\n        <div class=\\\"col-lg-12\\\" style=\\\"max-width: 840px;\\\">\\n            <label style=\\\"font-weight:bold; vertical-align: text-top; padding-right:10px;\\\"> {{ 'order.deliveryplanning.maincomment' | translate }}: </label>\\n            <label><input type=\\\"text\\\"  ng-blur=\\\"vm.saveMainComment()\\\" class=\\\"form-control input-sm\\\" style=\\\"width: 640px;\\\"  ng-model=\\\"vm.comment\\\" placeholder=\\\"{{ 'order.deliveryplanning.maincomment' | translate }}\\\"></label>\\n        </div>\\n    </div>\\n</div>\\n\\n<div class=\\\"m-t-xxs col-lg-12\\\" style=\\\"background-color: white;\\\">\\n    <table class=\\\"table\\\" style=\\\"max-width: 1460px; table-layout:fixed;\\\">\\n        <thead>\\n            <th class=\\\"b-r\\\" style=\\\"width:20%\\\">{{ 'order.deliveryplanning.stage' | translate }}</th>\\n            <th class=\\\"b-r\\\" style=\\\"width:100px;padding-left:5px;\\\" ng-show=\\\"vm.showPlanned\\\">\\n                <button class=\\\"btn\\\" style=\\\"padding:0px;height:21px;background-color:transparent;\\\" ng-click=\\\"vm.showPlanned = !vm.showPlanned;\\\">\\n                    <i class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                    <b>{{ 'order.deliveryplanning.planned' | translate }}</b>\\n                </button>\\n            </th>\\n            <th class=\\\"b-r\\\" style=\\\"padding-left:5px;width:23px\\\" ng-show=\\\"!vm.showPlanned\\\">\\n                <button class=\\\"btn\\\" style=\\\"padding:0px;height:21px;background-color:transparent;\\\" ng-click=\\\"vm.showPlanned = !vm.showPlanned;\\\">\\n                    <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                </button>\\n            </th>\\n            <th class=\\\"b-r\\\" style=\\\"width:15%\\\">{{ 'order.deliveryplanning.deliveryforecast' | translate }}</th>\\n            <th class=\\\"b-r\\\" style=\\\"width:15%\\\">{{ 'order.deliveryplanning.confirmed' | translate }}</th>\\n            <th class=\\\"b-r\\\" style=\\\"width:20%\\\">{{ 'order.deliveryplanning.confirmedBy' | translate }}</th>\\n            <th class=\\\"b-r\\\" style=\\\"width:25%\\\">{{ 'order.deliveryplanning.comment' | translate }}</th>\\n            <th></th>\\n        </thead>\\n        <tbody height=\\\"25px\\\" ng-repeat=\\\"plan in vm.deliveryPlansCopy\\\"  ng-style=\\\"vm.getBackgroundColor(plan)\\\" ng-disabled=\\\"vm.selectedDeliveryPlanCopy.Id != plan.Id\\\">\\n            <!--Completed and not selected-->\\n            <tr ng-show=\\\"plan.completed && !vm.isSelected(plan)\\\">\\n                <th class=\\\"b-r\\\" style=\\\"overflow: hidden;white-space: nowrap; height:26px; padding:5px\\\">\\n                    <i class=\\\"fa fa-check\\\" style=\\\"font-size:18px;\\\" aria-hidden=\\\"true\\\"></i>\\n                    <b>{{ plan.name }}</b>\\n                </th>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\" ng-style=\\\"vm.getPredictedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.isLeadTime(plan) && vm.showPlanned\\\">\\n                        {{ plan.plannedDate.toString().substring(0,10) }}\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\" ng-style=\\\"vm.getPredictedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.isLeadTime(plan) && !vm.showPlanned\\\"\\n                    tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'order.deliveryplanning.planned' | translate }}: {{ plan.plannedDate.toString().substring(0,10) }}.\\\" tooltip-popup-delay=\\\"100\\\">\\n                        {{ vm.formatDate(plan.predictedDate) }}\\n                    </div>\\n                    <div ng-show=\\\"vm.isLeadTime(plan) && vm.showPlanned\\\">\\n                        {{ vm.formatDate(plan.predictedDate) }}\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\" ng-style=\\\"vm.getConfirmedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.canUndoConfirm(plan)\\\">\\n                        <button class=\\\"btn btn-xs btn-default\\\" ng-disabled=\\\"vm.editingAny()\\\" ng-click=\\\"vm.editConfirmed(plan)\\\">\\n                            {{ vm.formatDate(plan.confirmedDate) }}\\n                            <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                        </button>\\n                    </div>\\n                    <div ng-show=\\\"!vm.canUndoConfirm(plan)\\\">\\n                        {{ vm.formatDate(plan.confirmedDate) }}\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">{{ plan.user }}</td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">\\n                    <input style=\\\"height:26px\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" ng-model=\\\"plan.comment\\\" ng-focus=\\\"vm.selectRow(plan)\\\"\\n                    placeholder=\\\"{{ 'order.deliveryplanning.comment' | translate }}\\\" ng-disabled=\\\"vm.editingAny()\\\">\\n                </td>\\n            </tr>\\n            <!--Selected-->\\n            <tr ng-show=\\\"vm.isSelected(plan)\\\">\\n                <th class=\\\"b-r\\\" style=\\\"overflow: hidden;white-space: nowrap;  height:26px; padding:5px\\\">\\n                    <i class=\\\"fa fa-pencil\\\" style=\\\"font-size:18px;\\\" aria-hidden=\\\"true\\\"></i>\\n                    <b>{{ plan.name }}</b>\\n                </th>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">\\n                    <div ng-show=\\\"vm.isLeadTime(plan) && vm.showPlanned\\\">\\n                        {{ plan.plannedDate.toString().substring(0,10) }}\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">\\n                    <div ng-show=\\\"vm.isLeadTime(plan)\\\">\\n                        <span ng-show=\\\"!vm.isEditingConfirmed\\\">\\n                            <div ng-show=\\\"!vm.isEditingPredicted\\\">\\n                                <button class=\\\"btn btn-xs btn-default\\\" ng-show=\\\"!vm.showPlanned\\\" ng-disabled=\\\"vm.isEditingConfirmed || plan.completed\\\" ng-click=\\\"vm.editPredicted(plan)\\\"\\n                                    tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'order.deliveryplanning.planned' | translate }}: {{ plan.plannedDate.toString().substring(0,10) }}.\\\" tooltip-popup-delay=\\\"100\\\">\\n                                    {{ vm.formatDate(plan.predictedDate) }}\\n                                    <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                                </button>\\n                                <button class=\\\"btn btn-xs btn-default\\\" ng-show=\\\"vm.showPlanned\\\" ng-disabled=\\\"vm.isEditingConfirmed || plan.completed\\\" ng-click=\\\"vm.editPredicted(plan)\\\">\\n                                    {{ vm.formatDate(plan.predictedDate) }}\\n                                    <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                                </button>\\n                            </div>\\n                            <div ng-show=\\\"vm.isEditingPredicted\\\">\\n                                <wj-input-date\\n                                    style=\\\"font-size:12px; width:110px;\\\"\\n                                    value=\\\"plan.predictedDate\\\"\\n                                    is-dropped-down-changing=\\\"vm.doRecalculateDiffrence(plan)\\\"\\n                                    format=\\\"yyyy-MM-dd\\\">\\n                                </wj-input-date>\\n                            </div>\\n                        </span>\\n                        <span ng-show=\\\"vm.isEditingConfirmed\\\">\\n                            {{ vm.formatDate(plan.predictedDate) }}\\n                        </span>\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">\\n                    <div ng-show=\\\"!vm.isEditingPredicted\\\">\\n                        <div ng-show=\\\"!vm.isEditingConfirmed\\\">\\n                            <button class=\\\"btn btn-xs btn-default\\\" ng-disabled=\\\"vm.isEditingPredicted || (!vm.canUndoConfirm(plan) && !vm.canConfirm(plan))\\\" ng-show=\\\"vm.canConfirm(plan) || plan.completed\\\" ng-click=\\\"vm.editConfirmed(plan)\\\">\\n                                <span ng-show=\\\"plan.confirmedDate != null\\\">\\n                                    {{ vm.formatDate(plan.confirmedDate) }}\\n                                </span>\\n                                <span ng-show=\\\"plan.confirmedDate == null\\\">\\n                                    {{ 'common.approve' | translate }}\\n                                </span>\\n                                <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                            </button>\\n                        </div>\\n                        <div ng-show=\\\"vm.isEditingConfirmed\\\">\\n                            <wj-input-date\\n                                style=\\\"font-size:12px; width:110px;\\\"\\n                                value=\\\"plan.confirmedDate\\\"\\n                                is-dropped-down-changing=\\\"vm.doRecalculateDiffrence(plan)\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                is-required=\\\"false\\\"\\n                                placeholder=\\\"{{ 'common.approve' | translate }}\\\">\\n                            </wj-input-date>\\n                            <button ng-click=\\\"plan.confirmedDate = null\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-warning'\\\" style=\\\"margin-left:6px\\\" ng-show=\\\"vm.canUndoConfirm(plan)\\\"\\n                                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.clear' | translate }} {{ 'order.deliveryplanning.confirmed' | translate }}.\\\" tooltip-popup-delay=\\\"100\\\">\\n                                <i class=\\\"fa fa-trash-o\\\"></i>\\n                            </button>\\n                        </div>\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\"> \\n                    <span class=\\\"b-r\\\" style=\\\"padding-right:6px\\\" ng-show=\\\"vm.isLeadTime(plan) && (!vm.isEditingConfirmed && vm.isEditingPredicted)\\\">\\n                        {{ 'order.deliveryplanning.recalculateshort' | translate}} <input type=\\\"checkbox\\\" ng-model=\\\"vm.recalculate\\\" ng-click=\\\"vm.doRecalculateDiffrence(plan)\\\"\\n                        tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'order.deliveryplanning.recalculatetooltip' | translate}}\\\" tooltip-popup-delay=\\\"100\\\">\\n                    </span>\\n                    <button ng-click=\\\"vm.savePlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-success'\\\" style=\\\"margin-left:6px\\\"\\n                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.apply' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-check\\\"></i></button>\\n                    <button ng-click=\\\"vm.undoPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-danger'\\\"\\n                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.cancel' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">\\n                    <input style=\\\"height:26px\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" ng-model=\\\"plan.comment\\\" ng-focus=\\\"vm.selectRow(plan)\\\"\\n                    placeholder=\\\"{{ 'order.deliveryplanning.comment' | translate }}\\\">\\n                </td>\\n            </tr>\\n            <!--Not selected and not Completed-->\\n            <tr ng-show=\\\"!plan.completed && !vm.isSelected(plan)\\\">\\n                <th class=\\\"b-r\\\" style=\\\"overflow: hidden;white-space: nowrap;  height:26px; padding:5px\\\"><b>{{ plan.name }}</b></th>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\" ng-style=\\\"vm.getPredictedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.isLeadTime(plan) && vm.showPlanned\\\">\\n                        {{ plan.plannedDate.toString().substring(0,10) }}\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\" ng-style=\\\"vm.getPredictedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.isLeadTime(plan)\\\">\\n                        <button class=\\\"btn btn-xs btn-default\\\" ng-show=\\\"!vm.editingAny() && !vm.showPlanned\\\" ng-click=\\\"vm.editPredicted(plan)\\\"\\n                        tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'order.deliveryplanning.planned' | translate }}: {{ plan.plannedDate.toString().substring(0,10) }}.\\\" tooltip-popup-delay=\\\"100\\\">\\n                            {{ vm.formatDate(plan.predictedDate) }}\\n                            <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                        </button>\\n                        <button class=\\\"btn btn-xs btn-default\\\" ng-show=\\\"!vm.editingAny() && vm.showPlanned\\\" ng-click=\\\"vm.editPredicted(plan)\\\">\\n                            {{ vm.formatDate(plan.predictedDate) }}\\n                            <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                        </button>\\n                        <span ng-show=\\\"vm.editingAny()\\\">\\n                            {{ vm.formatDate(plan.predictedDate) }}\\n                            <span ng-show=\\\"vm.showDifferece(plan)\\\" style=\\\"display: inline-block;\\\">\\n                                <span ng-show=\\\"vm.isEditingConfirmed\\\">\\n                                    <span ng-show=\\\"vm.recalculatedDifference > 0\\\" style=\\\"color:red ;\\\">\\n                                        +{{ vm.recalculatedDifference }}\\n                                    </span>\\n                                    <span ng-show=\\\"vm.recalculatedDifference < 0\\\" style=\\\"color:green \\\">\\n                                        {{ vm.recalculatedDifference }}\\n                                    </span>\\n                                </span>\\n                                <span ng-show=\\\"vm.isEditingPredicted\\\">\\n                                    <span ng-show=\\\"vm.recalculatedDifference > 0\\\" style=\\\"color:red ;\\\">\\n                                        +{{ vm.recalculatedDifference }}\\n                                    </span>\\n                                    <span ng-show=\\\"vm.recalculatedDifference < 0\\\" style=\\\"color:green \\\">\\n                                        {{ vm.recalculatedDifference }}\\n                                    </span>\\n                                </span>\\n                            </span>\\n                        </span>\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">\\n                    <div ng-show=\\\"vm.canConfirm(plan)\\\">\\n                        <button class=\\\"btn btn-xs btn-default\\\" ng-disabled=\\\"vm.editingAny()\\\" ng-click=\\\"vm.editConfirmed(plan)\\\">\\n                            {{ 'common.approve' | translate }}\\n                            <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                        </button>\\n                    </div>\\n                </td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">{{ plan.user }}</td>\\n                <td class=\\\"b-r\\\" style=\\\" height:26px; padding:5px\\\">\\n                    <input style=\\\"height:24px\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" ng-model=\\\"plan.comment\\\" ng-focus=\\\"vm.selectRow(plan)\\\"\\n                    placeholder=\\\"{{ 'order.deliveryplanning.comment' | translate }}\\\" ng-disabled=\\\"vm.editingAny()\\\">\\n                </td>\\n            </tr>\\n        </tbody>\\n    </table>\\n    <div style=\\\"height:200px;\\\"></div>\\n</div>\\n            <!--\\n            <tr>\\n                <td ng-show=\\\"!plan.completed\\\"</td>\\n                <td ng-show=\\\"plan.completed\\\" style=\\\"font-size:20px; padding:4px\\\"><i class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i></td>\\n                <td><b>{{ plan.name }}</b></td>\\n                <td>\\n                    <div ng-show=\\\"vm.isLeadTime(plan) && !vm.isSelected(plan)\\\">\\n                        <b>{{ plan.plannedDate.toString().substring(0,10) }}</b>\\n                    </div>\\n                </td>\\n                <td ng-style=\\\"vm.getPredictedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.isLeadTime(plan)\\\">\\n                        <div ng-show=\\\"(vm.isSelected(plan) && !vm.isEditingPredicted) || (!vm.isSelected(plan) && !vm.editingAny())\\\">\\n                            <button class=\\\"btn btn-xs btn-default\\\" ng-style=\\\"vm.getPredictedButtonBackgroundColor(plan)\\\" ng-disabled=\\\"vm.isEditingConfirmed\\\" ng-if=\\\"vm.canChangePredicted(plan)\\\" ng-click=\\\"vm.editPredicted(plan)\\\">\\n                                {{ vm.formatDate(plan.predictedDate) }}\\n                                <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                            </button>\\n                        </div>\\n                        <div ng-show=\\\"!vm.canChangePredicted(plan) || (vm.editingAny() && !vm.isSelected(plan))\\\">\\n                            {{ vm.formatDate(plan.predictedDate) }}\\n                            <div ng-show=\\\"vm.showDifferece(plan)\\\" style=\\\"display: inline-block;\\\">\\n                                <div ng-show=\\\"vm.recalculatedDifference > 0\\\" style=\\\"color:red ;\\\">\\n                                    +{{ vm.recalculatedDifference }}\\n                                </div>\\n                                <div ng-show=\\\"vm.recalculatedDifference < 0\\\" style=\\\"color:green \\\">\\n                                    {{ vm.recalculatedDifference }}\\n                                </div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                    <div ng-show=\\\"vm.isSelected(plan) && vm.isEditingPredicted\\\" style=\\\"position: absolute; z-index: 10; width:124px;\\\">\\n                        <span style=\\\"white-space: nowrap;\\\" >\\n                            <wj-input-date\\n                                style=\\\"font-size:12px ;width:124px;\\\"\\n                                value=\\\"plan.predictedDate\\\"\\n                                is-dropped-down-changing=\\\"vm.doRecalculateDiffrence(plan)\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                ng-disabled=\\\"!vm.canChangePredicted(plan)\\\">\\n                            </wj-input-date>\\n                            <input style=\\\"display: inline-block; margin-left:-210px; margin-right:250px\\\" type=\\\"checkbox\\\" ng-model=\\\"vm.recalculate\\\" ng-click=\\\"vm.doRecalculateDiffrence(plan)\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"Beräkna om Leverans Prognos?\\\" tooltip-popup-delay=\\\"100\\\">\\n                            <button style=\\\"display: inline-block;\\\" ng-click=\\\"vm.savePlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-success'\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.apply' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-check\\\"></i></button>\\n                            <button style=\\\"display: inline-block;\\\" ng-click=\\\"vm.undoPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-danger'\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.cancel' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n                        </span>\\n                    </div>\\n                </td>\\n                <td ng-style=\\\"vm.getConfirmedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.canConfirm(plan) && !vm.isEditingConfirmed && (vm.isSelected(plan) || !vm.editingAny())\\\">\\n                        <button class=\\\"btn btn-xs btn-default\\\" ng-disabled=\\\"vm.isEditingPredicted\\\" ng-if=\\\"vm.canConfirm(plan)\\\" ng-click=\\\"vm.editConfirmed(plan)\\\">\\n                            <span ng-show=\\\"plan.confirmedDate == null\\\">{{ 'common.approve' | translate }}</span> \\n                            <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                        </button>\\n                    </div>\\n                    <div ng-show=\\\"vm.isSelected(plan) && vm.canUndoConfirm(plan) && !vm.isEditingConfirmed\\\">\\n                        <button class=\\\"btn btn-xs btn-default\\\" ng-disabled=\\\"vm.isEditingPredicted\\\" ng-if=\\\"vm.canUndoConfirm(plan)\\\" ng-click=\\\"vm.editConfirmed(plan)\\\">\\n                            <span ng-show=\\\"plan.confirmedDate != null\\\">{{ vm.formatDate(plan.confirmedDate) }}</span> \\n                            <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                        </button>\\n                    </div>\\n                    <div ng-show=\\\"!vm.canConfirm(plan) && plan.completed\\\">\\n                        {{ vm.formatDate(plan.confirmedDate) }}\\n                    </div>\\n                    <div ng-show=\\\"vm.isSelected(plan) && vm.isEditingConfirmed\\\" style=\\\"position: absolute; z-index: 10;\\\">\\n                        <span style=\\\"white-space: nowrap;\\\" >\\n                            <wj-input-date\\n                                style=\\\"font-size:12px ;width:124px;\\\"\\n                                value=\\\"plan.confirmedDate\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                is-required=\\\"false\\\"\\n                                placeholder=\\\"{{ 'common.approve' | translate }}\\\">\\n                            </wj-input-date>\\n                            <input style=\\\"display: inline-block; margin-left:-210px; margin-right:250px\\\" type=\\\"checkbox\\\" ng-model=\\\"vm.recalculate\\\" ng-click=\\\"vm.doRecalculateDiffrence(plan)\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"Beräkna om Leverans Prognos?\\\" tooltip-popup-delay=\\\"100\\\">\\n                            <button style=\\\"display: inline-block;\\\" ng-click=\\\"vm.savePlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-success'\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.apply' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-check\\\"></i></button>\\n                            <button style=\\\"display: inline-block;\\\" ng-click=\\\"vm.undoPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-danger'\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.cancel' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n                        </span>\\n                    </div>\\n                </td>\\n                <td>{{ plan.user }}</td>\\n                <td>\\n                    <input style=\\\"height:26px\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" ng-model=\\\"plan.comment\\\" ng-focus=\\\"vm.selectRow(plan)\\\"\\n                    placeholder=\\\"{{ 'order.deliveryplanning.comment' | translate }}\\\" ng-disabled=\\\"(!vm.isSelected(plan) && vm.editingAny()) || plan.completed\\\">\\n                </td>\\n                <td>\\n                    <button ng-click=\\\"vm.editSavedPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-primary'\\\" ng-show=\\\"vm.canUndoConfirm(plan) && !vm.editingAny()\\\" \\n                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.edit' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-edit\\\"></i></button>\\n                    <button ng-click=\\\"vm.savePlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-success'\\\" ng-show=\\\"vm.isSelected(plan) && !vm.isEditingConfirmed && !vm.isEditingPredicted\\\"\\n                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.apply' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-check\\\"></i></button>\\n                    <button ng-click=\\\"vm.undoPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-danger'\\\" ng-show=\\\"vm.isSelected(plan)  && !vm.isEditingConfirmed && !vm.isEditingPredicted\\\"\\n                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.cancel' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n                </td>\\n            </tr>\\n        </tbody>\\n    </table>\\n    <div style=\\\"height:200px;\\\"></div>\\n</div>\\n\\n<div class=\\\"m-t-xxs col-lg-12\\\" style=\\\"background-color: white;\\\">\\n    <table class=\\\"table\\\" style=\\\"max-width: 1460px;\\\">\\n        <thead>\\n            <th></th>\\n            <th class=\\\"col-lg-2\\\" style=\\\"padding-left:8px;\\\">{{ 'order.deliveryplanning.stage' | translate }}</th>\\n            <th class=\\\"col-lg-1\\\">{{ 'order.deliveryplanning.planned' | translate }}</th>\\n            <th class=\\\"col-lg-1\\\">{{ 'order.deliveryplanning.deliveryforecast' | translate }}</th>\\n            <th class=\\\"col-lg-1\\\">{{ 'order.deliveryplanning.confirmed' | translate }}</th>\\n            <th class=\\\"col-lg-1\\\">{{ 'order.deliveryplanning.confirmedBy' | translate }}</th>\\n            <th class=\\\"col-lg-3\\\">{{ 'order.deliveryplanning.comment' | translate }}</th>\\n            <th class=\\\"col-lg-3\\\"></th>\\n        </thead>\\n        <tbody ng-repeat=\\\"plan in vm.deliveryPlansCopy\\\" ng-style=\\\"vm.getBackgroundColor(plan)\\\" ng-disabled=\\\"vm.selectedDeliveryPlanCopy.Id != plan.Id\\\">\\n            <tr>\\n                <td ng-show=\\\"!plan.completed\\\" style=\\\"font-size:20px; padding:4px\\\"></td>\\n                <td ng-show=\\\"plan.completed\\\" style=\\\"font-size:20px; padding:4px\\\"><i class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i></td>\\n                <td style=\\\"padding: 8px; padding-bottom:1px\\\"><b style=\\\"overflow: hidden; white-space: nowrap;\\\">{{ plan.name }}</b></td>\\n                <td><div ng-show=\\\"vm.isLeadTime(plan)\\\">{{ plan.plannedDate.toString().substring(0,10) }}</div></td>\\n                <td style=\\\"padding: 8px; padding-bottom:0px;padding-top:3px\\\" ng-style=\\\"vm.getPredictedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.isLeadTime(plan)\\\">\\n                        <div ng-show=\\\"(vm.isSelected(plan) && !vm.isEditingPredicted) || (!vm.isSelected(plan) && !vm.editingAny())\\\">\\n                            <button style=\\\"height: 30px; width:124px\\\"  class=\\\"btn btn-default\\\" ng-style=\\\"vm.getPredictedButtonBackgroundColor(plan)\\\" ng-disabled=\\\"vm.isEditingConfirmed\\\" ng-if=\\\"vm.canChangePredicted(plan)\\\" ng-click=\\\"vm.editPredicted(plan)\\\"\\n                                tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'order.deliveryplanning.planned' | translate }}: {{ plan.plannedDate.toString().substring(0,10) }}.\\\" tooltip-popup-delay=\\\"100\\\">\\n                                {{ vm.formatDate(plan.predictedDate) }}\\n                                <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                            </button>\\n                        </div>\\n                        <div style=\\\"white-space: nowrap; padding: 8px; padding-bottom:1px; padding-top:5px\\\" \\n                            ng-show=\\\"!vm.canChangePredicted(plan) || (vm.editingAny() && !vm.isSelected(plan))\\\">\\n                            {{ vm.formatDate(plan.predictedDate) }}\\n                            <div ng-show=\\\"vm.showDifferece(plan)\\\" style=\\\"display: inline-block;\\\">\\n                                <div ng-show=\\\"vm.recalculatedDifference > 0\\\" style=\\\"color:red ;\\\">\\n                                    +{{ vm.recalculatedDifference }}\\n                                </div>\\n                                <div ng-show=\\\"vm.recalculatedDifference < 0\\\" style=\\\"color:green \\\">\\n                                    {{ vm.recalculatedDifference }}\\n                                </div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                    <div ng-show=\\\"vm.isSelected(plan) && vm.isEditingPredicted\\\" style=\\\"position: absolute; z-index: 10; width:124px;\\\">\\n                        <span style=\\\"white-space: nowrap;\\\" >\\n                            <wj-input-date\\n                                style=\\\"width:124px;\\\"\\n                                value=\\\"plan.predictedDate\\\"\\n                                is-dropped-down-changing=\\\"vm.doRecalculateDiffrence(plan)\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                ng-disabled=\\\"!vm.canChangePredicted(plan)\\\">\\n                            </wj-input-date>\\n                            <input style=\\\"display: inline-block; margin-left:10px; margin-right:10px\\\" type=\\\"checkbox\\\" ng-model=\\\"vm.recalculate\\\" ng-click=\\\"vm.doRecalculateDiffrence(plan)\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"Beräkna om Leverans Prognos?\\\" tooltip-popup-delay=\\\"100\\\">\\n                            <button style=\\\"display: inline-block;\\\" ng-click=\\\"vm.savePlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-success'\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.apply' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-check\\\"></i></button>\\n                            <button style=\\\"display: inline-block;\\\" ng-click=\\\"vm.undoPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-danger'\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.cancel' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n                        </span>\\n                    </div>\\n                </td>\\n                <td style=\\\"padding: 8px; padding-bottom:0px;padding-top:3px\\\" ng-style=\\\"vm.getConfirmedBackgroundColor(plan)\\\">\\n                    <div ng-show=\\\"vm.canConfirm(plan) && !vm.isEditingConfirmed && (vm.isSelected(plan) || !vm.editingAny())\\\">\\n                        <button style=\\\"height: 30px;\\\" class=\\\"btn btn-default\\\" ng-disabled=\\\"vm.isEditingPredicted\\\" ng-if=\\\"vm.canConfirm(plan)\\\" ng-click=\\\"vm.editConfirmed(plan)\\\">\\n                            <span ng-show=\\\"plan.confirmedDate == null\\\">{{ 'common.approve' | translate }}</span> \\n                            <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                        </button>\\n                    </div>\\n                    <div ng-show=\\\"vm.isSelected(plan) && vm.canUndoConfirm(plan) && !vm.isEditingConfirmed\\\">\\n                        <button style=\\\"height: 30px;\\\" class=\\\"btn btn-default\\\" ng-disabled=\\\"vm.isEditingPredicted\\\" ng-if=\\\"vm.canUndoConfirm(plan)\\\" ng-click=\\\"vm.editConfirmed(plan)\\\">\\n                            <span ng-show=\\\"plan.confirmedDate != null\\\">{{ vm.formatDate(plan.confirmedDate) }}</span> \\n                            <i class=\\\"fa fa-caret-down\\\" style=\\\"padding-left:6px\\\"></i>\\n                        </button>\\n                    </div>\\n                    <div style=\\\" padding: 8px; padding-bottom:1px; padding-top:5px\\\"\\n                        ng-show=\\\"!vm.canConfirm(plan) && plan.completed\\\">\\n                        {{ vm.formatDate(plan.confirmedDate) }}\\n                    </div>\\n                    <div ng-show=\\\"vm.isSelected(plan) && vm.isEditingConfirmed\\\" style=\\\"position: absolute; z-index: 10;\\\">\\n                        <span style=\\\"white-space: nowrap;\\\" >\\n                            <wj-input-date\\n                                style=\\\"width:124px;\\\"\\n                                value=\\\"plan.confirmedDate\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                is-required=\\\"false\\\"\\n                                placeholder=\\\"{{ 'common.approve' | translate }}\\\">\\n                            </wj-input-date>\\n                            <button style=\\\"display: inline-block;\\\" ng-click=\\\"vm.savePlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-success'\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.apply' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-check\\\"></i></button>\\n                            <button style=\\\"display: inline-block;\\\" ng-click=\\\"vm.undoPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-danger'\\\"\\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.cancel' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n                        </span>\\n                    </div>\\n                </td>\\n                <td style=\\\"padding: 8px; padding-bottom:1px; padding-left: 4px\\\">{{ plan.user }}</td>\\n                <td style=\\\"padding: 8px; padding-bottom:1px\\\">\\n                    <input style=\\\"height:26px\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" ng-model=\\\"plan.comment\\\" ng-focus=\\\"vm.selectRow(plan)\\\"\\n                    placeholder=\\\"{{ 'order.deliveryplanning.comment' | translate }}\\\" ng-disabled=\\\"(!vm.isSelected(plan) && vm.editingAny()) || plan.completed\\\">\\n                </td>\\n                <td style=\\\"padding: 8px; padding-bottom:1px\\\">\\n                    <button ng-click=\\\"vm.editSavedPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-primary'\\\" ng-show=\\\"vm.canUndoConfirm(plan) && !vm.editingAny()\\\" \\n                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.edit' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-edit\\\"></i></button>\\n                    <button ng-click=\\\"vm.savePlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-success'\\\" ng-show=\\\"vm.isSelected(plan) && !vm.isEditingConfirmed && !vm.isEditingPredicted\\\"\\n                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.apply' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-check\\\"></i></button>\\n                    <button ng-click=\\\"vm.undoPlan(plan)\\\" class=\\\"btn-xs\\\" ng-class=\\\"'btn-danger'\\\" ng-show=\\\"vm.isSelected(plan)  && !vm.isEditingConfirmed && !vm.isEditingPredicted\\\"\\n                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.cancel' | translate }}\\\" tooltip-popup-delay=\\\"100\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n                </td>\\n            </tr>\\n        </tbody>\\n    </table>\\n    <div style=\\\"height:200px;\\\"></div>\\n</div>-->\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\n<a ng-click=\\\"vm.toggleDisplay()\\\" ng-show=\\\"vm.deliveryRows.length > 0\\\">\\n    <label class=\\\"control-label\\\">{{'order.deliveries' | translate}}:</label>\\n    <i class=\\\"fa {{vm.displayComponent ? 'fa-chevron-down':'fa-chevron-right'}}\\\"></i>\\n</a>\\n<table class=\\\"table-hover table-condensed table-readable-compact\\\" ng-show=\\\"vm.displayComponent &&  vm.deliveryRows.length > 0\\\">\\n    <thead>\\n        <th> {{'stocktransaction.transactionType' | translate}} </th>\\n        <th> {{ 'location.location' | translate }} </th>\\n        <th> {{'stock.accountingDate' | translate}} </th>\\n        <th> {{'order.delivereddate' | translate}} </th>\\n        <th> {{'article.variantdetail1' | translate}} </th>\\n        <th> {{'article.variantdetail2' | translate}} </th>\\n        <th> {{'order.quantity' | translate}} </th>\\n        <th> {{'order.deliveringperson' | translate}} </th>\\n    </thead>\\n    <tr ng-repeat=\\\"deliveryRow in vm.deliveryRows\\\">\\n        <td> {{ vm.translateDeliveryRowType(deliveryRow.deliveryRowType) }} </td>\\n        <td> {{ deliveryRow.location.locationName }} </td>\\n        <td> {{deliveryRow.stockTransaction.accountingDate.split('T')[0]}} {{deliveryRow.stockTransaction.accountingDate.split('T')[1].substring(0, 5)}} </td>\\n        <td> {{deliveryRow.stockTransaction.transactionDate.split('T')[0]}} {{deliveryRow.stockTransaction.transactionDate.split('T')[1].substring(0, 5)}} </td>\\n        <td> {{deliveryRow.articleVariant.variantDetail1.variantDetailName}} </td>\\n        <td> {{deliveryRow.articleVariant.variantDetail2.variantDetailName}} </td>\\n        <td> {{deliveryRow.quantity}} </td>\\n        <td> {{deliveryRow.deliveringUser.firstName}} {{deliveryRow.deliveringUser.lastName}} </td>\\n    </tr>\\n</table>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\">\\n    <label class=\\\"col-sm-12\\\" tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{'article.articlenumber' | translate}}: {{ vm.orderArticle.article.articleNumber + (vm.orderArticle.article.articleName != undefined && vm.orderArticle.article.articleName.length > 0 ? ' - ' + vm.orderArticle.article.articleName : '') }}\\\" tooltip-popup-delay=\\\"300\\\">\\n        {{ vm.orderArticle.article.alternativeArticleNumber !== undefined && vm.orderArticle.article.alternativeArticleNumber.length > 0 ? vm.orderArticle.article.alternativeArticleNumber : vm.orderArticle.article.articleNumber }}\\n        {{ vm.orderArticle.article.articleName != undefined && vm.orderArticle.article.articleName.length > 0 ? ' - ' + vm.orderArticle.article.articleName : '' }}\\n    </label>\\n\\n    <div ng-repeat=\\\"dest in vm.flexGridData.destinations\\\" style=\\\"max-width:100%;\\\">\\n        {{ dest.locationName }}<br />\\n        <wj-flex-grid\\n            headers-visibility=\\\"Column\\\"\\n            selection-mode=\\\"Row\\\"\\n            style=\\\"max-width:100%;\\\"\\n            class=\\\"orders-flex-grid orders-flex-grid-fixed-width\\\"\\n            auto-generate-columns=\\\"False\\\"\\n            initialized=\\\"vm.gridPostInitialization(s, e, dest.locationName)\\\">\\n        </wj-flex-grid>\\n    </div>\\n</div>\\n<div class=\\\"col-lg-12\\\">\\n    <ca-order-article-deliveries order-article=\\\"vm.orderArticle\\\"> </ca-order-article-deliveries>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    tr.no-b-border td{\\n        border-bottom: 0px !important;\\n    }\\n</style>\\n<div class=\\\"col-lg-12\\\">\\n    <table class=\\\"ca-flexgrid cell-borders\\\" style=\\\"max-width:1178px;\\\">\\n        <thead>\\n            <th>{{'order.ordernumber' | translate}}</th>\\n            <th>{{'order.externalordernumber' | translate}}</th>\\n            <th>{{'order.ordertype' | translate}}</th>\\n        \\n            <th ng-if=\\\"vm.shouldShowFromLocation()\\\">{{'order.fromlocation' | translate}}</th>\\n            <th ng-if=\\\"vm.shouldShowSupplier()\\\">{{'order.companyname' | translate}}</th>\\n            <th ng-if=\\\"vm.shouldShowDestination()\\\">{{'order.destination' | translate}}</th>\\n        \\n            <th>{{'order.collection' | translate}}</th>\\n            <th  ng-if=\\\"vm.hasClaim\\\" style=\\\"text-align: right;\\\">{{'order.totalpurchasecost' | translate}}</th>\\n            <th style=\\\"text-align: right;\\\">{{'order.totalsalesprice' | translate}}</th>\\n            <th style=\\\"text-align: right;\\\">{{'order.totalquantity' | translate}}</th>\\n            <th style=\\\"text-align: right;\\\">{{'order.deliveredquantity' | translate}}</th>\\n            <th>{{'order.planneddeliverydate' | translate}}</th>\\n            <th>{{'order.status' | translate}}</th>\\n        </thead>\\n        <tbody>\\n            <tr>\\n                <td>{{ vm.order.orderNumber }}</td>\\n                <td>{{ vm.order.orderNumberExternal }}</td>\\n                <td>{{ vm.order.orderType.orderTypeName | translate }}</td>\\n                \\n                <td ng-if=\\\"vm.shouldShowFromLocation()\\\">{{ vm.order.fromLocation.locationName }}</td>\\n                <td ng-if=\\\"vm.shouldShowSupplier()\\\">{{ vm.order.company.companyName }}</td>\\n                <td ng-if=\\\"vm.shouldShowDestination()\\\">{{ vm.order.destination.locationName }}</td>\\n                \\n                <td>{{ vm.order.collection.collectionDescription }}</td>\\n                <td ng-if=\\\"vm.hasClaim\\\" style=\\\"text-align: right;\\\">{{ vm.order.summarizedPurchaseCost.toFixed(2) }}</td>\\n                <td style=\\\"text-align: right;\\\">{{ vm.order.summarizedSalesPrice.toFixed(2) }}</td>\\n                <td style=\\\"text-align: right;\\\">{{ vm.order.summarizedQuantity }}</td>\\n                <td style=\\\"text-align: right;\\\">{{ vm.abs(vm.order.summarizedDeliveredQuantity) }}</td>\\n                <td>{{ vm.order.plannedDeliveryDate.toString().substring(0,10) }}</td>\\n                <td>{{ vm.order.statusName | translate }}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n    <div class=\\\"col-lg-12\\\" style=\\\"max-width: 1178px; height:20px; margin-top:-8px;\\\">\\n        <label style=\\\"font-weight:bold; vertical-align: text-top; padding-right:10px;\\\"> {{'base.country'| translate}}: </label>\\n        <label ng-if=\\\"vm.order.countryOfOrigin\\\">{{vm.order.countryOfOrigin.code}} {{vm.order.countryOfOrigin.name}}</label>\\n    </div>\\n</div>\\n<div class=\\\"col-lg-12\\\">\\n    <table class=\\\"table\\\" style=\\\"max-width:1178px;\\\">\\n        <thead>\\n            <th>{{'order.createdby' | translate}}</th>\\n            <th>{{'order.purchaser' | translate}}</th>\\n            <th style=\\\"text-align: center;\\\">{{'common.approved' | translate}}</th>\\n            <th style=\\\"text-align: center;\\\">{{'order.hasbeenprinted' | translate}}</th>\\n            <th style=\\\"text-align: center;\\\">{{'order.ispriority' | translate}}</th>\\n        </thead>\\n        <tbody>\\n            <tr>\\n                <td>{{ vm.order.user.firstName }} {{ vm.order.user.lastName }}</td>\\n                <td>{{ vm.order.purchaser.firstName }} {{ vm.order.purchaser.lastName }}</td>\\n                <td style=\\\"text-align: center;\\\">\\n                    <i class=\\\"fa fa-check\\\" ng-if=\\\"vm.order.approved\\\"></i>\\n                    <i class=\\\"fa fa-times\\\" ng-if=\\\"!vm.order.approved\\\"></i>\\n                </td>\\n                <td style=\\\"text-align: center;\\\">\\n                    <i class=\\\"fa fa-check\\\" ng-if=\\\"vm.order.hasBeenPrinted\\\"></i>\\n                    <i class=\\\"fa fa-times\\\" ng-if=\\\"!vm.order.hasBeenPrinted\\\"></i>\\n                </td>\\n                <td style=\\\"text-align: center;\\\">\\n                    <i class=\\\"fa fa-flag text-danger\\\" ng-if=\\\"vm.order.isPriority\\\"></i>\\n                </td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\\n<div class=\\\"col-lg-12\\\" style=\\\"max-width: 1178px;\\\">\\n<label style=\\\"font-weight:bold; vertical-align: text-top; padding-right:10px;\\\"> {{'order.note'| translate}}: </label>\\n<label>{{vm.order.orderNote}} </label>\\n</div>\\n<div class=\\\"col-lg-12\\\" style=\\\"max-width: 1178px;\\\">\\n<label style=\\\"font-weight:bold; vertical-align: text-top; padding-right:10px;\\\"> {{'order.externalordernumber'| translate}}: </label>\\n<label>{{vm.order.orderNumberExternal}} </label>\\n</div>\\n\\n<div class=\\\"col-lg-12\\\">\\n    <button ng-click=\\\"vm.goToDeliveryPlanning()\\\" ng-if=\\\"vm.isDeliveryPlanningEnabled()\\\" class=\\\"btn btn-sm btn-default\\\">\\n        {{'order.deliveryPlan' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.goToOrderDelivery()\\\" ng-if=\\\"vm.canDeliverIn()\\\" class=\\\"btn btn-sm btn-default\\\" ng-disabled=\\\"!vm.canAccess('order', 'update')\\\">\\n        {{'order.deliver' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.goToModifyOrder()\\\" ng-if=\\\"vm.canEditOrder()\\\" class=\\\"btn btn-sm btn-default\\\" ng-disabled=\\\"!vm.canAccess('order', 'update')\\\">\\n        {{'order.editorder' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.goToCopyOrder()\\\" ng-if=\\\"vm.canCopyOrder()\\\" class=\\\"btn btn-sm btn-default\\\">\\n        {{'order.copyorder' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.getOrderAsPdf()\\\" class=\\\"btn btn-sm btn-default\\\">\\n        {{'order.getaspdf' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.getOrderAsCsv()\\\" class=\\\"btn btn-sm btn-default\\\">\\n        {{'order.getascsv' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.showPrintPickingListDialog()\\\" class=\\\"btn btn-sm btn-default\\\">\\n        {{'order.print.pickingList' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.showLabelPrintingDialog()\\\" class=\\\"btn btn-sm btn-default\\\">\\n        {{'order.printlabel' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.deleteOrder()\\\" class=\\\"btn btn-sm btn-default\\\" ng-if=\\\"vm.canDeleteOrder()\\\" ng-disabled=\\\"!vm.canAccess('order', 'delete')\\\">\\n        {{'order.deleteorder' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.downloadDeliveryDocument()\\\" class=\\\"btn btn-sm btn-default\\\">\\n        {{'order.print.deliverydocument' | translate}}\\n    </button>\\n    <button ng-click=\\\"vm.updateOrderNote()\\\" class=\\\"btn btn-sm btn-default\\\">\\n            {{'order.editnotes' | translate}}\\n        </button>\\n</div>\\n\\n\\n<div class=\\\"col-lg-12\\\">\\n    <table class=\\\"ca-flexgrid row-borders\\\">\\n        <thead>\\n            <th>\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'article.alternativearticlenumber'\\\" \\n                    value-name=\\\"'article.alternativeArticleNumber'\\\"/>\\n            </th>\\n            <th>\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'article.articlename'\\\" \\n                    value-name=\\\"'article.articleName'\\\"/>\\n            </th>\\n            <th ng-if=\\\"vm.hasClaim\\\">\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'article.purchasecost'\\\" \\n                    value-name=\\\"'averageOrderRowPurchaseCost'\\\"/>\\n            </th>\\n            <th>\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'article.salesprice'\\\" \\n                    value-name=\\\"'averageArticleVariantSalesPrice'\\\"/>\\n            </th>\\n            <th>\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'article.totalpurchasecost'\\\" \\n                    value-name=\\\"'summarizedPurchaseCost'\\\"/>\\n            </th>\\n            <th>\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'article.totalsalesprice'\\\" \\n                    value-name=\\\"'summarizedSalesPrice'\\\"/>\\n            </th>\\n            <th>\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'article.totalquantity'\\\" \\n                    value-name=\\\"'summarizedQuantity'\\\"/>\\n            </th>\\n            <th>\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'order.deliveredquantity'\\\" \\n                    value-name=\\\"'summarizedDeliveredQuantity'\\\"/>\\n            </th>\\n            <th>\\n                <ca-sort-table-data-header \\n                    order-by=\\\"vm.sortContentBy\\\" \\n                    reverse=\\\"vm.sortContentReverse\\\" \\n                    header=\\\"'order.deliveredcost'\\\" \\n                    value-name=\\\"'summarizedDeliveredCost'\\\"/>\\n            </th>\\n        </thead>\\n        <tbody ng-repeat=\\\"orderArticle in vm.order.orderArticles | orderBy: vm.sortContentBy : vm.sortContentReverse\\\">\\n            <tr ng-class=\\\"{'no-b-border': orderArticle.orderRows[0].comment}\\\">\\n                <td>\\n                    <a\\n                        ng-click=\\\"vm.selectOrderArticle(orderArticle)\\\" class=\\\"ca-celllink\\\"\\n                        tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{'article.articlenumber' | translate}}: {{orderArticle.article.articleNumber}}\\\" tooltip-popup-delay=\\\"300\\\">\\n                        {{ orderArticle.article.alternativeArticleNumber && orderArticle.article.alternativeArticleNumber.length > 0 ? orderArticle.article.alternativeArticleNumber : orderArticle.article.articleNumber }}\\n                    </a>\\n                </td>\\n                <td>{{ orderArticle.article.articleName }}</td>\\n                <td ng-if=\\\"vm.hasClaim\\\">{{ orderArticle.averageOrderRowPurchaseCost.toFixed(2) }}</td>\\n                <td>{{ orderArticle.averageArticleVariantSalesPrice.toFixed(2) }}</td>\\n                <td ng-if=\\\"vm.hasClaim\\\">{{ orderArticle.summarizedPurchaseCost.toFixed(2) }}</td>\\n                <td>{{ orderArticle.summarizedSalesPrice.toFixed(2) }}</td>\\n                <td>{{ vm.abs(orderArticle.summarizedQuantity) }}</td>\\n                <td>{{ vm.abs(orderArticle.summarizedDeliveredQuantity) }}</td>\\n                <td>{{ vm.abs(vm.calculateDeliveredCost(orderArticle)).toFixed(2) }}</td>\\n            </tr>\\n            <tr ng-if=\\\"orderArticle.orderRows[0].comment\\\">\\n                <td colspan=\\\"100\\\" style=\\\"padding:0px; background-color:cornsilk; border-bottom-width: 1px;\\\">\\n                    <div style=\\\"height:14px; padding-left:6px; color: grey;font-size:x-small; vertical-align: top;\\\">\\n                        <u>{{ 'inventory.row' | translate }} {{ 'order.deliveryplanning.comment' | translate }}:</u>&ensp;{{orderArticle.orderRows[0].comment}}\\n                    </div>\\n                </td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\\n\\n<ca-order-article-rows order-article=\\\"vm.selectedOrderArticle\\\" order=\\\"vm.order\\\"></ca-order-article-rows>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div style=\\\"max-width: 1178px; \\\">\\n    <div class=\\\"col-lg-12 m-b-md\\\">\\n        <form ng-submit=\\\"vm.searchTermChanged()\\\">\\n            <span class=\\\"m-b-none m-t-none m-l-xxl\\\" style=\\\"font-size:smaller\\\">\\n                <label class=\\\"i-checks m-t-xs m-r-md m-l-md\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.onlyOrderNumber\\\" />\\n                    <i></i>\\n                    {{'order.onlyOrderNumber' | translate}}\\n                </label>\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.onlyScan\\\" />\\n                    <i></i>\\n                    {{'order.scan' | translate}}\\n                </label>\\n            </span>\\n            <div class=\\\"input-group m-b-xxs list-menu\\\" style=\\\"max-width: 1178px; margin-top:0px;\\\">\\n\\n                    <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                        <button type=\\\"submit\\\" class=\\\"btn btn-sm btn-default\\\">\\n                            <i class=\\\"fa fa-search text-md m-t-xxs\\\"></i>\\n                        </button>\\n                    </span>\\n                    <input id=\\\"scannerField\\\" type=\\\"text\\\" class=\\\"form-control input-sm b-b no-bg text-md\\\" ng-model=\\\"vm.scannerInput\\\" ng-show=\\\"vm.onlyScan\\\" placeholder=\\\"{{'order.scan' | translate}}...\\\">\\n                    <input type=\\\"text\\\" class=\\\"form-control input-sm b-b no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-hide=\\\"vm.onlyScan\\\"\\n                        ng-model-options=\\\"{debounce: 2800}\\\" ng-change=\\\"vm.searchTermChanged()\\\" placeholder=\\\"{{('common.search' | translate) + ' ' + (vm.onlyOrderNumber ? ('order.ordernumber' | translate): '') }}...\\\"\\n                        tooltip-placement=\\\"bottom-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'article.articleList.pressEnter'  | translate}}\\\" tooltip-popup-delay=\\\"300\\\">\\n\\n                <input type=\\\"submit\\\" style=\\\"position: absolute; left:-9999px; width: 1px; height: 1px;\\\"/>\\n            </div>\\n                <i class=\\\"m-l-xxl\\\" style=\\\"font-size:smaller\\\" ng-hide=\\\"vm.onlyScan\\\">\\n                    <u>\\n                        <a tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'article.elasticSearch.tooltip' | translate }}\\\" tooltip-popup-delay=\\\"300\\\"> \\n                            {{ 'article.search.tip' | translate }} \\n                        </a>\\n                    </u>\\n                </i>\\n        </form>\\n    </div>\\n\\n    <div class=\\\"col-lg-12 m-b-md\\\">\\n        <div class=\\\"m-b-md\\\">\\n            <span class=\\\"m-b-none m-t-none\\\" style=\\\"margin-left:20px;\\\" uib-tooltip=\\\"{{ 'order.alsoIncludesPartiallyDelivered' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"bottom-left\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showUndeliveredOnly\\\" />\\n                    <i></i>\\n                    {{'order.onlyundelivered' | translate}}\\n                </label>\\n            </span>\\n            <span class=\\\"m-b-none m-t-none\\\" style=\\\"margin-left:20px;\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showUnprintedOnly\\\" />\\n                    <i></i>\\n                    {{'order.onlyunprinted' | translate}}\\n                </label>\\n            </span>\\n            <span class=\\\"m-b-none m-t-none\\\" style=\\\"margin-left:20px;\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showUnapprovedOnly\\\" />\\n                    <i></i>\\n                    {{'order.onlyunapproved' | translate}}\\n                </label>\\n            </span>\\n            <span class=\\\"m-b-none m-t-none\\\" style=\\\"margin-left:20px;\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.useMonthsBack\\\" />\\n                    <i></i>\\n                    {{'order.useMonthsBack' | translate}}\\n                </label>\\n                <span  style=\\\"width:158px; margin-left:20px;padding-top:8px\\\" ng-show=\\\"vm.useMonthsBack\\\">\\n                    <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.monthsBack\\\" style=\\\" display: inline-block; height:32px;\\\">\\n                        <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                        <ui-select-choices repeat=\\\"months in vm.monthsOptions\\\">\\n                            <span>{{months}} {{ 'purchaseorderanalysis.monthsBack' | translate }}</span>\\n                        </ui-select-choices>\\n                    </ui-select>\\n                    {{ 'purchaseorderanalysis.monthsBack' | translate }}\\n                </span>\\n            </span>\\n        </div>\\n        <div>\\n            <button ng-click=\\\"vm.changeToStoreOrderSearch()\\\" class=\\\"btn m-r\\\" ng-class=\\\"vm.currentOrderListing === 'store' ? 'btn-primary' : 'btn-default'\\\"> {{'order.store' | translate}} </button>\\n            <button ng-click=\\\"vm.changeToInternalOrderSearch()\\\" class=\\\"btn m-r\\\" ng-class=\\\"vm.currentOrderListing === 'internal' ? 'btn-primary' : 'btn-default'\\\"> {{'order.internal' | translate}} </button>\\n            <button ng-click=\\\"vm.changeToAutoOrderNormalSearch()\\\" class=\\\"btn m-r\\\" ng-class=\\\"vm.currentOrderListing === 'auto' ? 'btn-primary' : 'btn-default'\\\"> {{'order.autoorder' | translate}} </button>\\n            <button ng-click=\\\"vm.changeToAutoOrderInternalSearch()\\\" class=\\\"btn m-r\\\" ng-class=\\\"vm.currentOrderListing === 'autointernal' ? 'btn-primary' : 'btn-default'\\\"> {{'order.autoorderinternal' | translate}} </button>\\n            <button ng-click=\\\"vm.changeToReturnOrderSearch()\\\" class=\\\"btn m-r\\\" ng-class=\\\"vm.currentOrderListing === 'return' ? 'btn-primary' : 'btn-default'\\\"> {{'order.returnorder' | translate}} </button>\\n            <button ng-click=\\\"vm.changeToAllOrderSearch()\\\" class=\\\"btn m-r\\\" ng-class=\\\"vm.currentOrderListing === 'all' ? 'btn-primary' : 'btn-default'\\\"> {{'order.allorders' | translate}} </button>\\n        </div> \\n    </div>\\n</div>\\n\\n\\n<div class=\\\"col-lg-12\\\" style=\\\"max-width: 1178px;\\\">\\n    <button ng-hide=\\\"vm.showSelection\\\" ng-click=\\\"vm.togglePrintMode('orderPrinting')\\\" class=\\\"btn btn-default\\\"> {{'order.print' | translate}} </button>\\n    <button ng-show=\\\"vm.showSelection && vm.printModeType === 'orderPrinting'\\\" ng-click=\\\"vm.printSelectedOrders()\\\" class=\\\"btn btn-primary\\\"> {{'order.printdisplayed' | translate}} </button>\\n    <button ng-show=\\\"vm.showSelection && vm.printModeType === 'orderPrinting'\\\" ng-click=\\\"vm.printSelectedOrdersCsv()\\\" class=\\\"btn btn-primary\\\"> {{'order.getascsv' | translate}} </button>\\n    <button ng-show=\\\"vm.showSelection && vm.printModeType === 'orderPrinting'\\\" ng-click=\\\"vm.printSelectedOrderPickingLists()\\\" class=\\\"btn btn-primary\\\"> {{'order.printdisplayedwithbarcodes' | translate}} </button>\\n    <button ng-hide=\\\"vm.showSelection\\\" ng-click=\\\"vm.togglePrintMode('orderDeletion')\\\" class=\\\"btn btn-default\\\"> {{'common.delete' | translate}} </button>\\n    <button ng-show=\\\"vm.showSelection && vm.printModeType === 'orderDeletion'\\\" ng-disabled=\\\"!vm.isAllowedToDeleteSelected()\\\" ng-click=\\\"vm.deleteSelectedOrders()\\\" class=\\\"btn btn-primary\\\"> {{'common.delete' | translate}} </button>\\n    <button ng-show=\\\"vm.showSelection\\\" ng-click=\\\"vm.togglePrintMode()\\\" class=\\\"btn btn-default\\\"> {{'common.cancel' | translate}} </button>\\n    <span style=\\\"padding: 10px 5px;\\\">{{ 'common.totalResults' | translate }}: {{ vm.totalItems }}</span>\\n    <div style=\\\"height:5.5px; margin-left: 17.5%; margin-right: 17.5%;\\\" uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.limit\\\" max-size=\\\"10\\\" ng-change=\\\"vm.searchTermChanged()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n</div>\\n\\n<wj-flex-grid items-source=\\\"vm.orders\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\"\\n            is-read-only=\\\"true\\\" class=\\\"orders-flex-grid orders-flex-grid-fixed-width\\\" id=\\\"orderFlexGrid\\\"\\n            initialized=\\\"vm.gridInitialization(s)\\\" selection-changed=\\\"vm.gridSelectionChanged(e)\\\">\\n    <wj-flex-grid-column header=\\\"\\\" width=\\\"*\\\" align=\\\"center\\\">\\n        <input type=\\\"checkbox\\\" ng-model=\\\"$item.isSelected\\\">\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.ordernumber' | translate}}\\\" binding=\\\"orderNumber\\\" width=\\\"*\\\" align=\\\"left\\\">\\n        <a ng-click=\\\"vm.transitionToState($item.id, $item.orderNumber)\\\" class=\\\"ca-celllink\\\">\\n            {{$item.orderNumber}}\\n        </a>\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.externalordernumber' | translate}}\\\" binding=\\\"orderNumberExternal\\\" width=\\\"*\\\" align=\\\"left\\\">\\n        <a ng-click=\\\"vm.transitionToState($item.id, $item.orderNumber)\\\" class=\\\"ca-celllink\\\">\\n            {{$item.orderNumberExternal}}\\n        </a>\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.ordertype' | translate}}\\\" binding=\\\"orderType.orderTypeName\\\" width=\\\"2*\\\">\\n        <span>\\n            {{$item.orderType.orderTypeName | translate}}\\n        </span>\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.collection' | translate}}\\\" binding=\\\"collection.collectionDescription\\\" width=\\\"2*\\\"></wj-flex-grid-column>\\n\\n    <wj-flex-grid-column ng-if=\\\"vm.shouldShowFromLocation()\\\" header=\\\"{{'order.fromlocation' | translate}}\\\" binding=\\\"fromLocation.locationName\\\" width=\\\"2*\\\"> </wj-flex-grid-column>\\n    <wj-flex-grid-column ng-if=\\\"vm.shouldShowSupplier()\\\" header=\\\"{{'order.companyname' | translate}}\\\" binding=\\\"company.companyName\\\" width=\\\"2*\\\"> </wj-flex-grid-column>\\n    <wj-flex-grid-column ng-if=\\\"vm.shouldShowDestination()\\\" header=\\\"{{'order.destination' | translate}}\\\" binding=\\\"destination.locationName\\\" width=\\\"2*\\\"> </wj-flex-grid-column>\\n\\n    <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'order.totalpurchasecost' | translate}}\\\" binding=\\\"summarizedPurchaseCost\\\" width=\\\"2*\\\">\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.totalsalesprice' | translate}}\\\" binding=\\\"summarizedSalesPrice\\\" width=\\\"2*\\\"> </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.totalquantity' | translate}}\\\" binding=\\\"summarizedQuantity\\\" width=\\\"*\\\" align=\\\"right\\\">\\n        {{$item.summarizedQuantity}}\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.deliveredquantity' | translate}}\\\" binding=\\\"summarizedDeliveredQuantity\\\" width=\\\"*\\\" align=\\\"right\\\">\\n        {{vm.absolute($item.summarizedDeliveredQuantity)}}\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.planneddeliverydate' | translate}}\\\" binding=\\\"plannedDeliveryDate\\\" width=\\\"2*\\\"> {{$item.plannedDeliveryDate.toString().substring(0,10)}} </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.status' | translate}}\\\" binding=\\\"\\\" width=\\\"2*\\\" id=\\\"{{$item.id}}-statusCell\\\" align=\\\"center\\\">\\n        <span>\\n            {{$item.statusName | translate}}\\n        </span>\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'common.approved' | translate}}\\\" align=\\\"Center\\\" width=\\\"*\\\">\\n        <i class=\\\"fa fa-check\\\" ng-if=\\\"$item.approved\\\"></i>\\n        <i class=\\\"fa fa-times\\\" ng-if=\\\"!$item.approved\\\"></i>\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.hasbeenprinted' | translate}}\\\" align=\\\"Center\\\" width=\\\"*\\\">\\n        <i class=\\\"fa fa-check\\\" ng-if=\\\"$item.hasBeenPrinted\\\"></i>\\n        <i class=\\\"fa fa-times\\\" ng-if=\\\"!$item.hasBeenPrinted\\\"></i>\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column header=\\\"{{'order.ispriority' | translate}}\\\" align=\\\"Center\\\" width=\\\"*\\\">\\n        <i class=\\\"fa fa-flag text-danger\\\" ng-if=\\\"$item.isPriority\\\"></i>\\n    </wj-flex-grid-column>\\n    <wj-flex-grid-column ng-if=\\\"vm.shouldShowInventoryReasonHeader()\\\" header=\\\"{{'order.inventoryReason' | translate}}\\\" binding=\\\"orderNote\\\" width=\\\"*\\\" align=\\\"left\\\">\\n        <span ng-if=\\\"$item.orderType.orderSystemType === 'inventory'\\\">\\n            {{$item.orderNote}}\\n        </span>\\n    </wj-flex-grid-column>\\n</wj-flex-grid>\\n\\n<!-- Context menu to show when right clicking the order grid. -->\\n<nav id=\\\"orderContextMenu\\\" style=\\\"position:fixed; background-color:#edf1f2;\\n        visibility:hidden\\\" control=\\\"contextMenu\\\" class=\\\"navi clearfix\\\">\\n    <ul class=\\\"nav\\\">\\n        <li>\\n            <a href=\\\"\\\" ng-click=\\\"vm.contextMenuEdit()\\\" ng-show=\\\"vm.contextMenuVisibility.edit\\\">\\n                <span>{{'common.edit' | translate}}</span>\\n            </a>\\n        </li>\\n        <li>\\n            <a href=\\\"\\\" ng-click=\\\"vm.contextMenuDeliver()\\\" ng-show=\\\"vm.contextMenuVisibility.deliver\\\">\\n                <span>{{'order.deliver' | translate}}</span>\\n            </a>\\n        </li>\\n        <li>\\n            <a href=\\\"\\\" ng-click=\\\"vm.contextMenuCopy()\\\" ng-show=\\\"vm.contextMenuVisibility.copy\\\">\\n                <span>{{'order.copyorder' | translate}}</span>\\n            </a>\\n        </li>\\n        <li>\\n            <a href=\\\"\\\" ng-click=\\\"vm.contextMenuGetAsPdf()\\\" ng-show=\\\"vm.contextMenuVisibility.getAsPdf\\\">\\n                <span>{{'order.getaspdf' | translate}}</span>\\n            </a>\\n        </li>\\n        <li>\\n            <a href=\\\"\\\" ng-click=\\\"vm.contextMenuGetAsCsv()\\\" ng-show=\\\"vm.contextMenuVisibility.getAsCsv\\\">\\n                <span>{{'order.getascsv' | translate}}</span>\\n            </a>\\n        </li>\\n        <li>\\n            <a href=\\\"\\\" ng-click=\\\"vm.contextMenuPrintLabel()\\\" ng-show=\\\"vm.contextMenuVisibility.printLabel\\\">\\n                <span>{{'order.printlabel' | translate}}</span>\\n            </a>\\n        </li>\\n        <li>\\n            <a href=\\\"\\\" ng-click=\\\"vm.contextMenuDelete()\\\" ng-show=\\\"vm.contextMenuVisibility.delete\\\">\\n                <span>{{'common.delete' | translate}}</span>\\n            </a>\\n        </li>\\n        <li>\\n            <a href=\\\"\\\" ng-click=\\\"vm.contextMenuUndo()\\\" ng-show=\\\"vm.contextMenuVisibility.undo\\\">\\n                <span>{{'common.undo' | translate}}</span>\\n            </a>\\n        </li>\\n    </ul>\\n</nav>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <!-- Panel for showing order search -->\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('order.new')\\\" ng-disabled=\\\"!vm.canAccess('order', 'create')\\\">{{'common.new' | translate}}</button></span>\\n                            <span ng-click=\\\"vm.toggleSearchFields()\\\" class=\\\"hidden-folded pull-left text-muted ng-scope\\\" ng-show=\\\"vm.order.id\\\">\\n                                <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"!vm.showSearchFields\\\"> {{'customerorder.showSearchFields' | translate}}</span>\\n                                <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"vm.showSearchFields\\\"> {{'customerorder.hideSearchFields' | translate}}</span>\\n                            </span>\\n                            <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\" ng-hide=\\\"vm.order.id\\\">&nbsp;</span>\\n                        </div>\\n                        \\n                        <div class=\\\"col-lg-12\\\" style=\\\"clear:both; height:1px\\\">&nbsp;</div>\\n                        \\n                        <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showSearchFields\\\">\\n                            <ca-order-search-result\\n                                orders=\\\"vm.orders\\\"\\n                                search-term=\\\"vm.searchTerm\\\"\\n                                current-page=\\\"vm.currentPage\\\"\\n                                total-items=\\\"vm.totalItems\\\"\\n                                order-types=\\\"vm.orderTypes\\\"\\n                                show-undelivered-only=\\\"vm.showUndeliveredOnly\\\"\\n                                show-unprinted-only=\\\"vm.showUnprintedOnly\\\"\\n                                show-unapproved-only=\\\"vm.showUnapprovedOnly\\\"\\n                                limit=\\\"vm.limit\\\"\\n                                on-search-term-changed=\\\"vm.searchTermChanged(searchTerms)\\\"\\n                                on-order-selected=\\\"vm.selectOrder(orderId)\\\"\\n                                use-scanner-navigation=\\\"vm.useScannerNavigation\\\"></ca-order-search-result>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n            \\n            <div class=\\\"col-lg-12\\\" style=\\\"clear:both; height:1px;\\\">&nbsp;</div>\\n            \\n            <!-- Panel for showing order contents -->\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div ng-if=\\\"vm.order && vm.order.id > 0\\\" class=\\\"col-lg-12\\\" id=\\\"orderContentScrollDestination\\\">\\n                        <ca-order-content order=\\\"vm.order\\\" links=\\\"vm.links\\\"></ca-order-content>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\"> \\n    <wj-flex-grid items-source=\\\"vm.articles\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" class=\\\"orders-flex-grid\\\" initialized=\\\"vm.captureArticlesGrid(s)\\\">\\n        <wj-flex-grid-column header=\\\"{{'article.alternativearticlenumber' | translate}}\\\" binding=\\\"alternativeArticleNumber\\\" is-read-only=\\\"true\\\">\\n            <a ng-click=\\\"vm.selectArticle($item)\\\" class=\\\"ca-celllink\\\" ng-if=\\\"!vm.disabled\\\">\\n                {{$item.alternativeArticleNumber}}\\n            </a>\\n            <div ng-if=\\\"vm.disabled\\\">\\n                {{$item.alternativeArticleNumber}}\\n            </div>\\n        </wj-flex-grid-column>\\n        <wj-flex-grid-column header=\\\"{{'article.articlename' | translate}}\\\" binding=\\\"articleName\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n        <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'article.purchasecost' | translate}}\\\" binding=\\\"purchaseCost\\\" width=\\\"*\\\" is-read-only=\\\"true\\\" align=\\\"Right\\\"> {{$item.purchaseCost}} </wj-flex-grid-column>\\n        <wj-flex-grid-column header=\\\"{{'article.salesprice' | translate}}\\\" binding=\\\"salesPrice\\\" width=\\\"*\\\" is-read-only=\\\"true\\\" align=\\\"Right\\\"> {{$item.salesPrice}} </wj-flex-grid-column>\\n        <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'article.totalpurchasecost' | translate}}\\\" binding=\\\"summarizedPurchaseCost\\\" width=\\\"*\\\" is-read-only=\\\"true\\\" align=\\\"Right\\\"> </wj-flex-grid-column>\\n        <wj-flex-grid-column header=\\\"{{'article.totalsalesprice' | translate}}\\\" binding=\\\"summarizedSalesPrice\\\" width=\\\"*\\\" is-read-only=\\\"true\\\" align=\\\"Right\\\"> </wj-flex-grid-column>\\n        <wj-flex-grid-column header=\\\"{{'article.totalquantity' | translate}}\\\" binding=\\\"summarizedQuantity\\\" width=\\\"*\\\" is-read-only=\\\"true\\\" align=\\\"Right\\\"> </wj-flex-grid-column>\\n    </wj-flex-grid>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<label class=\\\"control-label\\\"> {{'common.budget' | translate}} ({{vm.purchaseOrder.articleCollection.collectionDescription}}): </label>\\n<wj-flex-grid\\n            auto-generate-columns=\\\"false\\\"\\n            selectionMode=\\\"Cell\\\"\\n            headers-visibility=\\\"Column\\\"\\n            is-read-only=\\\"true\\\"\\n            class=\\\"orders-flex-grid order-flex-grid-multi\\\"\\n            initialized=\\\"vm.captureOtbGrid(s)\\\">\\n            <wj-flex-grid-column header=\\\" \\\" binding=\\\"location\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\"> {{$item.location.locationNumber}} {{$item.location.locationName}} </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'purchaseorder.orderedquantity' | translate}}\\\" binding=\\\"totalOrderedQuantity\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'purchaseorder.orderedcost' | translate}}\\\" binding=\\\"totalOrderedCost\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'purchaseorder.quantitythis' | translate}}\\\" binding=\\\"quantityThisOrder\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'purchaseorder.costthis' | translate}}\\\" binding=\\\"costPriceThisOrder\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'purchaseorder.totalquantity' | translate}}\\\" binding=\\\"totalQuantity\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'purchaseorder.totalcost' | translate}}\\\" binding=\\\"totalCost\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n            <wj-flex-grid-column ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'budget.cost' | translate}}\\\" binding=\\\"budgetCost\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'budget.opentobuy' | translate}}\\\" binding=\\\"openToBuyCost\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'budget.opentobuy' | translate}}%\\\" binding=\\\"openToBuyPercentage\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">{{$item.openToBuyPercentage}}%</wj-flex-grid-column>\\n</wj-flex-grid>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-group row\\\">\\n    <div class=\\\"col-lg-12\\\">\\n        <wj-flex-grid\\n            auto-generate-columns=\\\"false\\\"\\n            selectionMode=\\\"Cell\\\"\\n            headers-visibility=\\\"Column\\\"\\n            is-read-only=\\\"false\\\"\\n            class=\\\"orders-flex-grid order-flex-grid-multi\\\"\\n            initialized=\\\"vm.captureDistributionGrid(s)\\\"\\n            cell-edit-ended=\\\"vm.cellEditEnded();\\\">\\n        </wj-flex-grid>\\n    </div>\\n</div>\\n\\n<div class=\\\"form-group row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n        <div class=\\\"col-sm-2\\\">\\n            <input type=\\\"number\\\"\\n                class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                placeholder=\\\"{{'common.totalquantity' | translate}}\\\"\\n                ng-model=\\\"vm.totalQuantityToDistribute\\\"></input>\\n        </div>\\n        <div class=\\\"col-sm-2\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.distributeBudgetQuantities();vm.recalculateTotals()\\\">{{'common.allocate' | translate}}</button>\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.getAndApplyBudget()\\\"> {{'purchaseorder.fetchbudget' | translate}} </button>\\n        </div>\\n    </div>\\n</div>\\n\\n<div class=\\\"form-group row\\\">\\n    <div class=\\\"col-sm-12\\\">\\n        <div class=\\\"col-sm-2\\\">\\n            <ui-select class=\\\"editable-input\\\" ng-model=\\\"vm.selectedPack\\\" theme=\\\"bootstrap\\\">\\n                <ui-select-match placeholder=\\\"{{'purchaseorder.pack' | translate}}\\\">\\n                    <span>{{$select.selected.packName}}</span>\\n                </ui-select-match>\\n                <ui-select-choices repeat=\\\"pack in vm.packs track by pack.id\\\">\\n                    <span>{{pack.packName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-sm-4 bg-light b-l b-r b-b b-t\\\" ng-click=\\\"vm.toggleExtraOptionsVisibility()\\\" ng-hide=\\\"vm.showExtraOptions\\\">\\n    <a clas=\\\"auto\\\" href=\\\"\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <i class=\\\"fa fa-fw fa-angle-right\\\"> </i> {{'common.extraoptions' | translate}}\\n        </div>\\n    </a>\\n</div>\\n<div class=\\\"col-sm-4 bg-light b-l b-r b-b b-t\\\" ng-show=\\\"vm.showExtraOptions\\\">\\n    <a clas=\\\"auto\\\" href=\\\"\\\">\\n        <div class=\\\"col-lg-12 b-b\\\" ng-click=\\\"vm.toggleExtraOptionsVisibility()\\\">\\n            <i class=\\\"fa fa-fw fa-angle-down\\\"> </i> {{'common.extraoptions' | translate}}\\n        </div>\\n    </a>\\n    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n    <div class=\\\"col-lg-6\\\">\\n        <label class=\\\"i-checks m-t-xs\\\">\\n            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.purchaseOrder.orderChange\\\" />\\n            <i></i>\\n            {{'purchaseorder.orderchange' | translate}}\\n        </label>\\n    </div>\\n\\n    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n    <div class=\\\"col-sm-12\\\">\\n        <button ng-class=\\\"{'btn': true, 'btn-default': !vm.stockLogisticsHasBeenCreated, 'btn-success': vm.stockLogisticsHasBeenCreated}\\\" ng-click=\\\"vm.createStockLogistics()\\\">\\n            {{'purchaseorder.createorderingpoints' | translate}}\\n        </button>\\n    </div>\\n\\n    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n    <div class=\\\"col-lg-12\\\">\\n        <label class=\\\"i-checks m-t-xs\\\" ng-click=\\\"vm.changeToPercentageDistribution()\\\">\\n            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.distributionMethods.percentage\\\" />\\n            <i></i>\\n            {{'purchaseorder.percentage' | translate}}\\n        </label>\\n    </div>\\n\\n    <div class=\\\"col-lg-12\\\">\\n        <label class=\\\"i-checks m-t-xs\\\" ng-click=\\\"vm.changeToPackDistribution()\\\">\\n            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.distributionMethods.pack\\\" />\\n            <i></i>\\n            {{'purchaseorder.pack' | translate}}\\n        </label>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<wj-flex-grid\\n            auto-generate-columns=\\\"false\\\"\\n            selectionMode=\\\"Cell\\\"\\n            headers-visibility=\\\"Column\\\"\\n            is-read-only=\\\"true\\\"\\n            class=\\\"orders-flex-grid order-flex-grid-multi\\\"\\n            initialized=\\\"vm.captureColorChoiceAndTotalsGrid(s)\\\"\\n            items-source=\\\"vm.colorsAndTotalsRows\\\">\\n            <wj-flex-grid-column header=\\\"{{'article.variantdetail1' | translate}}\\\" binding=\\\"colorName\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">\\n                <a ng-click=\\\"vm.selectColor($item)\\\" class=\\\"ca-celllink\\\" ng-if=\\\"!vm.disabled\\\">\\n                    {{$item.colorName}}\\n                </a>\\n                </wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.totalquantity' | translate}}\\\" binding=\\\"totalQuantity\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n            <wj-flex-grid-column  ng-if=\\\"vm.hasClaim\\\" header=\\\"{{'article.totalcostprice' | translate}}\\\" binding=\\\"totalCostPrice\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n            <wj-flex-grid-column header=\\\"{{'article.totalsalesprice' | translate}}\\\" binding=\\\"totalSalesPrice\\\" width=\\\"*\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n</wj-flex-grid>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        {{'order.purchaseorder' | translate}} <span ng-hide=\\\"vm.purchaseOrder.orderNumber === '0'\\\"> - {{ vm.purchaseOrder.orderNumber }}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n\\n        <div class=\\\"form-group row\\\">\\n\\n            <label class=\\\"col-sm-3 control-label\\\">{{'order.planneddeliverydate' | translate}}:</label>\\n            <div class=\\\"col-lg-3\\\">\\n                <wj-input-date\\n                        value=\\\"vm.purchaseOrder.plannedDeliveryDate\\\"\\n                        min=\\\"2000-01-01\\\"\\n                        format=\\\"yyyy-MM-dd\\\"\\n                        style=\\\"width:100%\\\">\\n                </wj-input-date>\\n            </div>\\n\\n        </div>\\n\\n        <div class=\\\"form-group row\\\">\\n            <label class=\\\"col-sm-3 control-label\\\"> {{'order.company' | translate}}: </label>\\n            <div class=\\\"col-lg-3\\\">\\n                <ui-select ng-model=\\\"vm.purchaseOrder.company\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.purchaseOrder.orders[0].orderArticles.length > 0\\\">\\n                    <ui-select-match placeholder=\\\"\\\">{{$select.selected.companyName}}</ui-select-match>\\n                    <ui-select-choices repeat=\\\"company in vm.companies | filter:{'companyName': $select.search}\\\">\\n                        <span>{{company.companyName}}</span>\\n                    </ui-select-choices>\\n                </ui-select>\\n            </div>\\n            <div class=\\\"col-lg-6\\\"> &nbsp; </div>\\n        </div>\\n\\n        <div class=\\\"form-group row\\\">\\n            <label class=\\\"col-sm-3 control-label\\\">{{'article.collection' | translate}}:</label>\\n            <div class=\\\"col-lg-3\\\">\\n                <ui-select ng-model=\\\"vm.purchaseOrder.articleCollection\\\" theme=\\\"bootstrap\\\" class=\\\"enterAsTab\\\" enter-as-tab>\\n                    <ui-select-match placeholder=\\\"\\\">{{$select.selected.collectionDescription}}</ui-select-match>\\n                    <ui-select-choices repeat=\\\"collection in vm.collections | filter:{'collectionDescription': $select.search}\\\">\\n                        <span>{{collection.collectionDescription}}</span>\\n                    </ui-select-choices>\\n                </ui-select>\\n            </div>\\n            <div class=\\\"col-lg-6\\\"> &nbsp; </div>\\n        </div>\\n\\n        <div class=\\\"form-group row\\\">\\n            <label class=\\\"col-sm-3 control-label\\\">{{'order.note' | translate}}:</label>\\n            <div class=\\\"col-lg-3\\\">\\n                <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                       type=\\\"text\\\"\\n                       placeholder=\\\"{{'order.note' | translate}}\\\"\\n                       ng-model=\\\"vm.purchaseOrder.orderNote\\\"/>\\n            </div>\\n        </div>\\n        <div class=\\\"col-lg-6\\\"> &nbsp; </div>\\n\\n        <div class=\\\"col-lg-12 b-b\\\"> &nbsp; </div>\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n        <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.purchaseOrder.company.id && (!vm.purchaseOrder || vm.purchaseOrder.id == 0)\\\">\\n            <div class=\\\"col-sm-1\\\"> &nbsp; </div>\\n            <label class=\\\"col-sm-1 control-label\\\">{{'article.articlenumber' | translate}}:</label>\\n            <div class=\\\"col-sm-4\\\">\\n                <ca-article-search-multi-select company=\\\"vm.purchaseOrder.company\\\" articles-to-exclude=\\\"vm.articleIds\\\" select-same-twice-allowed=\\\"false\\\" on-articles-retrieved=\\\"vm.recieveArticles(articles)\\\" page-size=\\\"20\\\" />\\n            </div>\\n            <div class=\\\"col-sm-3\\\"> </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n        <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.article.id\\\">\\n            <div class=\\\"col-lg-2\\\">\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.save()\\\"> {{'common.save' | translate}} {{'order.purchaseorder' | translate}}</button>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <ca-purchase-order-articles-summary-grid purchase-order=\\\"vm.purchaseOrder\\\" article-ids=\\\"vm.articleIds\\\" order-change-count=\\\"vm.orderChangeCount\\\" disabled=\\\"false\\\" on-article-selected=\\\"vm.selectArticle(article)\\\">\\n        </div>\\n        <div class=\\\"col-sm-12\\\"> &nbsp; </div>\\n\\n        <label class=\\\"col-sm-12\\\" ng-if=\\\"vm.article.id\\\">\\n            <div class=\\\"col-sm-12\\\">\\n                <label class=\\\"h3\\\"> {{vm.article.alternativeArticleNumber}} {{vm.article.articleName}} </label>\\n            </div>\\n        </label>\\n\\n        <div class=\\\"col-sm-12\\\"> \\n            <!-- Empty Space (Left) -->\\n            <div class=\\\"col-lg-8\\\">\\n                &nbsp;\\n            </div>\\n            <ca-purchase-order-extra-options selected-article=\\\"vm.article\\\" disabled=\\\"false\\\" order-change-count=\\\"vm.orderChangeCount\\\" purchase-order=\\\"vm.purchaseOrder\\\"> </ca-purchase-order-extra-options>\\n        </div>\\n            <div class=\\\"col-lg-12\\\" ng-if=\\\"vm.article.id\\\">&nbsp;</div>\\n            <div class=\\\"col-lg-3\\\">\\n                <label class=\\\"control-label\\\"> {{'article.variantdetail1' | translate}}: </label>\\n                <ca-purchase-order-single-article-summary-grid selected-article=\\\"vm.article\\\" order-change-count=\\\"vm.orderChangeCount\\\" purchase-order=\\\"vm.purchaseOrder\\\" disabled=\\\"false\\\" on-color-selected=\\\"vm.selectColor(colorVariant)\\\" />\\n            </div>\\n\\n            <div class=\\\"col-lg-9\\\">\\n                <ca-open-to-buy-grid purchase-order=\\\"vm.purchaseOrder\\\" disabled=\\\"false\\\" order-change-count=\\\"vm.orderChangeCount\\\"> </ca-open-to-buy-grid>\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                <div class=\\\"col-sm-12\\\">\\n                    <ca-purchase-order-distribution-grid \\n                        selected-color-variant=\\\"vm.selectedColorVariant\\\"\\n                        selected-article=\\\"vm.article\\\"\\n                        purchase-order=\\\"vm.purchaseOrder\\\"\\n                        disabled=\\\"false\\\"\\n                        order-change-count=\\\"vm.orderChangeCount\\\"\\n                        on-purchase-order-changed=\\\"vm.purchaseOrderChanged(purchaseOrder)\\\"> \\n                    </ca-purchase-order-distribution-grid>\\n                </div>\\n            </div>\\n\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .fixedMinWidth {\\n        min-width: 200px;\\n    }\\n    .weekTable td {\\n        text-align: center;\\n    }\\n    .greyBackground:hover {\\n        background-color:#f3f3f3;\\n    }\\n    .greyBackground td:hover {\\n        background-color: #eaeaea;\\n    }\\n    .columnHover:hover {\\n        background-color: #eaeaea;\\n    }\\n\\n    .alignRight {\\n        text-align: right;\\n        padding-right:3px;\\n    }\\n    .alignRight input {\\n        text-align: right;\\n    }\\n\\n\\n    .smallInputText {\\n        max-width: 50px;\\n    }\\n    .boldRow {\\n        background-color: #f9f9f9;\\n    }\\n    .boldRow .poaTableCell, .boldRow .poaTableHeaderCell {\\n        font-weight: bold;\\n    }\\n    .afterChangedAverage {\\n        background-color: #d2f5d2;\\n    }\\n\\n    .myHeader {\\n        position: fixed;\\n        width:100%;\\n        opacity: 1;\\n        z-index: 1\\n    }\\n    .poaTable {\\n        display: table;\\n        width:100%;\\n    }\\n    .poaHeader {\\n        display: table-header-group;\\n    }\\n    .poaTableRow {\\n        display: table-row;\\n    }\\n    .poaTableHeaderCell {\\n        display: table-cell;\\n        position:sticky;\\n        top:25px;\\n        background:#f9f9f9;\\n        padding-left:3px;\\n        padding: 3px;\\n        border-bottom:1px solid #d9d9d9;\\n    }\\n    .poaTableBody {\\n        display: table-row-group\\n    }\\n    .poaTableCell {\\n        display:table-cell;\\n        padding-left:3px;\\n        padding: 3px;\\n    }\\n    .poaTableCell:hover::after {\\n        background-color: inherit;\\n    }\\n    .filterDiv {\\n        width:75%;\\n        top:200px;\\n        left: 20%;\\n        position: fixed;\\n        z-index: 1000;\\n        background-color:#f0f3f4;\\n        max-width:500px;\\n        border: 1px solid #ccc !important;\\n        padding: 15px;\\n        border-radius: 16px;\\n    }\\n</style>\\n\\n<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div style=\\\"padding: 5px; position: sticky; top:0px;\\\" class=\\\"bg-light\\\">\\n            <span ng-click=\\\"vm.showFilterDialog()\\\" style=\\\"height: 100%; float:left;\\\">\\n                <i class=\\\"fa fa-cog fa-2\\\" aria-hidden=\\\"true\\\" style=\\\"height: 100%;\\\"></i>\\n            </span>\\n            <span style=\\\"margin-left: 30px;\\\"><strong>{{ 'brand.company' | translate }}:</strong> {{ vm.selectedSupplier.companyName }}</span>\\n            <span style=\\\"margin-left: 30px;\\\"><strong>{{ 'article.collection' | translate }}:</strong> {{ vm.selectedArticleCollection.collectionDescription }}</span>\\n            <span style=\\\"margin-left: 30px;\\\">\\n                <strong>{{ 'common.page' | translate }}:</strong>\\n                <span ng-click=\\\"vm.goToFirst()\\\" uib-tooltip=\\\"{{ 'common.page' | translate }}: {{ vm.getPageNumber('first') }}\\\" tooltip-append-to-body=\\\"true\\\" toolip-placement=\\\"top\\\">\\n                    <i class=\\\"fa fa-step-backward\\\" aria-hidden=\\\"true\\\" style=\\\"height: 100%;\\\"></i>\\n                </span>\\n                <span ng-click=\\\"vm.goToPrevious()\\\" uib-tooltip=\\\"{{ 'common.page' | translate }}: {{ vm.getPageNumber('previous') }}\\\" tooltip-append-to-body=\\\"true\\\" toolip-placement=\\\"top\\\">\\n                    <i class=\\\"fa fa-arrow-left\\\" aria-hidden=\\\"true\\\" style=\\\"height: 100%;\\\"></i>\\n                </span>\\n                <span style=\\\"padding:5px;\\\"><strong>{{ vm.currentPage }}</strong></span>\\n                <span ng-click=\\\"vm.goToNext()\\\" uib-tooltip=\\\"{{ 'common.page' | translate }}: {{ vm.getPageNumber('next') }}\\\" tooltip-append-to-body=\\\"true\\\" toolip-placement=\\\"top\\\">\\n                    <i class=\\\"fa fa-arrow-right\\\" aria-hidden=\\\"true\\\" style=\\\"height: 100%;\\\"></i>\\n                </span>\\n                <span ng-click=\\\"vm.goToLast()\\\" uib-tooltip=\\\"{{ 'common.page' | translate }}: {{ vm.getPageNumber('last') }}\\\" tooltip-append-to-body=\\\"true\\\" toolip-placement=\\\"top\\\">\\n                    <i class=\\\"fa fa-step-forward\\\" aria-hidden=\\\"true\\\" style=\\\"height: 100%;\\\"></i>\\n                </span>\\n            </span>\\n            <button ng-click=\\\"vm.createOrder()\\\" ng-disabled=\\\"!vm.canCreateOrder()\\\" class=\\\"btn btn-sm btn-primary\\\" style=\\\"float:right;\\\" type=\\\"button\\\">{{ 'purchaseorderanalysis.createOrder' | translate }}</button>                \\n            <div style=\\\"clear: both; height: 1px;\\\">&nbsp;</div>\\n        </div>\\n\\n        <div class=\\\"panel panel-default\\\">\\n            <div ng-show=\\\"vm.purchaseOrderAnalysisArticles === undefined || vm.purchaseOrderAnalysisArticlesLength === 0\\\" style=\\\"text-align: center;\\\">\\n                {{ 'purchaseorderanalysis.noRows' | translate }}\\n            </div>\\n            <div class=\\\"poaTable\\\" ng-show=\\\"vm.purchaseOrderAnalysisArticlesLength > 0\\\">\\n                <div class=\\\"poaHeader\\\">\\n                    <div class=\\\"poaTableRow greyBackground boldRow\\\">\\n                        <div class=\\\"poaTableHeaderCell\\\" ng-if=\\\"!vm.showProduct\\\">{{ 'article.article' | translate }}</div>\\n                        <div class=\\\"poaTableHeaderCell\\\" ng-if=\\\"!vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableHeaderCell\\\" ng-if=\\\"!vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableHeaderCell\\\" ng-if=\\\"vm.showProduct\\\">+ / -</div>\\n                        <div class=\\\"poaTableHeaderCell\\\" ng-if=\\\"vm.showProduct\\\">{{ 'article.article' | translate }}</div>\\n                        <div class=\\\"poaTableHeaderCell\\\" ng-if=\\\"vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableHeaderCell\\\" ng-if=\\\"vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableHeaderCell\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableHeaderCell\\\">{{ 'article.maingroup' | translate }}</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.quantityToOrder' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.quantityToOrderAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.currentWarehouseStockQuantity' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.currentWarehouseStockQuantityAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.currentStoreStockQuantity' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.currentStoreStockQuantityAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\">{{ 'purchaseorderanalysis.orderedQuantity' | translate }}</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.weeksLeftInStock' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.weeksLeftInStockAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.weeksLeftInStockAfterOrder' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.weeksLeftInStockAfterOrderAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.averageSalesPerWeek' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.averageSalesPerWeekAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"1 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 1</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"2 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 2</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"3 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 3</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"4 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 4</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"5 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 5</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"6 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 6</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"7 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 7</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"8 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 8</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"9 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 9</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"10 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 10</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"11 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 11</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"12 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.week' | translate }} 12</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" style=\\\"text-transform: capitalize;\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.monthsLeftInStock' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.monthsLeftInStockAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" style=\\\"text-transform: capitalize;\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.monthsLeftInStockAfterOrder' | translate }} ({{ 'purchaseorderanalysis.currentWarehouseStockQuantityAbbr' | translate }} + {{ 'purchaseorderanalysis.orderedQuantity' | translate }} + {{ 'purchaseorderanalysis.quantityToOrderAbbr' | translate }} / {{ 'purchaseorderanalysis.averageSalesPerWeekAbbr' | translate }})\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.monthsLeftInStockAfterOrderAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" style=\\\"text-transform: capitalize;\\\">\\n                            <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'purchaseorderanalysis.averageSalesPerMonth' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'purchaseorderanalysis.averageSalesPerMonthAbbr' | translate }}</span>\\n                        </div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" style=\\\"text-transform: capitalize;\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"1 {{ 'purchaseorderanalysis.monthsBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.month' | translate }} 1</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" style=\\\"text-transform: capitalize;\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"2 {{ 'purchaseorderanalysis.monthsBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.month' | translate }} 2</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" style=\\\"text-transform: capitalize;\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"3 {{ 'purchaseorderanalysis.monthsBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ 'common.month' | translate }} 3</div>\\n                        <div class=\\\"poaTableHeaderCell alignRight\\\">&nbsp;</div>\\n                    </div>\\n                </div>\\n                <div class=\\\"poaTableBody\\\" ng-repeat=\\\"article in vm.purchaseOrderAnalysisArticles\\\">\\n                    <div class=\\\"poaTableRow greyBackground boldRow\\\" ng-show=\\\"vm.showProduct\\\">\\n                        <div class=\\\"poaTableCell\\\" ng-click=\\\"vm.toggleArticleRows(article)\\\" class=\\\"hidden-folded text-muted\\\">\\n                            <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!article.showRows\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"!article.showRows\\\"> </span>\\n                            <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"article.showRows\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"article.showRows\\\"> </span>\\n                        </div>\\n                        <div class=\\\"poaTableCell\\\" style=\\\"font-weight: bold;\\\">{{ article.alternativeProductNumber }}</div>\\n                        <div class=\\\"poaTableCell\\\">{{ article.productName }}</div>\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableCell\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"vm.showProduct\\\">{{ article.mainGroupCode + ' ' + article.mainGroupDescription }}</div>\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"!vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" style=\\\"padding-right:20px;\\\">{{ vm.sumQuantityToOrder(article) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\">{{ vm.sumWarehouseStock(article) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\">{{ vm.sumStoreStock(article) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\">{{ vm.sumOrderedQuantity(article) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ (vm.sumWeeksLeftInStock(article)).toFixed(2) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ (vm.sumWeeksLeftInStockAfterOrder(article)).toFixed(2) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 1) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 2) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 3) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 4) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 5) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 6) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 7) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 8) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 9) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 10) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 11) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ vm.sumRowsWeek(article, 12) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\">{{ (vm.sumMonthsLeftInStock(article)).toFixed(2) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\">{{ (vm.sumMonthsLeftInStockAfterOrder(article)).toFixed(2) }} </div>\\n                        <div class=\\\"poaTableCell\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\">{{ vm.sumRowsMonth(article, 1) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\">{{ vm.sumRowsMonth(article, 2) }} </div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\">{{ vm.sumRowsMonth(article, 3) }} </div>\\n                        <div class=\\\"poaTableCell\\\">&nbsp;</div>\\n                    </div>\\n                    <div class=\\\"poaTableRow greyBackground\\\" ng-repeat=\\\"row in article.articleVariants\\\" ng-show=\\\"article.showRows && row.showRow\\\">\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableCell\\\" style=\\\"font-weight: bold; padding-left:10px;\\\" ng-if=\\\"!vm.showProduct\\\">{{ article.alternativeProductNumber }}</div>\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"!vm.showProduct\\\">{{ article.productName }}</div>\\n                        <div class=\\\"poaTableCell\\\">\\n                            <span ng-if=\\\"(row.variantDetail1.length + 3) <= 20\\\">\\n                                {{ row.variantDetail1 }}\\n                            </span>\\n                            <span ng-if=\\\"(row.variantDetail1.length + 3) > 20\\\" uib-tooltip=\\\"{{ row.variantDetail1 }}\\\" tooltip-placement=\\\"top-left\\\">\\n                                {{ (row.variantDetail1).substr(0, 20) + '...' }}\\n                            </span>\\n                        </div>\\n                        <div class=\\\"poaTableCell\\\">\\n                            <span ng-if=\\\"(row.variantDetail2.length + 3) <= 20\\\">\\n                                {{ row.variantDetail2 }}\\n                            </span>\\n                            <span ng-if=\\\"(row.variantDetail2.length + 3) > 20\\\" uib-tooltip=\\\"{{ row.variantDetail2 }}\\\" tooltip-placement=\\\"top-left\\\">\\n                                {{ (row.variantDetail2).substr(0, 20) + '...' }}\\n                            </span>\\n                        </div>\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"!vm.showProduct\\\">{{ article.mainGroupCode + ' ' + article.mainGroupDescription }}</div>\\n                        <div class=\\\"poaTableCell\\\" ng-if=\\\"vm.showProduct\\\">&nbsp;</div>\\n                        <div class=\\\"poaTableCell alignRight\\\"><input ng-model=\\\"row.quantityToOrder\\\" type=\\\"number\\\" min=\\\"0\\\" class=\\\"smallInputText\\\"></div>\\n                        <div class=\\\"poaTableCell alignRight\\\">{{ row.currentWarehouseStockQuantity }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\">{{ row.currentStoreStockQuantity }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\">{{ row.orderedQuantity }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ (vm.sumRowWeeksLeftInStock(row)).toFixed(2) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" ng-class=\\\"{ afterChangedAverage: vm.showChangedWeekAverage(row) }\\\">{{ (vm.weeksLeftInStockAfterOrder(row)).toFixed(2) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\">{{ (vm.averageSalesPerWeek(row)).toFixed(2) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"2 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week1 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"2 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week2 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"3 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week3 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"4 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week4 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"5 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week5 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"6 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week6 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"7 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week7 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"8 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week8 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"9 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week9 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"10 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week10 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"11 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week11 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"12 {{ 'purchaseorderanalysis.weeksBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ row.week12 }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\">{{ (vm.sumRowMonthsLeftInStock(row)).toFixed(2) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" ng-class=\\\"{ afterChangedAverage: vm.showChangedMonthAverage(row) }\\\">{{ (vm.monthsLeftInStockAfterOrder(row)).toFixed(2) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\">{{ (vm.averageSalesPerMonth(row)).toFixed(2) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"1 {{ 'purchaseorderanalysis.monthsBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ vm.calculateMonth(1, row) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"2 {{ 'purchaseorderanalysis.monthsBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ vm.calculateMonth(2, row) }}</div>\\n                        <div class=\\\"poaTableCell alignRight\\\" ng-show=\\\"!vm.showWeeks\\\" tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"3 {{ 'purchaseorderanalysis.monthsBack' | translate }}\\\" tooltip-popup-delay=\\\"300\\\">{{ vm.calculateMonth(3, row) }}</div>\\n                        <div class=\\\"poaTableCell\\\">&nbsp;</div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n\\n                        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('order.purchaseordernew')\\\">{{'common.new' | translate}}</button></span>\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\">\\n                            &nbsp;\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\">\\n                            <label class=\\\"i-checks m-t-xs\\\">\\n                                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.onlyOrderChangeOrders\\\" />\\n                                <i></i>\\n                                {{'purchaseorder.showonlyorderchangeorders' | translate}}\\n                            </label>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\">\\n                            &nbsp;\\n                        </div>\\n\\n                        <div class=\\\"wrapper b-t text-center\\\">\\n                            <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadOrders()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n                        </div>\\n\\n                        <wj-flex-grid items-source=\\\"vm.purchaseOrders\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" is-read-only=\\\"true\\\" class=\\\"orders-flex-grid orders-flex-grid-fixed-width\\\" id=\\\"orderFlexGrid\\\"\\n                                      initialized=\\\"vm.gridInitialization(s)\\\" selection-changed=\\\"vm.gridSelectionChanged(e)\\\">\\n                            <wj-flex-grid-column header=\\\"{{'order.ordernumber' | translate}}\\\" binding=\\\"orderNumber\\\" width=\\\"*\\\">\\n                                <a ng-click=\\\"vm.transitionToState($item.id)\\\" class=\\\"ca-celllink\\\">\\n                                    {{$item.orderNumber}}\\n                                </a>\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column header=\\\"{{'order.company' | translate}}\\\" binding=\\\"article.articleName\\\" width=\\\"2*\\\">{{$item.company.companyName}}</wj-flex-grid-column>\\n                            <wj-flex-grid-column header=\\\"{{'order.planneddeliverydate' | translate}}\\\" binding=\\\"plannedDeliveryDate\\\" width=\\\"2*\\\"> {{$item.plannedDeliveryDate.toString().substring(0,10)}} </wj-flex-grid-column>\\n                            <wj-flex-grid-column header=\\\"{{'order.status' | translate}}\\\" binding=\\\"orderStatus.orderStatusName\\\" width=\\\"2*\\\" id=\\\"{{$item.id}}-statusCell\\\" align=\\\"center\\\">\\n                                <span>\\n                                    {{$item.orderStatus.orderStatusName}}\\n                                </span>\\n                            </wj-flex-grid-column>\\n                        </wj-flex-grid>\\n\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n    <!-- Panel for showing orders goes here -->\\n    <!-- <div ui-view=\\\"\\\"> </div> -->\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .smallComment {\\n        font-style: italic;\\n        font-size:0.8em;\\n        padding-left:15px;\\n    }\\n</style>\\n<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>{{'reports.ui.reports' | translate}} - {{'flexmonster.intrastat' | translate}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n            <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-2\\\">\\n                    <span>\\n                        {{ 'analysis.fromdate' | translate }}\\n                        <div  ng-class=\\\"{'has-error': (!vm.fromDate || vm.fromDate >= vm.toDate)}\\\">\\n                            <input name=\\\"fromDate\\\" type=\\\"date\\\" format=\\\"yyyy-MM-dd\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.fromDate\\\" enter-as-tab required/>\\n                        </div>\\n                    </span>\\n                    <span>\\n                        {{ 'analysis.todate' | translate }}\\n                        <div  ng-class=\\\"{'has-error': (!vm.toDate || vm.fromDate >= vm.toDate)}\\\">\\n                            <input name=\\\"toDate\\\" type=\\\"date\\\" format=\\\"yyyy-MM-dd\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.toDate\\\" enter-as-tab required/>\\n                        </div>\\n                    </span>\\n                    <div>&nbsp;</div>\\n                    <div>\\n                        <button class=\\\"btn btn-md btn-primary\\\" ng-disabled=\\\"!vm.fromDate || !vm.toDate || vm.fromDate >= vm.toDate\\\" ng-click=\\\"vm.getIntrastatReport()\\\">{{'common.get' | translate}} CSV</button>\\n                    </div>\\n                </div>\\n            </div>\\n        </form>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .smallComment {\\n        font-style: italic;\\n        font-size:0.8em;\\n        padding-left:15px;\\n    }\\n</style>\\n<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>{{'reports.ui.reports' | translate}} - {{'reports.ui.transit' | translate}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <form class=\\\"form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.transit.comparisonDate' | translate}}:</label>\\n                <wj-input-date class=\\\"col-sm-3\\\" value=\\\"vm.reportparameters.comparisonDate\\\"\\n                                min=\\\"2000-01-01\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                ng-model=\\\"vm.reportParameters.comparisonDate\\\">\\n                </wj-input-date>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">&nbsp;</label>\\n                <div class=\\\"smallComment\\\">{{ 'reports.ui.transit.comparisonDateDescription' | translate }}</div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.transit.locations' | translate}}:</label>\\n                <div class=\\\"col-sm-3\\\">\\n                    <ca-multiselect model=\\\"vm.selectedLocations\\\" choices=\\\"vm.locations\\\" order-by=\\\"'locationName'\\\" placeholder=\\\"'contacts.locations'\\\" item-renderer=\\\"['locationName']\\\"/>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">{{'common.language' | translate}}:</label>\\n                <div class=\\\"col-sm-3\\\">\\n                    <button class=\\\"btn\\\" ng-click=\\\"vm.printLanguage = 'se'\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'se', 'btn-default': vm.printLanguage !== 'se' }\\\">Svenska</button>\\n                    <button class=\\\"btn\\\" ng-click=\\\"vm.printLanguage = 'en'\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'en', 'btn-default': vm.printLanguage !== 'en' }\\\">English</button>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-3\\\">\\n                    <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.getTransitReport()\\\">{{'common.get' | translate}}</button>\\n                </div>\\n            </div>\\n        </form>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <input id=\\\"xlf\\\" type=\\\"file\\\" name=\\\"xlfile\\\"> </input>\\n                    </div>\\n\\n                    <div ng-if=\\\"vm.inDataColumnNames.length != 0\\\" class=\\\"col-lg-6\\\">\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'order.company' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-error': !vm.articlesOrdersImportRequest.company.id}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.articlesOrdersImportRequest.company\\\" >\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.companyName}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"company in vm.companies | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['companyName']}\\\">\\n                                    <span>{{company.companyName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'stock.location' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-error': !vm.articlesOrdersImportRequest.location.id}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.articlesOrdersImportRequest.location\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"location in vm.locations | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['locationName']}\\\">\\n                                    <span>{{location.locationName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.alternativearticlenumber' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-warning': vm.mapping.alternativeArticleNumber === ''}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.alternativeArticleNumber\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.articlename' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-warning': vm.mapping.articleName === ''}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.articleName\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.descriptionShort' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.articleDescription\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.variantdetail1' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-warning': vm.mapping.variant1Name === ''}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.variant1Name\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.variantdetail2' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-warning': vm.mapping.variant2Name === ''}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.variant2Name\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.totalquantity' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-warning': vm.mapping.quantity === ''}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.quantity\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.purchasecost' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.purchaseCost\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.salesprice' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.salesPrice\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.previousprice' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.previousPrice\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.itemgroup' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-warning': vm.mapping.itemGroupString === ''}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.itemGroupString\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.subcategory' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.subCategory\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.articletype' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.articleTypeString\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.barcode' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-error': vm.mapping.barcode === ''}\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.barcode\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.department' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.departmentCode\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'order.collection' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\" ng-class=\\\"{'has-error': !vm.selectedCollection || !vm.selectedCollection.id }\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.selectedCollection\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.collectionDescription}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"collection in vm.collections \\\">\\n                                    <span>{{collection.collectionCode}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'article.intrastatnumber' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.mapping.intrastatCode\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"columnName in vm.inDataColumnNames\\\">\\n                                    <span>{{columnName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>                        \\n\\n                        <div class=\\\"col-sm-4\\\">\\n                            <label> {{'order.planneddeliverydate' | translate}} </label>\\n                        </div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <wj-input-date\\n                                    value=\\\"vm.plannedDeliveryDate\\\"\\n                                    min=\\\"2000-01-01\\\"\\n                                    format=\\\"yyyy-MM-dd\\\"\\n                                    style=\\\"width:100%\\\">\\n                            </wj-input-date>\\n                        </div>\\n\\n                    </div>\\n\\n                    <div ng-if=\\\"vm.inDataColumnNames.length != 0\\\" class=\\\"col-lg-6\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <div ng-if=\\\"vm.inDataColumnNames.length != 0\\\" class=\\\"col-lg-12\\\">\\n                        <button class=\\\"btn btn-primary\\\" ng-disabled=\\\"vm.hasError()\\\" ng-click=\\\"vm.sendRequestData()\\\"> {{'common.done' | translate}} </button>\\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .columnRow {\\n        height:24px;\\n        width:95%;\\n    }\\n    .p-l-xs{\\n        padding-left:5px;\\n    }\\n    .p-l-xss{\\n        padding-left:4px;\\n    }\\n    .btn-h-sm{\\n        height:28px;\\n        margin-bottom:3px;\\n    }\\n    .colorRow {\\n        height:24px;\\n        width:140px;\\n    }\\n    .valueRow {\\n        height:24px;\\n        width:75px;\\n        font-size:smaller;\\n    }\\n    .excludeRow {\\n        background-color:whitesmoke;\\n        color: lightgray;\\n        height: 20px;\\n    }\\n    .errorRow {\\n        background-color:lightcoral;\\n        border-color:red;\\n        border-radius: 8px;\\n        height:18px;\\n        overflow:hidden; \\n        white-space:nowrap; \\n        padding-left:4px;\\n        padding-right:4px;\\n        text-overflow:ellipsis;\\n        display:inline-block;\\n        vertical-align: middle;\\n    }\\n    .tc-mdl{\\n        display: table-cell; \\n        vertical-align: middle;\\n    }\\n    .has-error{\\n        border-color:red;\\n        color: red;\\n    }\\n    .has-warning{\\n        border-color:gold;\\n        color: gold;\\n    }\\n    .has-warning-b{\\n        border-color:gold;\\n    }\\n    .f-sm {\\n        font-size:smaller;\\n    }\\n    .dp-in {\\n        display:inline;\\n    }\\n    button.btn-cstm{\\n        padding:3px;\\n        margin:0px;\\n        margin-top:4px;\\n        margin-bottom:4px;\\n        width:20px;\\n        height:20px;\\n        align-items: center;\\n        border-radius: 0px;\\n        vertical-align: middle;\\n        display:flex;\\n    }\\n    button.btn-cstm.btn-danger-cstm{\\n        border-color:red;\\n        background-color:white;\\n        color: red;\\n    }\\n    button.btn-cstm.btn-primary-cstm{\\n        border-color:lightskyblue;\\n        background-color:white;\\n        color:lightskyblue;\\n    }\\n    button.btn-cstm.btn-gray-cstm{\\n        margin-top:1px;\\n        margin-bottom:1px;\\n        border-color:lightgray;\\n        background-color:white;\\n        color:lightgray;\\n    }\\n    button.btn-cstm.btn-danger-cstm:hover{\\n        border-color:firebrick;\\n        color: firebrick;\\n    }\\n    button.btn-cstm.btn-primary-cstm:hover{\\n        border-color:cornflowerblue;\\n        color:cornflowerblue;\\n    }\\n    button.btn-cstm.btn-gray-cstm:hover{\\n        border-color:lightslategray;\\n        color:lightslategray;\\n    }\\n    button.btn-cstm > i.i-cstm{\\n        width:10px; \\n        height:10px;\\n        margin:1px; \\n        font-size:8px;\\n        padding-left:1px; \\n        padding-top:1px;\\n    }\\n    button.btn-cstm.btn-danger-cstm > i.i-cstm.danger-cstm{\\n        background-color: red;\\n        color: white;\\n    }\\n    button.btn-cstm.btn-primary-cstm > i.i-cstm.primary-cstm{\\n        background-color:lightskyblue;\\n        color:white;\\n    }\\n    button.btn-cstm.btn-gray-cstm > i.i-cstm.gray-cstm{\\n        background-color:lightgray;\\n        color:white;\\n    }\\n    button.btn-cstm.btn-danger-cstm:hover > i.i-cstm.danger-cstm{\\n        background-color:firebrick;\\n    }\\n    button.btn-cstm.btn-primary-cstm:hover > i.i-cstm.primary-cstm{\\n        background-color:cornflowerblue;\\n    }\\n    button.btn-cstm.btn-gray-cstm:hover > i.i-cstm.gray-cstm{\\n        background-color:lightslategray;\\n    }\\n    div.ca-singleselect-modified > ca-singleselect > div {\\n        width:240px;\\n    }\\n    div.ca-singleselect-modified > ca-singleselect > div > div {\\n        width:240px;\\n    }\\n    div.ca-singleselect-modified > ca-singleselect > div > div > span {\\n        width:240px;\\n        height:24px;\\n        padding:0px;\\n        margin:0px;\\n        font-size:smaller;\\n    }\\n    div.ca-singleselect-modified > ca-singleselect > div > div > span > span > span{\\n        display: table-cell; \\n        vertical-align:middle;\\n    }\\n    div.ca-singleselect-modified > ca-singleselect > div > input {\\n        width:240px;\\n        height:24px;\\n        padding:0px;\\n        font-size:smaller;\\n    }\\n    div.ca-singleselect-modified > ca-singleselect > div > ul > {\\n        width:240px;\\n    }\\n    div.ca-singleselect-modified > ca-singleselect > div > ul > li {\\n        width:240px;\\n        font-size:smaller;\\n    }\\n    div.ca-singleselect-modified > ca-singleselect > div > ul > li > div {\\n        width:240px;\\n        height:20px;\\n    }\\n</style>\\n<div class=\\\"form-box\\\">\\n    <form name =\\\"addArticleVariantForm\\\" ng-submit=\\\"vm.addArticleVariantsToProduct(true)\\\">\\n        <div class=\\\"header\\\">\\n            {{'article.newarticlevariant.header' | translate}}.\\n        </div>\\n        <div class=\\\"col-sm-12 alert alert-warning p-b-xs b-b\\\" style=\\\"text-align: center;\\\" ng-show=\\\"!vm.isBarcodeGenerationAllowed\\\">\\n            {{ 'common.warning' | translate }}: {{ 'article.brandforbiddsbarcodegeneration' | translate }}\\n        </div>\\n        <div class=\\\"body bg-gray\\\">\\n            <div class=\\\"col-sm-12 p-b-xs\\\">\\n                <span ng-class=\\\"{'has-error': vm.hasError() && addArticleVariantForm.color.$touched, 'has-warning': vm.hasWarning() }\\\" class=\\\"dp-in\\\">\\n                    {{ 'article.variantdetail1' | translate}}:&ensp; \\n                </span>\\n                <input  ng-class=\\\"{'has-error': vm.hasError() && addArticleVariantForm.color.$touched, 'has-warning-b': vm.hasWarning() }\\\" \\n                        id=\\\"color\\\"\\n                        name=\\\"color\\\" \\n                        ng-change=\\\"vm.validateNewColor(); vm.updateValues();\\\" \\n                        ng-click=\\\"vm.validateNewColor(); vm.updateValues();\\\"\\n                        ng-model=\\\"vm.newColorName\\\" \\n                        type=\\\"text\\\" \\n                        placeholder=\\\"{{'article.variantdetail1' | translate}}...\\\"\\n                        class=\\\"dp-in form-control colorRow enterAsTab\\\" enter-as-tab required autofocus />\\n                &emsp;\\n                <span class=\\\"f-sm\\\" ng-class=\\\"{'has-error': vm.hasError(), 'has-warning': vm.hasWarning()}\\\" ng-show=\\\"(vm.hasWarning() || (vm.hasError() && addArticleVariantForm.color.$touched))\\\">\\n                    {{ vm.colorError.messageKey | translate }}\\n                </span>\\n                <button class=\\\"btn btn-sm btn-h-sm btn-warning\\\" tabindex=\\\"-1\\\" style=\\\"float:right;\\\" type=\\\"button\\\" ng-click=\\\"vm.resetValuesFromArticle()\\\">\\n                    {{ 'common.reset' | translate}}&ensp; \\n                </button>\\n            </div>\\n            <div class=\\\"col-sm-12 b-b m-b-xs\\\">\\n                <span class=\\\"dp-in f-sm\\\">\\n                    {{ 'article.salesColour' | translate}}:&ensp; \\n                </span>\\n                <input  id=\\\"salesColor\\\"\\n                        name=\\\"salesColor\\\" \\n                        ng-change=\\\"vm.updateValues();\\\" \\n                        ng-click=\\\"vm.updateValues();\\\"\\n                        ng-model=\\\"vm.newSalesColorName\\\" \\n                        type=\\\"text\\\" \\n                        placeholder=\\\"{{ (vm.newColorName === '' || vm.newColorName === undefined) ? ('article.salesColour' | translate)+'...'  : (vm.newColorName)}}\\\"\\n                        class=\\\"dp-in form-control colorRow f-sm enterAsTab\\\" enter-as-tab />\\n            </div>\\n            <div ng-hide=\\\"vm.hasError()\\\" class=\\\"col-sm-12 b-b m-b-xs m-t-xs p-b-xs\\\">\\n                <div class=\\\"f-sm\\\">\\n                    <input type=\\\"radio\\\" id=\\\"fromProduct\\\" name=\\\"fromRadio\\\" ng-value=\\\"'product'\\\" ng-model=\\\"vm.fromSizeOption\\\" ng-click=\\\"vm.updateFromSizes()\\\" ng-disabled=\\\"vm.sizes.length === 0\\\"/>\\n                    <label for=\\\"fromProduct\\\">{{'article.newarticlevariant.fromproduct' | translate}}</label>\\n                </div>\\n                <div>\\n                    <input type=\\\"radio\\\" id=\\\"fromVariantGroup\\\" name=\\\"fromRadio\\\" ng-value=\\\"'variantgroup'\\\" ng-model=\\\"vm.fromSizeOption\\\" ng-click=\\\"vm.updateFromSizes()\\\" ng-disabled=\\\"vm.variantGroups.length === 0\\\"/>\\n                    <label class=\\\"f-sm\\\"for=\\\"fromVariantGroup\\\">{{'article.newarticlevariant.fromvariantgroup' | translate}}</label>\\n                    &ensp;\\n                    <div ng-show=\\\"vm.fromSizeOption === 'variantgroup'\\\" class=\\\"ca-singleselect-modified\\\" style=\\\"display:inline; position:absolute;\\\">\\n                        <ca-singleselect model=\\\"vm.selectedVariantGroup\\\"\\n                                         choices=\\\"vm.variantGroups\\\"\\n                                         order-by=\\\"'groupName'\\\"\\n                                         item-renderer=\\\"'groupName'\\\"\\n                                         placeholder=\\\"'article.newarticlevariant.selectvariantgroup'\\\"\\n                                         mandatory=\\\"true\\\"/>\\n                    </div>\\n                </div>\\n                <div>\\n                    <input type=\\\"radio\\\" id=\\\"fromVariants\\\" name=\\\"fromRadio\\\" ng-value=\\\"'variant'\\\" ng-model=\\\"vm.fromSizeOption\\\" ng-click=\\\"vm.updateFromSizes()\\\"/>\\n                    <label class=\\\"f-sm\\\" for=\\\"fromVariants\\\">{{'article.newarticlevariant.fromvariants' | translate}}</label>\\n                </div>\\n            </div>\\n            <table ng-hide=\\\"vm.hasError()\\\" style=\\\"width:100%; table-layout:fixed;\\\">\\n                <thead class=\\\"b-b f-sm\\\">\\n                    <th style=\\\"width:12%\\\" colspan=\\\"2\\\">{{ 'article.variantdetail2' | translate}}:</th>\\n                    <th style=\\\"width:24%\\\">{{'article.barcode' | translate}}:<i style=\\\"font-size:smaller; font-weight: lighter;\\\" ng-show=\\\"vm.isBarcodeGenerationAllowed\\\"> {{'article.newarticlevariant.barcodeautogenerate' | translate}}</i></th>\\n                    <th style=\\\"width:9%\\\">{{'article.collection' | translate}}:</th>\\n                    <th style=\\\"width:8%\\\">{{'article.purchasecost' | translate}}:</th>\\n                    <th style=\\\"width:8%\\\">{{'article.salesprice' | translate}}:</th>\\n                    <th style=\\\"width:8%\\\">{{'article.previousprice' | translate}}:</th>\\n                    <th class=\\\"p-l-xs\\\" style=\\\"width:30%\\\">{{'common.error' | translate}}:</th>\\n                </thead>\\n                <tbody>\\n                    <tr class=\\\"f-sm\\\" rowspan=\\\"3\\\" ng-show=\\\"vm.anyVariantsSelected()\\\">\\n                        <td colspan=\\\"3\\\"></td>\\n                        <td rowspan=\\\"2\\\">\\n                            <select id=\\\"collections\\\" \\n                                    ng-options=\\\"collection as collection.collectionDescription for collection in vm.articleCollections track by collection.id\\\" \\n                                    ng-model=\\\"vm.newArticleCollection\\\" \\n                                    name=\\\"collections\\\"\\n                                    class=\\\"columnRow\\\"\\n                                    ng-change=\\\"vm.updateValues()\\\">\\n                            </select>\\n                        </td>\\n                        <td rowspan=\\\"2\\\"><input class=\\\"columnRow\\\" name=\\\"purchase\\\" type=\\\"number\\\" step=\\\".01\\\" min=\\\"0\\\" class=\\\"form-control enterAsTab\\\" placeholder=\\\"{{'article.purchasecost' | translate}}\\\"     ng-model=\\\"vm.newPurchaseCost\\\"   ng-change=\\\"vm.updateValues()\\\" enter-as-tab required /></td>\\n                        <td rowspan=\\\"2\\\"><input class=\\\"columnRow\\\" name=\\\"sales\\\"    type=\\\"number\\\" step=\\\".01\\\" min=\\\"0\\\" class=\\\"form-control enterAsTab\\\" placeholder=\\\"{{'article.salesprice' | translate}}\\\"       ng-model=\\\"vm.newSalesPrice\\\"     ng-change=\\\"vm.updateValues()\\\" enter-as-tat required /></td>\\n                        <td rowspan=\\\"2\\\"><input class=\\\"columnRow\\\" name=\\\"previous\\\" type=\\\"number\\\" step=\\\".01\\\" min=\\\"0\\\" class=\\\"form-control enterAsTab\\\" placeholder=\\\"{{'article.previousprice' | translate}}\\\"    ng-model=\\\"vm.newPreviousPrice\\\"  ng-change=\\\"vm.updateValues()\\\" enter-as-tab required /></td>\\n                        <td></td>\\n                    </tr>\\n                    <tr class=\\\"b-b f-sm\\\" ng-class=\\\"{'excludeRow': !articleVariant.useThisVariant}\\\" ng-repeat=\\\"articleVariant in vm.newArticleVariants\\\">\\n                        <td style=\\\"width: 40px;\\\">\\n                            <div ng-show=\\\"articleVariant.isRemoveable\\\">\\n                                <button class=\\\"btn btn-xs btn-cstm btn-danger-cstm\\\" type=\\\"button\\\" ng-click=\\\"vm.removeVariantDetail($index)\\\" \\n                                    tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'article.newarticlevariant.removevariant' | translate }}\\\">\\n                                    <i class=\\\"fa fa-minus i-cstm danger-cstm\\\" aria-hidden=\\\"true\\\"></i>\\n                                </button>    \\n                            </div>\\n                            <div ng-hide=\\\"articleVariant.isRemoveable\\\">\\n                                <button class=\\\"btn btn-xs btn-cstm btn-primary-cstm\\\" type=\\\"button\\\" ng-click=\\\"articleVariant.useThisVariant = !articleVariant.useThisVariant\\\" ng-show=\\\"articleVariant.useThisVariant\\\"\\n                                    tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'article.newarticlevariant.excludevariant' | translate }}\\\">\\n                                    <i class=\\\"i-cstm primary-cstm\\\" aria-hidden=\\\"true\\\"></i>\\n                                </button>\\n                                <button class=\\\"btn btn-xs btn-cstm btn-gray-cstm\\\" type=\\\"button\\\" ng-click=\\\"articleVariant.useThisVariant = !articleVariant.useThisVariant\\\" ng-hide=\\\"articleVariant.useThisVariant\\\"\\n                                    tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'article.newarticlevariant.includevariant' | translate }}\\\">\\n                                    <i class=\\\"i-cstm gray-cstm\\\" aria-hidden=\\\"true\\\"></i>\\n                                </button>\\n                            </div>\\n                        </td>\\n                        <td style=\\\"width: 9%; text-overflow: clip;\\\"><div ng-class=\\\"{'errorRow': articleVariant.errorOnSize && articleVariant.useThisVariant }\\\">{{articleVariant.variantDetail2.variantDetailName}}</div></td>\\n                        <td ng-hide=\\\"articleVariant.useThisVariant\\\" colspan=\\\"5\\\"></td>\\n                        <td ng-show=\\\"articleVariant.useThisVariant\\\">\\n                            <div ng-class=\\\"{'has-error': addArticleVariantForm.barcode.$invalid && addArticleVariantForm.barcode.$touched}\\\">\\n                                <input  class=\\\"columnRow\\\" \\n                                        name=\\\"barcode\\\" \\n                                        type=\\\"text\\\" \\n                                        class=\\\"form-control enterAsTab\\\" \\n                                        ng-class=\\\"{'has-error': articleVariant.errorBarcodeExists || articleVariant.errorBarcodeDuplicate || articleVariant.errorBarcodeGenerationNotAllowed }\\\" \\n                                        placeholder=\\\"{{'article.barcode' | translate}}...\\\" \\n                                        ng-blur=\\\"vm.validateBarcode(articleVariant)\\\" \\n                                        ng-model=\\\"articleVariant.barcode\\\" enter-as-tab/>\\n                            </div>\\n                        </td>\\n                        <td ng-hide=\\\"$first || !articleVariant.useThisVariant\\\">    \\n                            <div class=\\\"columnRow p-l-xs tc-mdl\\\">{{articleVariant.articleCollection.collectionDescription}}</div>\\n                        </td>\\n                        <td ng-hide=\\\"$first || !articleVariant.useThisVariant\\\">\\n                            <div class=\\\"columnRow p-l-xss tc-mdl\\\">{{articleVariant.purchaseCost}}</div>\\n                        </td>\\n                        <td ng-hide=\\\"$first || !articleVariant.useThisVariant\\\">\\n                            <div class=\\\"columnRow p-l-xss tc-mdl\\\">{{articleVariant.salesPrice}}</div>\\n                        </td>\\n                        <td ng-hide=\\\"$first || !articleVariant.useThisVariant\\\">\\n                            <div class=\\\"columnRow p-l-xss tc-mdl\\\">{{articleVariant.previousPrice}}</div>\\n                        </td>\\n                        <td ng-show=\\\"articleVariant.hasError && articleVariant.useThisVariant\\\">\\n                            <div class=\\\"errorRow columnRow p-l-xs\\\" tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" \\n                            uib-tooltip=\\\"{{ vm.getErrorTooltip(articleVariant) }}\\\">\\n                                <span ng-show=\\\"articleVariant.errorOnSize || articleVariant.errorBarcodeExists || articleVariant.errorBarcodeDuplicate || articleVariant.errorBarcodeGenerationNotAllowed\\\">\\n                                    {{vm.getErrorTooltip(articleVariant) }}\\n                                </span>\\n                            </div>\\n                        </td>\\n                        <td ng-hide=\\\"articleVariant.hasError && articleVariant.useThisVariant\\\"></td>\\n                    </tr>\\n                    <tr ng-hide=\\\"vm.fromSizeOption === 'variantgroup' && vm.newArticleVariants.length === 0 && vm.variantGroups.length > 0\\\">\\n                        <td colspan=\\\"3\\\">\\n                            <div>\\n                                <ca-variant-detail-search-single-select \\n                                    page-size=\\\"20\\\"\\n                                    model=\\\"vm.selectedVariant\\\"\\n                                    disabled-by=\\\"\\\" />\\n                            </div>\\n                        </td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n            <div class=\\\"col-lg-6 m-t-md\\\">\\n                <button class=\\\"btn btn-sm btn-h-sm btn-default\\\" type=\\\"button\\\"  ng-click=\\\"vm.closeModal(false)\\\">{{'common.close' | translate}}</button>\\n            </div> \\n            <div class=\\\"col-lg-6 m-t-md\\\">\\n                <button class=\\\"btn btn-sm btn-h-sm btn-primary m-l-xs\\\" style=\\\"float:right;\\\" type=\\\"button\\\" ng-click=\\\"vm.addArticleVariantsToProduct(false);\\\"  ng-disabled=\\\"addArticleVariantForm.$invalid || vm.isAddButtonDisabled()\\\">{{'article.newarticlevariant.addandcontinue' | translate}}</button>\\n                <button class=\\\"btn btn-sm btn-h-sm btn-primary\\\" style=\\\"float:right;\\\" type=\\\"submit\\\"  ng-disabled=\\\"addArticleVariantForm.$invalid || vm.isAddButtonDisabled()\\\">{{'common.add' | translate}}</button>\\n            </div>\\n        </div>\\n        <div style=\\\"clear:both;\\\">&nbsp;</div>\\n    </form>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">\\n        <div>{{('common.edit' | translate) + ' ' + ('article.itemgroup' | translate) + ':'}}</div>\\n        <div>{{('article.article' | translate) + ': ' + vm.selectedArticle.alternativeArticleNumber + ' ' +\\n            vm.selectedArticle.articleName}}</div>\\n    </div>\\n    <div class=\\\"body bg-gray\\\">\\n        <!--Allows the user to change itemGroup-->\\n        <center>\\n            <ui-select style=\\\"padding-bottom:3px;width:350px\\\" ng-model=\\\"vm.selectedArticleCopy.itemGroup\\\"\\n                ng-change=\\\"vm.changeItemGroup(vm.selectedArticleCopy.itemGroup)\\\"\\n                uib-tooltip=\\\"{{ 'article.startEnteringItemGroup' | translate }}\\\" tooltip-append-to-body=\\\"true\\\"\\n                tooltip-placement=\\\"above\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{vm.selectedArticleCopy.itemGroup.itemGroupCode + ' ' +\\n                    vm.selectedArticleCopy.itemGroup.itemGroupLongName}}</ui-select-match>\\n                <ui-select-choices\\n                    repeat=\\\"itemGroup in vm.itemGroups | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['itemGroupCode', 'itemGroupLongName']} : {minimumInputLength: 3}\\\">\\n                    <span>{{itemGroup.itemGroupCode + ' ' + itemGroup.itemGroupLongName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </center>\\n        <div ng-show=\\\"vm.hasChanged && vm.isNewItemGroup\\\">\\n            <h3 style=\\\"text-align-last:center;\\\">\\n                {{('productimport.foundTheFollowingChangesToArticleData' | translate) + ':'}}\\n            </h3>\\n            <div ng-show=\\\"vm.isNewSupplier && vm.newArticleVariantsForNewSuppliers.length > 0 && vm.includeSupplierPrices\\\"\\n                style=\\\"margin-bottom:15px;overflow-y: scroll; border-bottom-style: solid; border-top-style: solid; border-width: 2px; border-color:lightgrey;\\\">\\n                <div class=\\\"form-group row col-sm-12\\\"\\n                    style=\\\"padding-bottom:10px;padding-top:0px;border-top:0px;background-color:rgb(252, 252, 252); max-height:175px\\\">\\n                    <table class=\\\"table table-condensed\\\" style=\\\"width: 100%; min-width: 700px;text-align-last:center\\\">\\n                        <thead style=\\\"padding:3px\\\">\\n                            <th ng-show=\\\"vm.isNewSupplier\\\">{{('brand.newCompanies' |\\n                                translate) + ':'}}</th>\\n                            <th ng-show=\\\"!vm.isNewSupplier\\\">{{('brand.company' | translate) + ':'}}</th>\\n                            <th style=\\\"min-width:150px\\\">{{('article.variant' | translate) + ':'}}</th>\\n                            <th style=\\\"max-width:100px;width:50px\\\">{{('article.purchaseprice' | translate) + ':'}}</th>\\n                            <th> {{('article.currency' | translate) + ':'}}</th>\\n                            <th style=\\\"max-width:20px\\\"></th>\\n                        </thead>\\n                        <tbody>\\n                            <tr style=\\\"vertical-align: 45%;font-size:12px; margin:0px; padding:0px;\\\" ng-repeat=\\\"newSuppVariant in vm.newArticleVariantsForNewSuppliers\\\">\\n                                <td style=\\\"margin:0px; padding:0px;\\\">\\n                                    <div style=\\\"font-weight: bold;\\\" ng-show=\\\"vm.isNewSupplier\\\">\\n                                        {{newSuppVariant.companyName}}</div>\\n                                </td>\\n                                <td style=\\\"margin:0px; padding:0px;\\\">{{newSuppVariant.variantDetail1.variantDetailName}}\\n                                    {{newSuppVariant.variantDetail2.variantDetailName}}</td>\\n                                <td style=\\\"margin:0px; padding:1px;\\\">\\n                                    <input style=\\\"padding:0px;font-size:12px;height:22px\\\" type=\\\"number\\\" step=\\\"1.00\\\" class=\\\"form-control ca-numeric\\\"\\n                                        ng-model=\\\"newSuppVariant.purchaseCost\\\"\\n                                        placeholder=\\\"{{'article.purchaseprice' | translate}}\\\">\\n                                </td>\\n                                <td style=\\\"margin:0px; padding:0px;\\\">{{newSuppVariant.purchasingCurrency.code}}</td>\\n                                <td style=\\\"margin:0px; padding:0px;\\\">\\n                                    <span class=\\\"btn btn-sm fa fa-copy\\\"\\n                                        ng-click=\\\"vm.copyToAllPrices(newSuppVariant)\\\" uib-tooltip=\\\"{{('resellerorder.setWholeRowAmount' | translate) + ' ¨' + ('article.purchaseprice' | translate) + '¨ ' + ('brand.company' | translate) + ': ' + newSuppVariant.companyName}}\\\" tooltip-append-to-body=\\\"true\\\"\\n                                        tooltip-placement=\\\"above\\\" theme=\\\"bootstrap\\\"  style=\\\"margin:0px; padding:0px;\\\"></span>\\n                                </td>\\n                            </tr>\\n                        </tbody>\\n                    </table>\\n                </div>\\n            </div>\\n\\n            <table ng-show=\\\"vm.isNewItemGroup || vm.isNewSupplier || vm.changesToSupplier\\\" class=\\\"table table-condensed\\\"\\n                style=\\\"padding-top:10px;text-align-last:center;width:100%; min-width:700px;background-color:rgb(252, 252, 252);\\\">\\n                <div align=\\\"center\\\" class=\\\"form-row\\\">\\n                    <div class=\\\"form-group col-md-6\\\">\\n                        <!--FIRST ROW-->\\n                        <thead>\\n                            <tr>\\n                                <th ng-show=\\\"vm.isNewItemGroup\\\" style=\\\"width:25%\\\">\\n                                    <div>{{('article.itemgroup' | translate) + ':'}}\\n                                    </div>\\n                                </th>\\n                                <th ng-show=\\\"vm.newSuppliers.length > 0 || vm.removedSuppliers.length > 0\\\" style=\\\"width:25%\\\">{{('brand.companies' | translate) + ':'}}</th>\\n                                <th ng-show=\\\"vm.isNewSupplier || vm.changesToSupplier\\\" style=\\\"width:25%\\\">{{('brand.preferredCompany' | translate) + ':'}}</th>\\n                            </tr>\\n                        </thead>\\n                        <tbody>\\n                            <tr>\\n                                <!--FIRST COL-->\\n                                <td ng-show=\\\"vm.isNewItemGroup\\\">\\n                                    <div class=\\\"form-row\\\"\\n                                        style=\\\"text-align-last:center;background-color:rgb(252, 252, 252)\\\">\\n                                        <div style=\\\"font-weight: bold;color:green\\\">\\n                                            {{'+' + vm.selectedArticleCopy.itemGroup.itemGroupCode + ' ' +\\n                                            vm.selectedArticleCopy.itemGroup.itemGroupLongName}}\\n                                        </div>\\n                                        <div style=\\\"color:orangered\\\">\\n                                            {{'(-' + vm.selectedArticle.itemGroup.itemGroupCode + ' ' +\\n                                            vm.selectedArticle.itemGroup.itemGroupLongName + ')'}}\\n                                        </div>\\n                                    </div>\\n                                </td>\\n                                <!--SECOND COL-->\\n                                <td ng-show=\\\"vm.newSuppliers.length > 0 || vm.removedSuppliers.length > 0\\\">\\n                                    <div>\\n                                        <div ng-repeat=\\\"newSupp in vm.newSuppliers\\\"\\n                                            style=\\\"font-weight: bold;color:green\\\">\\n                                            {{'+' + newSupp.companyName}}\\n                                        </div>\\n                                        <div ng-repeat=\\\"sameSupp in vm.sameSuppliers\\\">\\n                                            {{sameSupp.companyName}}\\n                                        </div>\\n                                        <div ng-repeat=\\\"remSupp in vm.removedSuppliers\\\"\\n                                            style = \\\"color:orangered\\\">\\n                                            {{'-' + remSupp.companyName}}\\n                                        </div>\\n                                    </div>\\n                                </td>\\n                                <!--THIRD COL-->\\n                                <td ng-show=\\\"vm.isNewSupplier || vm.changesToSupplier || vm.selectedArticleCopy.suppliers.length > 1\\\">\\n                                    <div align=\\\"center\\\">\\n                                        <span style=\\\"font-weight: bold;color:green\\\" ng-if=\\\"vm.selectedArticleCopy.suppliers.length == 1 && vm.changesToSupplier\\\" class=\\\"editable\\\">\\n                                            {{'+' + vm.selectedArticleCopy.preferredSupplier.companyName}}\\n                                        </span>\\n                                        <span ng-if=\\\"vm.selectedArticleCopy.suppliers.length == 1 && !vm.changesToSupplier\\\" class=\\\"editable\\\">\\n                                            {{vm.selectedArticleCopy.preferredSupplier.companyName}}\\n                                        </span>\\n\\n                                        <ui-select style=\\\"width:200px; position:relative\\\"\\n                                            ng-if=\\\"vm.selectedArticleCopy.suppliers.length > 1\\\"\\n                                            ng-model=\\\"vm.selectedArticleCopy.preferredSupplier\\\">\\n                                            <ui-select-match>\\n                                                <div style=\\\"font-weight:bold; color: green\\\">{{'+' +\\n                                                    $select.selected.companyName}}\\n                                                </div>\\n                                            </ui-select-match>\\n                                            <ui-select-choices repeat=\\\"supplier in vm.selectedArticleCopy.suppliers\\\">\\n                                                <div style=\\\"font-weight:bold; color: green\\\">{{'+' +\\n                                                    supplier.companyName}}</div>\\n                                            </ui-select-choices>\\n                                        </ui-select>\\n                                    </div>\\n                                    <div ng-if=\\\"vm.changesToSupplier && vm.selectedArticleCopy.preferredSupplier.id !== vm.selectedArticle.preferredSupplier.id\\\" style=\\\"color:orangered\\\">{{'-' +\\n                                        vm.selectedArticle.preferredSupplier.companyName}}\\n                                    </div>\\n                                </td>\\n                            </tr>\\n                        </tbody>\\n                        <!--SECMOND ROW-->\\n<!--\\n                        <thead>\\n                            <tr ng-show=\\\"vm.isNewSupplier\\\">\\n                                <th ng-show=\\\"vm.isNewItemGroup\\\" style=\\\"width:25%\\\">{{'article.salesChannels'| translate}}  </th>        \\n                            </tr>\\n                        </thead>\\n-->\\n<!--\\n                        <body>\\n                            <tr ng-show=\\\"vm.isNewSupplier\\\">\\n-->\\n                                <!--FIRST COL-->\\n<!--\\n                                <td>\\n                                    <div ng-show=\\\"vm.isNewItemGroup\\\" align=\\\"center\\\">\\n-->\\n                                        <!-- THIS IS FOR SALES CHANNELS -->\\n<!--\\n                                        <ui-select style=\\\"width:50%\\\" multiple\\n                                            ng-model=\\\"vm.selectedArticleCopy.salesChannels\\\" theme=\\\"bootstrap\\\">\\n                                            <ui-select-match placeholder=\\\"{{'article.addSalesChannel' | translate}}\\\">\\n                                                <span>{{$item.salesChannelCode + \\\" \\\" +\\n                                                    $item.salesChannelDescription}}</span>\\n                                            </ui-select-match>\\n                                            <ui-select-choices\\n                                                repeat=\\\"salesChannel in vm.selectedArticle.salesChannels\\\">\\n                                                <span>{{salesChannel.salesChannelCode + \\\" \\\" +\\n                                                    salesChannel.salesChannelDescription}}</span>\\n                                            </ui-select-choices>\\n                                        </ui-select>\\n                                    </div>\\n                                </td>\\n                            </tr>\\n                        </body>\\n-->\\n                    </div>\\n                </div>\\n            </table>\\n        </div>\\n    </div>\\n    <div style=\\\"padding:12px;padding-top:20px\\\">\\n        <button style=\\\"width:150px\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveNewItemGroup()\\\"\\n            ng-disabled=\\\"!vm.hasChanged || !vm.isNewItemGroup\\\">{{'common.save' | translate}}</button>\\n        <button style=\\\"width:150px\\\" class=\\\"btn btn-default pull-right\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.close' |\\n            translate}}</button>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .has-error{\\n        border-color:red;\\n        background-color: lightpink;\\n        color: red;\\n    }\\n    .p-r{\\n        padding-right:6px\\n    }\\n    .p-l{\\n        padding-left:6px\\n    }\\n</style>\\n<div class=\\\"form-box\\\" style=\\\"min-height:200px\\\">\\n    <form name =\\\"changeVariantDetailForm\\\" ng-submit=\\\"vm.saveNewVariantDetails()\\\">\\n        <div class=\\\"header\\\">\\n            <div>\\n                Ändra Storleksbenämning:\\n            </div>\\n            <div>\\n                {{ vm.changeVariantDetailObject.supplierProductNumber }} - {{ vm.changeVariantDetailObject.productName }}:\\n            </div>\\n        </div>\\n        <div class=\\\"body bg-gray\\\" style=\\\"overflow-y:inherit\\\">\\n            <table style=\\\"width:100%\\\">\\n                <thead>\\n                    <tr>\\n                        <th style=\\\"text-align: right; padding-right:4px; font-size: smaller; width:30%\\\">\\n                            (Färger):\\n                        </th>\\n                        <th class=\\\"p-r\\\" style=\\\"text-align: right; font-size: small; width:30%\\\">\\n                            Nuvarande Storlekar:\\n                        </th>\\n                        <th class=\\\"p-l\\\" style=\\\"text-align: left; font-size: small; width:40%\\\">Nya Storlekar:</th>\\n                    </tr>\\n                </thead>\\n                <tbody>\\n                    <tr ng-repeat=\\\"obj in vm.changeVariantDetailObject.articleVariantDetailObjects\\\">\\n                        <td class=\\\"p-l\\\">\\n                            <div style=\\\"padding:4px; text-align: right; display:inline-flex; float:right; font-size: x-small; height:24px; white-space:nowrap; overflow: hidden;\\\"\\n                            tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"false\\\" uib-tooltip=\\\"{{ vm.getColourText(obj.coloursOnArticleVariant, false) }}\\\" tooltip-popup-delay=\\\"50\\\">\\n                                ({{ vm.getColourText(obj.coloursOnArticleVariant, true) }})\\n                            </div>\\n                        </td>\\n                        <td class=\\\"p-r\\\" style=\\\"text-align: right;\\\">\\n                            <div ng-class=\\\"{'has-error': obj.hasError }\\\">{{ obj.variantDetailObject.name }}</div>\\n                        </td>\\n                        <td class=\\\"p-r\\\" style=\\\"text-align: left;\\\">\\n                            <div>\\n                                <ca-variant-detail-search-single-select \\n                                    page-size=\\\"20\\\"\\n                                    model=\\\"obj.newVariantDetailObject\\\"\\n                                    on-selected=\\\"vm.validate()\\\" \\n                                    on-removed=\\\"vm.validate()\\\"\\n                                    disabled-by=\\\"\\\" />\\n                            </div>\\n                        </td>\\n                        <td style=\\\"width:14%\\\"></td>\\n                    </tr>                 \\n                </tbody>\\n            </table>\\n        </div>\\n        <div class=\\\"footer\\\" style=\\\"height:60px;\\\">\\n            <div class=\\\"col-lg-6\\\">\\n                <button class=\\\"btn btn-default\\\" type=\\\"button\\\"  ng-click=\\\"vm.closeModal(false)\\\">Close</button>\\n            </div>\\n            <div class=\\\"col-lg-6\\\">\\n                <button class=\\\"btn btn-primary\\\" type=\\\"submit\\\"  ng-disabled=\\\"vm.anyError || !vm.anyChanges() || vm.isValidating\\\" style=\\\"float: right;\\\">Save</button>\\n            </div>\\n        </div>\\n    </form>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"    <div class=\\\"form-box\\\">\\n        <div class=\\\"header\\\">{{'article.labels' | translate}} \\n        {{'- ' + vm.article.alternativeArticleNumber + ' ' +  vm.article.articleName}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div style=\\\"margin-bottom: 30px;overflow-x: scroll\\\">\\n            <table class=\\\"table-hover table-condensed table-readable-compact\\\" style=\\\"background-color:white\\\">\\n                <thead>\\n                    <tr>\\n                        <th ><div style=\\\"min-width:150px\\\"></div></th>\\n                        <th ng-repeat=\\\"column in vm.columns\\\" align=\\\"right\\\"><div style=\\\"min-width:50px;text-align: right;border:1px\\\">{{ column }}</div></th>\\n                    </tr>\\n                </thead>\\n                <tbody>\\n                    <tr ng-repeat=\\\"row in vm.rows\\\">\\n                        <td><div style=\\\"white-space: nowrap\\\">{{ row.variantDetails1Name }}</div></td>\\n                        <td ng-repeat=\\\"column in vm.columns\\\"> \\n                            <input \\n                            type=\\\"number\\\" \\n                            ng-if=\\\"row[column]\\\" \\n                            ng-model=\\\"row[column].value\\\" \\n                            style=\\\"border:0px;padding:0px;height:auto;width:99%;text-align:right\\\"            \\n                            step=\\\"any\\\"\\n                            smart-decimal\\n                            class=\\\" enterAsTab\\\"\\n                            enter-as-tab>\\n                            <span ng-if=\\\"!row[column]\\\">&nbsp;</span>\\n                        </td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.print()\\\" ng-disabled=\\\"vm.ongoingRequest\\\">{{'article.print' | translate}}</button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal()\\\" ng-disabled=\\\"vm.ongoingRequest\\\">{{'common.close' | translate}}</button>\\n        \\n        <button class=\\\"btn btn-xl btn-default pull-right\\\" ng-click=\\\"vm.getStockDataFromLocation()\\\" ng-disabled=\\\"vm.selectedLocation.locationName == null\\\">{{'article.stock' | translate}} </button>\\n        \\n        <div class=\\\"col-lg-3 pull-right\\\">\\n            <ui-select ng-model=\\\"vm.selectedLocation\\\" theme=\\\"bootstrap\\\" class=\\\"enterAsTab\\\" ng-change=\\\"vm.selectedLocationChanged($select.selected)\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"location in vm.stockLocations | filter:{'locationName': $select.search}\\\">\\n                    <span\\\">{{location.locationName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">{{'article.addIntrastat' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <ca-form-group-row label=\\\"'intrastat.code'\\\">\\n            <div>\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" placeholder=\\\"{{'intrastat.code' | translate}}\\\" ng-maxlength=\\\"12\\\" ng-model=\\\"vm.intrastat.code\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.internalDescription'\\\">\\n            <div>\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" placeholder=\\\"{{'intrastat.internalDescription' | translate}}\\\" maxlength=\\\"100\\\" ng-model=\\\"vm.intrastat.internalDescription\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalCode1'\\\">\\n            <div>\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" placeholder=\\\"{{'intrastat.externalCode1' | translate}}\\\" maxlength=\\\"12\\\" ng-model=\\\"vm.intrastat.externalCode1\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalDescription1'\\\">\\n            <div>\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" placeholder=\\\"{{'intrastat.externalDescription1' | translate}}\\\" maxlength=\\\"100\\\" ng-model=\\\"vm.intrastat.externalDescription1\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalCode2'\\\">\\n            <div>\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" placeholder=\\\"{{'intrastat.externalCode2' | translate}}\\\" maxlength=\\\"12\\\" ng-model=\\\"vm.intrastat.externalCode2\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalDescription2'\\\">\\n            <div>\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" placeholder=\\\"{{'intrastat.externalDescription2' | translate}}\\\" maxlength=\\\"100\\\" ng-model=\\\"vm.intrastat.externalDescription2\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalCode3'\\\">\\n            <div>\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" placeholder=\\\"{{'intrastat.externalCode3' | translate}}\\\" maxlength=\\\"12\\\" ng-model=\\\"vm.intrastat.externalCode3\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalDescription3'\\\">\\n            <div>\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" placeholder=\\\"{{'intrastat.externalDescription3' | translate}}\\\" maxlength=\\\"100\\\" ng-model=\\\"vm.intrastat.externalDescription3\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n      \\n        <div style=\\\"text-align:right;\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.saveIntrastat()\\\">{{'common.save' | translate}}</button>\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal()\\\">{{'common.cancel' | translate}}</button>\\n        </div>\\n        <div style=\\\"height: 0px; clear:both;\\\"></div>\\n    </div>\\n</div>\\n\\n\\n\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    span.barcodeHover {\\n        padding-left: 3px;\\n        padding-right: 3px;\\n    }\\n\\n    span.barcodeHover:hover {\\n        text-decoration: underline;\\n    }\\n</style>\\n<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.openLabelsModal()\\\" ng-show=\\\"!vm.isNewArticle\\\">\\n                {{'article.getlabels' | translate}}\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.modelinventorysearch.modelinventory')\\\" ng-show=\\\"!vm.isNewArticle\\\">\\n                {{'stock.inventorymodel' | translate}}\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.orderingpointssearch.orderingpoints')\\\" ng-show=\\\"!vm.isNewArticle\\\" ng-disabled=\\\"!vm.mayReadStockLogistics\\\">\\n                {{'stock.orderingpoints' | translate}}\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.articlesearch.article')\\\" ng-show=\\\"!vm.isNewArticle\\\" ng-disabled=\\\"!vm.canAccess('stock', 'read')\\\">\\n                {{'common.stock' | translate}}\\n            </button>\\n            <div style =\\\"padding-top : 8px\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.startEdit()\\\" ng-show=\\\"!vm.isEditing\\\">\\n                    {{'common.edit' | translate}}\\n                </button>\\n\\n                 <span ng-show=\\\"vm.isEditing\\\">\\n                    <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.save()\\\">{{'common.save' | translate}} </button>\\n                    <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.cancelEdit()\\\" ng-if=\\\"!vm.isNewArticle\\\">{{'common.cancel' | translate}}</button>\\n                </span>\\n            </div>\\n        </span>\\n        <div> &nbsp; </div>\\n        <span>{{vm.isNewArticle ? ('article.newarticle' | translate) : vm.selectedArticleCopy.alternativeArticleNumber +\\n            ' ' + vm.selectedArticleCopy.articleName}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <!-- Filtering/search section -->\\n        <ul class=\\\"nav nav-tabs\\\">\\n            <li ng-class=\\\"{'active' : vm.tabSelection.article}\\\"><a\\n                    ng-click=\\\"vm.changeToArticleTab()\\\">{{'article.article' | translate}}</a></li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection.articleVariants}\\\">\\n                <a ng-click=\\\"vm.changeToArticleVariantsTab()\\\">{{'article.articleVariants' | translate}}</a>\\n            </li>\\n            <li ng-if=\\\"vm.hasClaim\\\" ng-class=\\\"{'active' : vm.tabSelection.supplierPrices}\\\">\\n                <a ng-click=\\\"vm.changeToSupplierPricesTab()\\\">{{'article.supplierPrices' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection.barcodes}\\\">\\n                <a ng-click=\\\"vm.changeToBarcodesTab()\\\">{{'article.barcodes' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection.stocklocations}\\\" ng-if=\\\"vm.showStocklocationsTab\\\">\\n                <a ng-click=\\\"vm.changeToStocklocationsTab()\\\">{{'article.stocklocations' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection.priceLists}\\\" ng-if=\\\"vm.showPriceListsTab()\\\">\\n                <a ng-click=\\\"vm.changeToPriceListsTab()\\\">{{'article.pricelists' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection.metaFields}\\\" ng-if=\\\"vm.environment !== 'production'\\\">\\n                <a ng-click=\\\"vm.changeToMetaFieldsTab()\\\">{{'article.metaFieldValues' | translate}}</a>\\n            </li>\\n        </ul>\\n\\n        <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.article\\\">\\n            <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.validationErrors.length > 0\\\">\\n                <ul>\\n                    <li ng-repeat=\\\"error in vm.validationErrors\\\">{{::error.message}}</li>\\n                </ul>\\n            </div>\\n            <div class=\\\"alert alert-warning\\\"\\n                ng-show=\\\"vm.selectedArticleCopy.itemGroup.brand.brandCategory !== undefined && !vm.selectedArticleCopy.itemGroup.brand.brandCategory.isBarcodeGenerationAllowed\\\">\\n                {{'article.brandforbiddsbarcodegeneration' | translate}}\\n            </div>\\n            <div class=\\\"editableForm\\\">\\n                <div class=\\\"row\\\">\\n                    <div class=\\\"col-sm-12 col-md-12 col-lg-6\\\">\\n                        <ca-form-group-row label=\\\"'article.itemgroup'\\\" >\\n                            \\n                            <span ng-if=\\\"!vm.isNewArticle && vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.itemGroup.itemGroupCode + ' ' + vm.selectedArticleCopy.itemGroup.itemGroupLongName}}\\n                            </span>\\n\\n                            <span class=\\\"btn bg-white-only\\\" style=\\\"border-left: 0px; padding-left: 0px; margin-left: 0px; \\\" ng-show=\\\"!vm.isNewArticle && !vm.isEditing\\\">\\n                                {{vm.selectedArticleCopy.itemGroup.itemGroupCode + ' ' + vm.selectedArticleCopy.itemGroup.itemGroupLongName}}\\n                                <span ng-if=\\\"vm.hasClaim\\\" ng-click=\\\"vm.openItemGroupModal()\\\" >\\n                                    <i class=\\\"fa fa-ellipsis-h\\\" style=\\\"text-align:center; vertical-align: middle;padding-left: 10px; font-size:18px\\\"></i>\\n                                </span>\\n                            </span>\\n\\n                            <ui-select ng-if=\\\"vm.isNewArticle\\\" ng-model=\\\"vm.selectedArticleCopy.itemGroup\\\" ng-change=\\\"vm.changeItemGroup(vm.selectedArticleCopy.itemGroup)\\\" uib-tooltip=\\\"{{ 'article.startEnteringItemGroup' | translate }}\\\"  tooltip-append-to-body=\\\"true\\\" tooltip-trigger=\\\"'outsideClick'\\\" tooltip-placement=\\\"above\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.itemGroupCode + \\\" \\\" + $select.selected.itemGroupLongName}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"itemGroup in vm.itemGroups | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['itemGroupCode', 'itemGroupLongName']} : {minimumInputLength: 3}\\\" >\\n                                    <span>{{itemGroup.itemGroupCode + ' ' + itemGroup.itemGroupLongName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.articlenumber'\\\">\\n                            <span class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.articleNumber}}\\n                            </span>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.alternativearticlenumber'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.alternativeArticleNumber}}\\n                            </span>\\n                            <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\"\\n                                name=\\\"alternativeArticleNumber\\\"\\n                                ng-model=\\\"vm.selectedArticleCopy.alternativeArticleNumber\\\"\\n                                ng-disabled=\\\"vm.isNewWithItemGroup()\\\" enter-as-tab>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.articlename'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.articleName}}\\n                            </span>\\n                            <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"articleName\\\"\\n                                ng-model=\\\"vm.selectedArticleCopy.articleName\\\" ng-disabled=\\\"vm.isNewWithItemGroup()\\\"\\n                                enter-as-tab>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.department'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.department.departmentCode + \\\" \\\" +\\n                                vm.selectedArticleCopy.department.departmentDescription}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing && vm.selectedArticleCopy.itemGroup\\\"\\n                                model=\\\"vm.selectedArticleCopy.department\\\" choices=\\\"vm.availableDepartments \\\"\\n                                order-by=\\\"'departmentCode'\\\" item-renderer=\\\"['departmentCode','departmentDescription']\\\"\\n                                disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.subcategory'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.subCategory.subCategoryCode + \\\" \\\" +\\n                                vm.selectedArticleCopy.subCategory.subCategoryName}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing && vm.selectedArticleCopy.itemGroup\\\"\\n                                model=\\\"vm.selectedArticleCopy.subCategory\\\" choices=\\\"vm.availableSubCategories \\\"\\n                                order-by=\\\"'subCategoryCode'\\\" item-renderer=\\\"['subCategoryCode','subCategoryName']\\\"\\n                                disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.articletype'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.articleType.articleTypeName}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.selectedArticleCopy.articleType\\\"\\n                                choices=\\\"vm.articleTypes \\\" order-by=\\\"'articleTypeName'\\\"\\n                                item-renderer=\\\"'articleTypeName'\\\" ng-disabled=\\\"vm.isNewWithItemGroup()\\\"\\n                                disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.articlecollection'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.articleCollection.collectionDescription}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.selectedArticleCopy.articleCollection\\\"\\n                                choices=\\\"vm.articleCollections \\\" order-by=\\\"'collectionDescription'\\\"\\n                                item-renderer=\\\"'collectionDescription'\\\" ng-disabled=\\\"vm.isNewWithItemGroup()\\\"\\n                                disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.purchasecost'\\\" ng-style=\\\"{'visibility' : vm.hasClaim ? 'visible' : 'hidden' }\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.purchaseCost | number:2}}\\n                            </span>\\n                            <input ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                class=\\\"form-control ca-numeric enterAsTab\\\" name=\\\"purchaseCost\\\"\\n                                ng-model=\\\"vm.selectedArticleCopy.purchaseCost\\\" ng-disabled=\\\"vm.isNewWithItemGroup()\\\"\\n                                enter-as-tab>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.salesprice'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.salesPrice | number:2}}\\n                            </span>\\n                            <input ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                class=\\\"form-control ca-numeric enterAsTab\\\" name=\\\"salesPrice\\\"\\n                                ng-model=\\\"vm.selectedArticleCopy.salesPrice\\\" ng-disabled=\\\"vm.isNewWithItemGroup()\\\"\\n                                enter-as-tab>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.previousprice'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.previousPrice | number:2}}\\n                            </span>\\n                            <input ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                class=\\\"form-control ca-numeric enterAsTab\\\" name=\\\"previousPrice\\\"\\n                                ng-model=\\\"vm.selectedArticleCopy.previousPrice\\\" ng-disabled=\\\"vm.isNewWithItemGroup()\\\"\\n                                enter-as-tab>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.margin'\\\">\\n                            <span class=\\\"editable\\\">\\n                                {{vm.getMargin() * 100 | number:0}} %\\n                            </span>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.isvariant'\\\" ng-if=\\\"vm.isNewArticle\\\">\\n                            <label class=\\\"i-checks m-t-xs\\\">\\n                                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.selectedArticleCopy.isVariant\\\"\\n                                    ng-disabled=\\\"vm.isNewWithItemGroup()\\\" />\\n                                <i></i>\\n                            </label>\\n                        </ca-form-group-row>\\n                        \\n                        <ca-form-group-row label=\\\"'article.iscurrent'\\\" ng-if=\\\"!vm.selectedArticleCopy.isVariant\\\">\\n                            <label class=\\\"i-checks m-t-xs\\\">\\n                                <input type=\\\"checkbox\\\" namef=\\\"a\\\"\\n                                    ng-model=\\\"vm.selectedArticleCopy.articleVariants[0].isCurrent\\\"\\n                                    ng-disabled=\\\"!vm.isEditing || vm.isNewWithItemGroup()\\\" />\\n                                <i></i>\\n                            </label>\\n                        </ca-form-group-row>\\n                    </div>\\n\\n                    <div class=\\\"col-sm-12 col-md-12 col-lg-6\\\">\\n\\n                        <ca-form-group-row label=\\\"'brand.preferredCompany'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.preferredSupplier.companyName}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.selectedArticleCopy.preferredSupplier\\\"\\n                                choices=\\\"vm.suppliers\\\" order-by=\\\"'companyName'\\\" item-renderer=\\\"'companyName'\\\"\\n                                mandatory=\\\"true\\\" disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'brand.companies'\\\">\\n                            <div>\\n                                <div ng-if=\\\"vm.isEditing\\\">\\n                                    <ui-select multiple=\\\"\\\" class=\\\"editable-input\\\"\\n                                        ng-model=\\\"vm.selectedArticleCopy.suppliers\\\"\\n                                        ng-disabled=\\\"vm.isNewWithItemGroup()\\\" theme=\\\"bootstrap\\\">\\n                                        <ui-select-match\\n                                            ui-lock-choice=\\\"$item.id == vm.selectedArticleCopy.preferredSupplier.id\\\"\\n                                            placeholder=\\\"{{article.addCompany | translate}}\\\">\\n                                            <span>{{$item.companyName}}</span>\\n                                        </ui-select-match>\\n                                        <ui-select-choices\\n                                            repeat=\\\"item in vm.selectedArticleCopy.itemGroup.brand.companies | orderBy:'companyName' | filter:$select.search track by item.id\\\">\\n                                            <span>{{item.companyName}}</span>\\n                                        </ui-select-choices>\\n                                    </ui-select>\\n                                    <div ng-show=\\\"vm.isEditing\\\">\\n                                        &nbsp;\\n                                    </div>\\n                                </div>\\n                                <div ng-hide=\\\"vm.isEditing\\\"\\n                                    ng-repeat=\\\"company in vm.selectedArticleCopy.suppliers | orderBy:'company.companyName'\\\">\\n                                    <span ng-hide=\\\"vm.isEditing\\\"> {{company.companyName}} </span>\\n                                    <div ng-show=\\\"vm.isEditing\\\">\\n                                        &nbsp;\\n                                    </div>\\n                                </div>\\n                            </div>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.salesChannels'\\\">\\n                            <div ng-if=\\\"vm.isEditing\\\">\\n                                <ui-select multiple=\\\"\\\" class=\\\"editable-input\\\"\\n                                    ng-model=\\\"vm.selectedArticleCopy.salesChannels\\\"\\n                                    ng-disabled=\\\"vm.isNewWithItemGroup()\\\" theme=\\\"bootstrap\\\">\\n                                    <ui-select-match placeholder=\\\"{{'article.addSalesChannel' | translate}}\\\">\\n                                        <span>{{$item.salesChannelCode + \\\" \\\" + $item.salesChannelDescription}}</span>\\n                                    </ui-select-match>\\n                                    <ui-select-choices\\n                                        repeat=\\\"salesChannel in vm.salesChannels | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['salesChannelDescription', 'salesChannelCode']}\\\">\\n                                        <span>{{salesChannel.salesChannelCode + \\\" \\\" +\\n                                            salesChannel.salesChannelDescription}}</span>\\n                                    </ui-select-choices>\\n                                </ui-select>\\n                            </div>\\n                            <div ng-if=\\\"!vm.isEditing\\\" ng-repeat=\\\"salesChannel in vm.selectedArticleCopy.salesChannels\\\">\\n                                {{salesChannel.salesChannelCode}} {{salesChannel.salesChannelDescription}}</div>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.descriptionShort'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.descriptionShort}}\\n                            </span>\\n                            <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\"\\n                                name=\\\"descriptionShort\\\" ng-model=\\\"vm.selectedArticleCopy.descriptionShort\\\"\\n                                ng-disabled=\\\"vm.isNewWithItemGroup()\\\" enter-as-tab>\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.descriptionLong'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.descriptionLong}}\\n                            </span>\\n                            <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\"\\n                                name=\\\"descriptionLong\\\" ng-model=\\\"vm.selectedArticleCopy.descriptionLong\\\"\\n                                ng-disabled=\\\"vm.isNewWithItemGroup()\\\" enter-as-tab>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.intrastatnumber'\\\"\\n                            ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0\\\">\\n                            <span ng-if=\\\"vm.selectedArticleCopy.intrastat\\\"\\n                                uib-tooltip=\\\"{{vm.selectedArticleCopy.intrastat.internalDescription}}\\\">\\n                                {{ vm.selectedArticleCopy.intrastat.code}}\\n                            </span>\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.vat'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.vat.vatDescription}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.selectedArticleCopy.vat\\\" choices=\\\"vm.vats\\\"\\n                                order-by=\\\"'vatDescription'\\\" item-renderer=\\\"'vatDescription'\\\"\\n                                disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.salesAccount'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.salesAccount.accountNumber}}\\n                                {{vm.selectedArticleCopy.salesAccount.accountName}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.selectedArticleCopy.salesAccount\\\"\\n                                choices=\\\"vm.accounts\\\" order-by=\\\"'accountNumber'\\\"\\n                                item-renderer=\\\"['accountNumber','accountName']\\\" disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.discountAccount'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.discountAccount.accountNumber}}\\n                                {{vm.selectedArticleCopy.discountAccount.accountName}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.selectedArticleCopy.discountAccount\\\"\\n                                choices=\\\"vm.accounts\\\" order-by=\\\"'accountNumber'\\\"\\n                                item-renderer=\\\"['accountNumber','accountName']\\\" disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.countryoforigin'\\\" ng-if=\\\"vm.countries.length > 0\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.countryOfOrigin.code + ' ' +\\n                                vm.selectedArticleCopy.countryOfOrigin.name}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.selectedArticleCopy.countryOfOrigin\\\"\\n                                choices=\\\"vm.countries\\\" order-by=\\\"'code'\\\" item-renderer=\\\"['code','name']\\\"\\n                                disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.active'\\\">\\n                            <span ng-show=\\\"!vm.isEditing\\\" class=\\\"editable\\\">{{vm.selectedArticleCopy.isActive ?\\n                                ('common.true' | translate) : ('common.false' | translate)}}</span>\\n                            <label class=\\\"i-checks m-t-xs\\\" ng-show=\\\"vm.isEditing\\\">\\n                                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.selectedArticleCopy.isActive\\\"\\n                                    ng-disabled=\\\"vm.isNewWithItemGroup()\\\" />\\n                                <i></i>\\n                            </label>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.minPurchaseQty'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.minPurchaseQty}}\\n                            </span>\\n                            <input ng-if=\\\"vm.isEditing\\\" type=\\\"number\\\" step=\\\"1\\\"\\n                                class=\\\"form-control ca-numeric enterAsTab\\\" name=\\\"minPurchaseQty\\\"\\n                                ng-model=\\\"vm.selectedArticleCopy.minPurchaseQty\\\" ng-disabled=\\\"vm.isNewWithItemGroup()\\\"\\n                                enter-as-tab>\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.productclass'\\\">\\n                            <span ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                                {{vm.selectedArticleCopy.articleClass.name}}\\n                            </span>\\n                            <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.selectedArticleCopy.articleClass\\\"\\n                                choices=\\\"vm.productClasses\\\" order-by=\\\"'name'\\\" item-renderer=\\\"['name']\\\"\\n                                disabled-by=\\\"vm.isNewWithItemGroup()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <ca-form-group-row label=\\\"'article.isGroupSaleArticle'\\\">\\n                            <span class=\\\"editable\\\">{{vm.selectedArticleCopy.isGroupSaleArticle ? ('common.true' |\\n                                translate) : ('common.false' | translate)}}</span>\\n                        </ca-form-group-row>\\n                    </div>\\n                </div>\\n                <div class=\\\"row\\\"\\n                    ng-show=\\\"vm.selectedArticleCopy.isVariant && !vm.isNewWithItemGroup()\\\">\\n                    <div class=\\\"col-sm-12\\\">\\n                        <ca-article-variants-grid article-change-count=\\\"vm.articleChangeCount\\\" disabled=\\\"!vm.isEditing\\\"\\n                            is-editing=\\\"vm.isEditing\\\" article=\\\"vm.selectedArticleCopy\\\"\\n                            article-collections=\\\"vm.articleCollections\\\" variant2=\\\"vm.variant2\\\" searched-variant=\\\"vm.searchedVariant\\\">\\n                        </ca-article-variants-grid>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.articleVariants\\\">\\n            <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.validationErrors.length > 0\\\">\\n                <ul>\\n                    <li ng-repeat=\\\"error in vm.validationErrors\\\">{{::error.message}}</li>\\n                </ul>\\n            </div>\\n            <div class=\\\"editableForm\\\">\\n                <div ng-hide=\\\"vm.selectedArticleCopy.articleVariants.length > 0\\\" class=\\\"form-group row col-lg-12\\\">\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    {{'article.error.noArticleVariants' | translate}}\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n                <div ng-show=\\\"vm.isNewArticle && vm.selectedArticleCopy.articleVariants.length > 0\\\"\\n                    class=\\\"form-group row col-lg-12\\\">\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    {{'article.error.mustFirstSaveArticle' | translate}}\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n                <div ng-show=\\\"vm.selectedArticleCopy.articleVariants.length > 0\\\">\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    <div class=\\\"form-group row col-lg-12\\\">\\n                        <span style=\\\"display:inline-block;\\\">\\n                            <ui-select ng-model=\\\"vm.selectedArticleVariantFilter.selectedVariant1\\\" theme=\\\"bootstrap\\\"\\n                                enter-as-tab class=\\\" enterAsTab\\\" style=\\\"max-width: 250px;\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.variantDetail1.variantDetailName}}\\n                                </ui-select-match>\\n                                <ui-select-choices repeat=\\\"variant in vm.selectedArticleVariantFilter.variants1\\\">\\n                                    <span>{{variant.variantDetail1.variantDetailName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </span>\\n                        <span style=\\\"display:inline-block;\\\">\\n                            <ui-select ng-model=\\\"vm.selectedArticleVariantFilter.selectedVariant2\\\" theme=\\\"bootstrap\\\"\\n                                enter-as-tab class=\\\" enterAsTab\\\" style=\\\"max-width: 250px;\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.variantDetail2.variantDetailName}}\\n                                </ui-select-match>\\n                                <ui-select-choices repeat=\\\"variant in vm.selectedArticleVariantFilter.variants2\\\">\\n                                    <span>{{variant.variantDetail2.variantDetailName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </span>\\n                    </div>\\n\\n                    <div class=\\\"form-group row col-lg-12\\\">\\n                        <table class=\\\"table table-condensed\\\" style=\\\"width: 100%; min-width: 700px;\\\">\\n                            <thead>\\n                                <th style=\\\"padding-left:3px;padding-right:3px;min-width:150px\\\">{{'article.article' |\\n                                    translate}}</th>\\n                                <th style=\\\"padding-left:3px;padding-right:3px;min-width:150px\\\">\\n                                    {{'article.articlecollection' | translate}}</th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productLength === 'visible'\\\">\\n                                    {{'article.length' | translate}}</th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWidth === 'visible'\\\">\\n                                    {{'article.width' | translate}}</th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productHeight === 'visible'\\\">\\n                                    {{'article.height' | translate}}</th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWeight === 'visible'\\\">\\n                                    {{'article.weight' | translate}}</th>\\n                                <th style=\\\"padding-left:15px;padding-right:30px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.meursing === 'visible'\\\">\\n                                    {{'article.meursing' | translate}}</th>\\n                                <th style=\\\"padding-left:15px;padding-right:30px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.storageLocation === 'visible'\\\">\\n                                    {{'article.storageLocation' | translate}}</th>\\n                                <th style=\\\"padding-left:15px;padding-right:3px;\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0\\\">\\n                                    {{'article.intrastatnumber' | translate}}</th>\\n                                <th style=\\\"max-width: 100px;\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0 && vm.isEditing\\\">\\n                                    &nbsp;</th>\\n\\n                                <!-- columns added to maintain width of table -->\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productLength !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.length' | translate}}</span></th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWidth !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.width' | translate}}</span></th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productHeight !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.height' | translate}}</span></th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWeight !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.weight' | translate}}</span></th>\\n                                <th style=\\\"padding-left:15px;padding-right:30px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.meursing !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.meursing' | translate}}</span></th>\\n                                <th style=\\\"padding-left:15px;padding-right:30px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.storageLocation !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.storageLocation' | translate}}</span></th>\\n                                <th style=\\\"padding-left:15px;padding-right:3px;\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat !== 'visible' && vm.intrastats.length > 0\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.intrastatnumber' | translate}}</span></th>\\n                            </thead>\\n                            <tbody>\\n                                <tr>\\n                                    <td style=\\\"padding: 8px 3px;\\\">\\n                                        <div style=\\\"display: flex; flex-flow: column\\\">\\n                                            <div>{{vm.selectedArticleCopy.articleNumber}}</div>\\n                                            <div class=\\\"text-muted\\\">{{vm.selectedArticleCopy.alternativeArticleNumber}}\\n                                            </div>\\n                                            <div class=\\\"text-muted\\\">{{vm.selectedArticleCopy.articleName}}</div>\\n                                        </div>\\n                                    </td>\\n                                    <td style=\\\"padding: 8px 3px;\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{\\n                                            vm.selectedArticleCopy.articleCollection.collectionDescription }}</span>\\n                                        <ca-singleselect ng-if=\\\"vm.isEditing\\\" disabled-by=\\\"vm.isNewArticle\\\"\\n                                            model=\\\"vm.selectedArticleCopy.articleCollection\\\"\\n                                            choices=\\\"vm.articleCollections\\\" order-by=\\\"'currentRank'\\\"\\n                                            item-renderer=\\\"'collectionDescription'\\\" />\\n                                    </td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productLength === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{ vm.selectedArticleCopy.productLength }}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"vm.selectedArticleCopy.productLength\\\"\\n                                            ng-change=\\\"vm.updateAllArticleVariantLengths({{vm.selectedArticleCopy.productLength}})\\\"\\n                                            placeholder=\\\"{{'article.length' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\" min=\\\"0\\\"\\n                                            class=\\\"form-control ca-numeric\\\">\\n                                    </td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWidth === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{ vm.selectedArticleCopy.productWidth }}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"vm.selectedArticleCopy.productWidth\\\"\\n                                            ng-change=\\\"vm.updateAllArticleVariantWidths({{vm.selectedArticleCopy.productWidth}})\\\"\\n                                            placeholder=\\\"{{'article.width' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\" min=\\\"0\\\"\\n                                            class=\\\"form-control ca-numeric\\\">\\n                                    </td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productHeight === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{ vm.selectedArticleCopy.productHeight }}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"vm.selectedArticleCopy.productHeight\\\"\\n                                            ng-change=\\\"vm.updateAllArticleVariantHeights({{vm.selectedArticleCopy.productHeight}})\\\"\\n                                            placeholder=\\\"{{'article.height' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\" min=\\\"0\\\"\\n                                            class=\\\"form-control ca-numeric\\\">\\n                                    </td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWeight === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{ vm.selectedArticleCopy.productWeight }}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"vm.selectedArticleCopy.productWeight\\\"\\n                                            ng-change=\\\"vm.updateAllArticleVariantWeights({{vm.selectedArticleCopy.productWeight}})\\\"\\n                                            placeholder=\\\"{{'article.weight' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\" min=\\\"0\\\"\\n                                            class=\\\"form-control ca-numeric\\\">\\n                                    </td>\\n                                    <td style=\\\"padding-left:15px;padding-right:30px;\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.meursing === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{ vm.selectedArticleCopy.meursingCode }}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"vm.meursingCode\\\"\\n                                            ng-change=\\\"vm.updateAllArticleVariantMeursingCodes()\\\"\\n                                            placeholder=\\\"{{'article.meursing' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"text\\\" maxlength=\\\"10\\\"\\n                                            class=\\\"form-control\\\">\\n                                    </td>\\n                                    <td style=\\\"padding-left:15px;padding-right:30px;\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.storageLocation === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{ vm.selectedArticleCopy.storage.rack }}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"vm.selectedArticleCopy.storage.rack\\\"\\n                                            placeholder=\\\"{{'article.storageLocation' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"text\\\" maxlength=\\\"10\\\"\\n                                            class=\\\"form-control\\\">\\n                                    </td>\\n                                    <td style=\\\"padding-left:15px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\"\\n                                            uib-tooltip=\\\"{{ vm.selectedArticleCopy.intrastat.internalDescription }}\\\">{{\\n                                            vm.selectedArticleCopy.intrastat.code }}</span>\\n                                        <ca-singleselect disabled-by=\\\"vm.isNewArticle\\\"\\n                                            model=\\\"vm.selectedArticleCopy.intrastat\\\" ng-if=\\\"vm.isEditing\\\"\\n                                            choices=\\\"vm.intrastats\\\" order-by=\\\"'code'\\\"\\n                                            item-renderer=\\\"['code','internalDescription']\\\"></ca-singleselect>\\n                                    </td>\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0 && vm.isEditing\\\">\\n                                        <button ng-click=\\\"vm.openNewIntrastatModal()\\\" ng-if=\\\"vm.isEditing\\\"\\n                                            ng-disabled=\\\"vm.isNewArticle\\\" type=\\\"button\\\"\\n                                            class=\\\"btn btn-sm btn-default\\\">{{'common.new' | translate}}</button>\\n                                    </td>\\n\\n                                    <!-- columns added to maintain width of table -->\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productLength !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWidth !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productHeight !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWeight !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.meursing !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.storageLocation !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat !== 'visible' && vm.intrastats.length > 0\\\">\\n                                        &nbsp;</td>\\n                                </tr>\\n                            </tbody>\\n                        </table>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n                    <div class=\\\"form-group row col-lg-12\\\">\\n                        <table class=\\\"table table-condensed\\\" style=\\\"width: 100%; min-width: 700px;\\\">\\n                            <thead>\\n                                <th style=\\\"padding-left:3px;padding-right:3px;min-width:150px\\\">{{'article.variant' |\\n                                    translate}}</th>\\n                                <th style=\\\"padding-left:3px;padding-right:3px;min-width:150px\\\">\\n                                    {{'article.articlecollection' | translate}}</th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productLength === 'visible'\\\">\\n                                    {{'article.length' | translate}}</th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWidth === 'visible'\\\">\\n                                    {{'article.width' | translate}}</th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productHeight === 'visible'\\\">\\n                                    {{'article.height' | translate}}</th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWeight === 'visible'\\\">\\n                                    {{'article.weight' | translate}}</th>\\n                                <th style=\\\"padding-left:15px;padding-right:30px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.meursing === 'visible'\\\">\\n                                    {{'article.meursing' | translate}}</th>\\n                                <th style=\\\"padding-left:15px;padding-right:30px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.storageLocation === 'visible'\\\">\\n                                    {{'article.storageLocation' | translate}}</th>\\n                                <th style=\\\"padding-left:15px;padding-right:3px;\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0\\\">\\n                                    {{'article.intrastatnumber' | translate}}</th>\\n                                <th style=\\\"max-width: 100px;\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0 && vm.isEditing\\\">\\n                                    &nbsp;</th>\\n\\n                                <!-- columns added to maintain width of table -->\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productLength !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.length' | translate}}</span></th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWidth !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.width' | translate}}</span></th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productHeight !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.height' | translate}}</span></th>\\n                                <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWeight !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.weight' | translate}}</span></th>\\n                                <th style=\\\"padding-left:15px;padding-right:30px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.meursing !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.meursing' | translate}}</span></th>\\n                                <th style=\\\"padding-left:15px;padding-right:30px;min-width:70px\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.storageLocation !== 'visible'\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.storageLocation' | translate}}</span></th>\\n                                <th style=\\\"padding-left:15px;padding-right:3px;\\\"\\n                                    ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat !== 'visible' && vm.intrastats.length > 0\\\">\\n                                    <span class=\\\"ca-light\\\">{{'article.intrastatnumber' | translate}}</span></th>\\n                            </thead>\\n                            <tbody>\\n                                <tr\\n                                    ng-repeat=\\\"articleVariant in vm.selectedArticleCopy.articleVariants | filter: vm.filterArticleVariantData\\\">\\n                                    <td style=\\\"padding: 3px\\\">\\n                                        <div style=\\\"display: flex; flex-flow: column\\\"\\n                                            ng-class=\\\"{'ca-articlevariantsgrid-searchedcell':vm.isSearchedVariant(articleVariant)}\\\">\\n                                            <div>{{articleVariant.variantDetail1.variantDetailName}}\\n                                                {{articleVariant.variantDetail2.variantDetailName}}</div>\\n                                            <div class=\\\"text-muted\\\">{{articleVariant.barcode}}</div>\\n                                            <div class=\\\"text-muted\\\">{{articleVariant.externalId}}</div>\\n                                        </div>\\n                                    </td>\\n                                    <td style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                        <span\\n                                            ng-if=\\\"!vm.isEditing\\\">{{articleVariant.articleCollection.collectionDescription}}</span>\\n                                        <ca-singleselect ng-if=\\\"vm.isEditing\\\" disabled-by=\\\"vm.isNewArticle\\\"\\n                                            model=\\\"articleVariant.articleCollection\\\" choices=\\\"vm.articleCollections\\\"\\n                                            order-by=\\\"'currentRank'\\\" item-renderer=\\\"'collectionDescription'\\\" />\\n                                    </td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productLength === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{articleVariant.variantLength}}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"articleVariant.variantLength\\\"\\n                                            placeholder=\\\"{{'article.length' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                            class=\\\"form-control ca-numeric\\\">\\n                                    </td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWidth === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{articleVariant.variantWidth}}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"articleVariant.variantWidth\\\"\\n                                            placeholder=\\\"{{'article.width' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                            class=\\\"form-control ca-numeric\\\">\\n                                    </td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productHeight === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{articleVariant.variantHeight}}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"articleVariant.variantHeight\\\"\\n                                            placeholder=\\\"{{'article.height' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                            class=\\\"form-control ca-numeric\\\">\\n                                    </td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWeight === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{articleVariant.variantWeight}}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"articleVariant.variantWeight\\\"\\n                                            placeholder=\\\"{{'article.weight' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                            class=\\\"form-control ca-numeric\\\">\\n                                    </td>\\n                                    <td style=\\\"padding-left:15px;padding-right:30px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.meursing === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{articleVariant.meursingCode}}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"articleVariant.meursingCode\\\"\\n                                            placeholder=\\\"{{'article.meursing' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"text\\\" maxlength=\\\"10\\\"\\n                                            class=\\\"form-control\\\">\\n                                    </td>\\n                                    <td style=\\\"padding-left:15px;padding-right:30px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.storageLocation === 'visible'\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\">{{articleVariant.storage.rack}}</span>\\n                                        <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                            ng-model=\\\"articleVariant.storage.rack\\\"\\n                                            placeholder=\\\"{{'article.storageLocation' | translate}}\\\"\\n                                            style=\\\"padding:3px;min-width:90px\\\" type=\\\"text\\\" maxlength=\\\"10\\\"\\n                                            class=\\\"form-control\\\">\\n                                    </td>\\n                                    <td style=\\\"padding-left:15px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0\\\">\\n                                        <span ng-if=\\\"!vm.isEditing\\\"\\n                                            uib-tooltip=\\\"{{articleVariant.intrastat.internalDescription}}\\\">{{articleVariant.intrastat.code}}</span>\\n                                        <ca-singleselect ng-if=\\\"vm.isEditing\\\" disabled-by=\\\"vm.isNewArticle\\\"\\n                                            model=\\\"articleVariant.intrastat\\\" choices=\\\"vm.intrastats\\\" order-by=\\\"'code'\\\"\\n                                            item-renderer=\\\"['code','internalDescription']\\\"></ca-singleselect>\\n                                    </td>\\n                                    <td\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat === 'visible' && vm.intrastats.length > 0 && vm.isEditing\\\">\\n                                        <button ng-click=\\\"vm.openNewIntrastatModal(articleVariant)\\\" ng-if=\\\"vm.isEditing\\\"\\n                                            ng-disabled=\\\"vm.isNewArticle\\\" type=\\\"button\\\"\\n                                            class=\\\"btn btn-sm btn-default\\\">{{'common.new' | translate}}</button>\\n                                    </td>\\n\\n                                    <!-- columns added to maintain width of table -->\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productLength !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWidth !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productHeight !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.productWeight !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td style=\\\"padding-left:3px;padding-right:30px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.meursing !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td style=\\\"padding-left:3px;padding-right:30px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.storageLocation !== 'visible'\\\">\\n                                        &nbsp;</td>\\n                                    <td style=\\\"padding-left:3px;padding-right:3px\\\"\\n                                        ng-if=\\\"vm.selectedArticleCopy.itemGroup.mainGroup.attributeVisibility.intrastat !== 'visible' && vm.intrastats.length > 0\\\">\\n                                        &nbsp;</td>\\n                                </tr>\\n                            </tbody>\\n                        </table>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.supplierPrices\\\">\\n            <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.validationErrors.length > 0\\\">\\n                <ul>\\n                    <li ng-repeat=\\\"error in vm.validationErrors\\\">{{::error.message}}</li>\\n                </ul>\\n            </div>\\n            <div ng-hide=\\\"vm.selectedArticleCopy.suppliers.length > 0\\\" class=\\\"form-group row col-lg-12\\\">\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                {{'article.error.noSuppliers' | translate}}\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n            </div>\\n            <div ng-show=\\\"vm.selectedArticleCopy.suppliers.length > 0 && (!vm.selectedArticleCopy.articleVariants || vm.selectedArticleCopy.articleVariants.length === 0)\\\"\\n                class=\\\"form-group row col-lg-12\\\">\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                {{'article.error.noArticleVariants' | translate}}\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n            </div>\\n            <div ng-show=\\\"vm.isNewArticle && vm.selectedArticleCopy.suppliers.length > 0 && vm.selectedArticleCopy.articleVariants.length > 0\\\"\\n                class=\\\"form-group row col-lg-12\\\">\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                {{'article.error.mustFirstSaveArticle' | translate}}\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n            </div>\\n            <div\\n                ng-show=\\\"vm.selectedArticleCopy.suppliers.length > 0 && vm.selectedArticleCopy.articleVariants.length > 0\\\">\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                <div class=\\\"form-group row col-lg-12\\\">\\n                    <span style=\\\"display:inline-block;\\\">\\n                        <ui-select ng-model=\\\"vm.selectedSupplierFilter.selectedSupplier\\\" theme=\\\"bootstrap\\\"\\n                            class=\\\" enterAsTab\\\" enter-as-tab style=\\\"max-width: 250px;\\\">\\n                            <ui-select-match placeholder=\\\"\\\">{{$select.selected.companyName}}</ui-select-match>\\n                            <ui-select-choices repeat=\\\"supplier in vm.selectedSupplierFilter.suppliers\\\">\\n                                <span>{{supplier.companyName}}</span>\\n                            </ui-select-choices>\\n                        </ui-select>\\n                    </span>\\n                    <span style=\\\"display:inline-block;\\\">\\n                        <ui-select ng-model=\\\"vm.selectedSupplierFilter.selectedVariant1\\\" theme=\\\"bootstrap\\\"\\n                            class=\\\" enterAsTab\\\" enter-as-tab style=\\\"max-width: 250px;\\\">\\n                            <ui-select-match placeholder=\\\"\\\">{{$select.selected.variantDetail1.variantDetailName}}\\n                            </ui-select-match>\\n                            <ui-select-choices repeat=\\\"variant in vm.selectedSupplierFilter.variants1\\\">\\n                                <span>{{variant.variantDetail1.variantDetailName}}</span>\\n                            </ui-select-choices>\\n                        </ui-select>\\n                    </span>\\n                    <span style=\\\"display:inline-block;\\\">\\n                        <ui-select ng-model=\\\"vm.selectedSupplierFilter.selectedVariant2\\\" theme=\\\"bootstrap\\\"\\n                            class=\\\" enterAsTab\\\" enter-as-tab style=\\\"max-width: 250px;\\\">\\n                            <ui-select-match placeholder=\\\"\\\">{{$select.selected.variantDetail2.variantDetailName}}\\n                            </ui-select-match>\\n                            <ui-select-choices repeat=\\\"variant in vm.selectedSupplierFilter.variants2\\\">\\n                                <span>{{variant.variantDetail2.variantDetailName}}</span>\\n                            </ui-select-choices>\\n                        </ui-select>\\n                    </span>\\n                </div>\\n\\n                <div class=\\\"form-group row col-lg-12\\\">\\n                    <table class=\\\"table table-condensed\\\" style=\\\"width: 100%; min-width: 700px;\\\">\\n                        <thead>\\n                            <th>{{'brand.company' | translate}}</th>\\n                            <th style=\\\"padding-left:3px;padding-right:3px;min-width:150px\\\">{{'article.variant' |\\n                                translate}}\\n                            </th>\\n                            <!-- ArticleNumber -->\\n                            <th>\\n                                {{'article.alternativearticlenumber' | translate}}\\n                            </th>\\n\\n                            <!-- Local currency fields -->\\n                            <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\">\\n                                {{'article.purchaseprice' | translate}}\\n                            </th>\\n                            <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;max-width:70px\\\"\\n                                tooltip-append-to-body=\\\"true\\\" \\n                                tooltip-placement=\\\"top-left\\\" \\n                                uib-tooltip=\\\"{{'article.purchaseprice' | translate}} * {{'article.discountpercent' | translate}}%\\\">\\n                                {{'article.discountpercent' | translate}} %\\n                            </th>\\n                            <th style=\\\"padding-left:3px;padding-right:3px;\\\" ng-if=\\\"vm.isEditing\\\"> \\n                                {{'article.currency' | translate}}\\n                            </th>\\n\\n                            <!-- Converted to other currency -->\\n                            <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\">\\n                                <!-- {{'article.purchaseprice' | translate}} -->\\n                            </th>\\n                            <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\" ng-if=\\\"vm.hasCurrencyConversions()\\\">\\n                                \\n                            </th>\\n                            <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\" ng-if=\\\"vm.hasCurrencyConversions()\\\">\\n                                {{'currency.currencyRate' | translate}}\\n                            </th>\\n\\n                            <!-- Other Currency Fields -->\\n                            <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\">\\n                                {{'article.shippingCost' | translate}} ({{ vm.defaultCurrency.code }})\\n                            </th>\\n                            <th class=\\\"ca-numeric\\\" \\n                                style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\" \\n                                tooltip-append-to-body=\\\"true\\\" \\n                                tooltip-placement=\\\"top-left\\\" \\n                                uib-tooltip=\\\"({{'article.purchaseprice' | translate}} * {{'article.discountpercent' | translate}}%) * {{'article.shippingCost' | translate}} * {{'article.customsPercent' | translate}}%\\\">\\n                                {{'article.customsPercent' | translate}} %\\n                            </th>\\n                            <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\">\\n                                {{'article.otherCosts' | translate}} ({{ vm.defaultCurrency.code }})\\n                            </th>\\n                            <th class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px;max-width:70px\\\">\\n                                {{'article.standardcostaddpercent' | translate}} %\\n                            </th>\\n\\n                            <!-- Sum -->\\n                            <th class=\\\"ca-numeric\\\" \\n                                style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\"\\n                                tooltip-append-to-body=\\\"true\\\" \\n                                tooltip-placement=\\\"top-left\\\" \\n                                uib-tooltip=\\\"({{'article.purchaseprice' | translate}} + {{'article.discountpercent' | translate}}% + \\n                                    {{'article.shippingCost' | translate}} + {{'article.customsPercent' | translate}}% + {{'article.otherCosts' | translate}}) * \\n                                    {{'article.standardcostaddpercent' | translate}}%\\\">\\n                                {{'article.purchasecost' | translate}} ({{vm.defaultCurrency.code}})\\n                            </th>\\n\\n                            <th style=\\\"max-width:20px\\\"></th>\\n                        </thead>\\n                        <tbody>\\n                            <tr class=\\\"supplierPriceRow\\\"\\n                                ng-repeat=\\\"row in vm.supplierRowData | filter: vm.filterSupplierRowData\\\">\\n                                <td><span class=\\\"companyName\\\">{{row.companyName}}</span></td>\\n                                <td style=\\\"padding: 3px\\\">\\n                                    <div style=\\\"display: flex; flex-flow: column\\\"\\n                                        ng-class=\\\"{'ca-articlevariantsgrid-searchedcell':vm.isSearchedVariant({ id: row.articleVariantId })}\\\">\\n                                        <div>{{row.variantDetail1Name}} {{row.variantDetail2Name}}</div>\\n                                        <div class=\\\"text-muted\\\">{{row.externalId}}</div>\\n                                    </div>\\n                                </td>\\n                                <td>\\n                                    <span ng-if=\\\"!vm.isEditing\\\">{{row.alternativeProductNumber}}</span>\\n                                    <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\" type=\\\"text\\\"\\n                                        class=\\\"form-control\\\" ng-model=\\\"row.alternativeProductNumber\\\"\\n                                        placeholder=\\\"{{'article.alternativearticlenumber' | translate}}\\\">\\n                                </td>\\n\\n                                <!-- SupplierPrice purchasePrice (\\\"Inköpspris\\\") -->\\n                                <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                    <span ng-if=\\\"!vm.isEditing\\\">{{row.purchasePrice | number:2}}</span>\\n                                    <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                        style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                        class=\\\"form-control ca-numeric\\\" ng-model=\\\"row.purchasePrice\\\"\\n                                        placeholder=\\\"{{'article.purchaseprice' | translate}}\\\">\\n                                </td>\\n\\n                                <!-- SupplierPrice Discount percent (\\\"Rabatt\\\") -->\\n                                <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                    <span ng-if=\\\"!vm.isEditing\\\">{{row.discountPercent | number:1}} %</span>\\n                                    <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\" style=\\\"padding:3px\\\"\\n                                        type=\\\"number\\\" step=\\\"any\\\" class=\\\"form-control ca-numeric\\\"\\n                                        ng-model=\\\"row.discountPercent\\\"\\n                                        placeholder=\\\"{{'article.discountpercent' | translate}}\\\">\\n                                </td>\\n\\n                                <!-- SupplierPrice Currency (\\\"Valuta\\\") -->\\n                                <td style=\\\"padding-left:3px;padding-right:3px\\\" ng-if=\\\"vm.isEditing\\\">\\n                                    <ca-singleselect ng-if=\\\"vm.isEditing\\\" disabled-by=\\\"vm.isNewArticle\\\"\\n                                        model=\\\"row.purchasingCurrency\\\" choices=\\\"vm.currencies\\\" order-by=\\\"'code'\\\"\\n                                        item-renderer=\\\"'code'\\\" />\\n                                </td>\\n\\n                                <!-- Calculated PurchasePrice Local currency -->\\n                                <td class=\\\"ca-numeric info\\\" style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                    {{ vm.calculatePurchasePrice(row.purchasePrice, row.discountPercent) | number:2}} {{ row.purchasingCurrency.code }}\\n                                </td>\\n\\n                                <!-- Calculated PurchasePrice Other currency -->\\n                                <td class=\\\"ca-numeric info\\\" style=\\\"padding-left:3px;padding-right:3px\\\" ng-if=\\\"vm.hasCurrencyConversions()\\\">\\n                                    {{ vm.calculatePurchasePrice(row.purchasePrice, row.discountPercent) * row.purchasingCurrency.currencyRate | number:2 }} {{ vm.defaultCurrency.code }}\\n                                </td>\\n                                <!-- Currency Rate -->\\n                                <td class=\\\"ca-numeric info\\\" style=\\\"padding-left:3px;padding-right:3px\\\" ng-if=\\\"vm.hasCurrencyConversions()\\\">\\n                                    {{ row.purchasingCurrency.currencyRate }}\\n                                </td>\\n\\n                                <!-- SupplierPrice ShippingCost (\\\"Frakt\\\") -->\\n                                <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                    <span ng-if=\\\"!vm.isEditing\\\">{{row.shippingCost | number:2}}</span>\\n                                    <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                        style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                        class=\\\"form-control ca-numeric\\\" ng-model=\\\"row.shippingCost\\\"\\n                                        placeholder=\\\"{{'article.shippingCost' | translate}}\\\">\\n                                </td>\\n\\n                                <!-- SupplierPrice CustomsPercent (\\\"Tull %\\\") -->\\n                                <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                    <span ng-if=\\\"!vm.isEditing\\\">{{row.customsPercent | number:0}} %</span>\\n                                    <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                        style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                        class=\\\"form-control ca-numeric\\\" ng-model=\\\"row.customsPercent\\\"\\n                                        placeholder=\\\"{{'article.customsPercent' | translate}}\\\">\\n                                </td>\\n                                \\n                                <!-- SupplierPrice otherCosts (\\\"Övrigt\\\") -->\\n                                <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                    <span ng-if=\\\"!vm.isEditing\\\">{{row.otherCosts | number:2}}</span>\\n                                    <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                        style=\\\"padding:3px;min-width:90px\\\" type=\\\"number\\\" step=\\\"any\\\"\\n                                        class=\\\"form-control ca-numeric\\\" ng-model=\\\"row.otherCosts\\\"\\n                                        placeholder=\\\"{{'article.otherCosts' | translate}}\\\">\\n                                </td>\\n\\n                                <!-- SupplierPrice standardCostAddPercent (\\\"Påslag\\\") -->\\n                                <td class=\\\"ca-numeric\\\" style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                    <span ng-if=\\\"!vm.isEditing\\\">{{row.standardCostAddPercent | number:1}} %</span>\\n                                    <input ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"vm.isNewArticle\\\" style=\\\"padding:3px\\\"\\n                                        type=\\\"number\\\" step=\\\"any\\\" class=\\\"form-control ca-numeric\\\"\\n                                        ng-model=\\\"row.standardCostAddPercent\\\"\\n                                        placeholder=\\\"{{'article.standardcostaddpercent' | translate}}\\\">\\n                                </td>\\n\\n                                <!-- Sum -->\\n                                <td class=\\\"ca-numeric info\\\" style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                    {{ vm.calculateCostPrice(\\n                                        row.purchasePrice, \\n                                        row.discountPercent,\\n                                        row.standardCostAddPercent, \\n                                        row.purchasingCurrency.currencyRate,\\n                                        row.shippingCost,\\n                                        row.customsPercent,\\n                                        row.otherCosts\\n                                        ) \\n                                        | number:2 }}\\n                                </td>\\n                                <td>\\n                                    <span class=\\\"btn btn-sm fa fa-copy\\\" ng-disabled=\\\"vm.isNewArticle\\\"\\n                                        ng-click=\\\"vm.copyToAllVisibleSupplierPrices(row)\\\"></span>\\n                                </td>\\n                            </tr>\\n                        </tbody>\\n                    </table>\\n                </div>\\n\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.barcodes\\\">\\n            <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.validationErrors.length > 0\\\">\\n                <ul>\\n                    <li ng-repeat=\\\"error in vm.validationErrors\\\">{{::error.message}}</li>\\n                </ul>\\n            </div>\\n            <div class=\\\"editableForm\\\">\\n                <div ng-hide=\\\"vm.selectedArticleCopy.articleVariants.length > 0\\\" class=\\\"form-group row col-lg-12\\\">\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    {{'article.error.noArticleVariants' | translate}}\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n                <div ng-show=\\\"vm.isNewArticle && vm.selectedArticleCopy.articleVariants.length > 0\\\"\\n                    class=\\\"form-group row col-lg-12\\\">\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    {{'article.error.mustFirstSaveArticle' | translate}}\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n                <div ng-show=\\\"vm.selectedArticleCopy.articleVariants.length > 0\\\">\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    <div class=\\\"form-group row col-lg-12\\\" style=\\\"display: inline-block;\\\">\\n                        <span style=\\\"display:inline-block;\\\">\\n                            <ui-select ng-model=\\\"vm.selectedArticleVariantFilter.selectedVariant1\\\" theme=\\\"bootstrap\\\"\\n                                class=\\\" enterAsTab\\\" enter-as-tab style=\\\"max-width: 250px;\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.variantDetail1.variantDetailName}}\\n                                </ui-select-match>\\n                                <ui-select-choices repeat=\\\"variant in vm.selectedArticleVariantFilter.variants1\\\">\\n                                    <span>{{variant.variantDetail1.variantDetailName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </span>\\n                        <span style=\\\"display:inline-block;\\\">\\n                            <ui-select ng-model=\\\"vm.selectedArticleVariantFilter.selectedVariant2\\\" theme=\\\"bootstrap\\\"\\n                                class=\\\" enterAsTab\\\" enter-as-tab style=\\\"max-width: 250px;\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.variantDetail2.variantDetailName}}\\n                                </ui-select-match>\\n                                <ui-select-choices repeat=\\\"variant in vm.selectedArticleVariantFilter.variants2\\\">\\n                                    <span>{{variant.variantDetail2.variantDetailName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </span>\\n                    </div>\\n\\n                    <div class=\\\"form-group row col-lg-12\\\">\\n                        <table class=\\\"table table-condensed\\\" style=\\\"width: 65%; min-width: 700px; border-collapse: collapse;\\\">\\n                            <thead>\\n                                <tr>\\n                                    <th style=\\\"width:10%\\\">{{'article.variant' | translate}} ({{ 'article.variantdetail1' | translate }} - {{ 'article.variantdetail2' | translate }})</th>\\n                                    <th style=\\\"width:10%\\\">{{'article.barcode' | translate}}</th>\\n                                    <th style=\\\"width:10%\\\">{{'reports.soldstock.articlevariant.externalid' | translate}}</th>\\n                                </tr>\\n                            </thead>\\n                            <tbody>\\n                                <tr ng-class=\\\"{'ca-articlevariantsgrid-searchedcell':vm.isSearchedVariant(articleVariant)}\\\" ng-repeat=\\\"articleVariant in vm.selectedArticleCopy.articleVariants | filter: vm.filterArticleVariantData\\\" >\\n                                    <td>\\n                                        <div>{{articleVariant.variantDetail1.variantDetailName}} - {{articleVariant.variantDetail2.variantDetailName}}</div>\\n                                    </td>\\n                                    <td>\\n                                        <span ng-repeat=\\\"articleBarcode in articleVariant.barcodesZerofill\\\"\\n                                            class=\\\"barcodeHover\\\"\\n                                            ng-class=\\\"{ 'ca-articlevariantsgrid-searchedcell': vm.searchedBarcode === articleBarcode.barcode }\\\"\\n                                            style=\\\"border-top-width:0px;border-left-width:0px;border-right-width:0px;\\\">{{articleBarcode.barcode }}</span>\\n                                    </td>\\n                                    <td class=\\\"text-muted\\\">\\n                                        {{ articleVariant.externalId }}\\n                                    </td>\\n                                </tr>\\n                            </tbody>\\n                        </table>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-'lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.stocklocations\\\">\\n            <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.validationErrors.length > 0\\\">\\n                <ul>\\n                    <li ng-repeat=\\\"error in vm.validationErrors\\\">{{::error.message}}</li>\\n                </ul>\\n            </div>\\n            <div class=\\\"editableForm\\\">\\n                <div ng-hide=\\\"vm.selectedArticleCopy.articleVariants.length > 0\\\" class=\\\"form-group row col-lg-12\\\">\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    {{'article.error.noArticleVariants' | translate}}\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n                <div ng-show=\\\"vm.isNewArticle && vm.selectedArticleCopy.articleVariants.length > 0\\\"\\n                    class=\\\"form-group row col-lg-12\\\">\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    {{'article.error.mustFirstSaveArticle' | translate}}\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n\\n                <div>\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    <div class=\\\"form-group row col-lg-12\\\">\\n\\n                        <span style=\\\"display:inline-block;\\\">\\n                            <ui-select ng-model=\\\"vm.location\\\" theme=\\\"bootstrap\\\" ng-change=\\\"vm.getStockLocations()\\\"\\n                                class=\\\" enterAsTab\\\" enter-as-tab>\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"location in vm.locations\\\">\\n                                    <span>{{location.locationName}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </span>\\n                    </div>\\n\\n                    <div class=\\\"form-group row col-lg-12\\\">\\n                        <table class=\\\"table table-condensed\\\" style=\\\"width: 100%; min-width: 700px;\\\">\\n                            <thead>\\n                                <tr>\\n                                    <th style=\\\"padding-left:3px;padding-right:3px;min-width:150px\\\">{{'article.variant' |\\n                                        translate}}</th>\\n                                    <th style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\">\\n                                        {{'article.stocklocation' | translate}}</th>\\n                                    <th style=\\\"padding-left:3px;padding-right:3px;min-width:70px\\\">\\n                                        {{'article.isPhotographed' | translate}}</th>\\n                                </tr>\\n                            </thead>\\n                            <tbody ng-if=\\\"vm.stocklocations.length == 0\\\">\\n                                <tr>\\n                                    <td style=\\\"text-align: center;\\\">{{ 'article.noStocklocations' | translate }} </td>\\n                                </tr>\\n                            </tbody>\\n                            <tbody ng-if=\\\"vm.stocklocations.length > 0\\\">\\n                                <tr\\n                                    ng-repeat=\\\"articleVariant in vm.selectedArticleCopy.articleVariants | filter: vm.filterArticleVariantData\\\">\\n                                    <td style=\\\"padding: 3px\\\">\\n                                        <div\\n                                            ng-class=\\\"{'ca-articlevariantsgrid-searchedcell':vm.isSearchedVariant(articleVariant)}\\\">\\n                                            <div>{{articleVariant.variantDetail1.variantDetailName}}\\n                                                {{articleVariant.variantDetail2.variantDetailName}}</div>\\n                                            <div class=\\\"text-muted\\\">{{ articleVariant.externalId }}</div>\\n                                        </div>\\n                                    </td>\\n                                    <td style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                        {{ vm.stocklocations[articleVariant.id]['stocklocation'] }}\\n                                    </td>\\n                                    <td style=\\\"padding-left:3px;padding-right:3px\\\">\\n                                        {{ vm.stocklocations[articleVariant.id]['isphotographed'] ? ('common.yes' |\\n                                        translate) : ('common.no' | translate) }}\\n                                    </td>\\n                                </tr>\\n                            </tbody>\\n                        </table>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                </div>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.priceLists\\\">\\n            <div ng-show=\\\"vm.selectedArticleCopy.suppliers.length > 0 && (!vm.selectedArticleCopy.articleVariants || vm.selectedArticleCopy.articleVariants.length === 0)\\\"\\n                class=\\\"form-group row col-lg-12\\\">\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                {{'article.error.noArticleVariants' | translate}}\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n            </div>\\n            <div ng-show=\\\"vm.isNewArticle && vm.selectedArticleCopy.suppliers.length > 0 && vm.selectedArticleCopy.articleVariants.length > 0\\\"\\n                class=\\\"form-group row col-lg-12\\\">\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                {{'article.error.mustFirstSaveArticle' | translate}}\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n            </div>\\n            <div ng-show=\\\"vm.selectedArticleCopy.articleVariants.length > 0 && vm.productPrices.length > 0\\\">\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                \\n                <!-- PriceList: Select price to display -->\\n                <div class=\\\"col-lg-12\\\">\\n                    <ui-select ng-model=\\\"vm.priceListPriceDisplaySelection\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                        <ui-select-match>\\n                            {{$select.selected.label | translate}}\\n                        </ui-select-match>\\n                        <ui-select-choices repeat=\\\"selection in vm.priceListPriceDisplaySelections\\\">\\n                            <span>{{selection.label | translate}}</span>\\n                        </ui-select-choices>\\n                    </ui-select>\\n                </div>\\n\\n                <div class=\\\"form-group row col-lg-12\\\">\\n                    <table class=\\\"table table-condensed\\\" style=\\\"width: 100%; min-width: 700px;\\\">\\n                        <thead>\\n                            <th>{{'article.variant' | translate}}</th>\\n                            <th ng-repeat=\\\"pricelist in vm.priceLists\\\"\\n                                uib-tooltip=\\\"{{ pricelist.priceListName }}\\\"\\n                                tooltip-placement=\\\"top-left\\\"\\n                                tooltip-append-to-body=\\\"true\\\">{{ pricelist.priceListCode }}</th>\\n                        </thead>\\n                        <tbody>\\n\\n                            <!-- PriceList: SalesPrice -->\\n                            <tr ng-repeat=\\\"row in vm.productPrices\\\" ng-if=\\\"vm.priceListPriceDisplaySelection.type === 'salesPrice'\\\">\\n                                <td style=\\\"padding: 3px\\\">\\n                                    <div style=\\\"display: flex; flex-flow: column\\\" ng-class=\\\"{'ca-articlevariantsgrid-searchedcell':vm.isSearchedVariant({ id: row.id })}\\\">\\n                                        <div>{{row.variantDetail1Name}} {{row.variantDetail2Name}}</div>\\n                                        <div class=\\\"text-muted\\\">{{row.barcode}}</div>\\n                                        <div class=\\\"text-muted\\\">{{row.externalId}}</div>\\n                                    </div>\\n                                </td>\\n                                <td ng-repeat=\\\"pricelist in vm.priceLists\\\">\\n                                    <span ng-repeat=\\\"pricelistitem in row.priceListItems\\\">\\n                                        <span ng-show=\\\"pricelist.priceListId === pricelistitem.priceListId\\\" uib-tooltip=\\\"{{ 'article.previousprice' | translate }}: {{ pricelistitem.previousPrice }}\\\"\\n                                            tooltip-placement=\\\"top-left\\\"\\n                                            tooltip-append-to-body=\\\"true\\\">\\n                                            {{ pricelistitem.price }}\\n                                        </span>\\n                                    </span>\\n                                </td>\\n                            </tr>\\n                            \\n                            <!-- PriceList: PreviousPrice -->\\n                            <tr ng-repeat=\\\"row in vm.productPrices\\\" ng-if=\\\"vm.priceListPriceDisplaySelection.type === 'previousPrice'\\\">\\n                                <td style=\\\"padding: 3px\\\">\\n                                    <div style=\\\"display: flex; flex-flow: column\\\" ng-class=\\\"{'ca-articlevariantsgrid-searchedcell':vm.isSearchedVariant({ id: row.id })}\\\">\\n                                        <div>{{row.variantDetail1Name}} {{row.variantDetail2Name}}</div>\\n                                        <div class=\\\"text-muted\\\">{{row.barcode}}</div>\\n                                        <div class=\\\"text-muted\\\">{{row.externalId}}</div>\\n                                    </div>\\n                                </td>\\n                                <td ng-repeat=\\\"pricelist in vm.priceLists\\\">\\n                                    <span ng-repeat=\\\"pricelistitem in row.priceListItems\\\">\\n                                        <span ng-show=\\\"pricelist.priceListId === pricelistitem.priceListId\\\" uib-tooltip=\\\"{{ 'article.previousprice' | translate }}: {{ pricelistitem.previousPrice }}\\\"\\n                                            tooltip-placement=\\\"top-left\\\"\\n                                            tooltip-append-to-body=\\\"true\\\">\\n                                            {{ pricelistitem.previousPrice }}\\n                                        </span>\\n                                    </span>\\n                                </td>\\n                            </tr>\\n                           \\n                        </tbody>\\n                    </table>\\n                </div>\\n\\n                <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.metaFields\\\" ng-if=\\\"vm.environment !== 'production'\\\">\\n\\n            <!-- <foo-bar hello=\\\"'heyy'\\\"></foo-bar>\\n            {{fooBar}} -->\\n            <meta-field-values values=\\\"vm.metaFieldValues\\\" initialIsEditing=\\\"vm.isEditing\\\"></meta-field-values>\\n            <meta-fields fields=\\\"vm.metaFields\\\" initialIsEditing=\\\"vm.isEditing\\\"></meta-fields>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\"> \\n    <button class=\\\"btn btn-default btn-sm\\\" \\n            type=\\\"button\\\" \\n            ng-repeat=\\\"gridEditType in vm.gridEditTypes\\\" \\n            ng-click=\\\"vm.changeGridEditType(gridEditType)\\\" \\n            ng-class=\\\"{'btn-dark' : vm.selectedGridEditType.value === gridEditType.value}\\\"> \\n                {{gridEditType.translationKey | translate}} \\n    </button>\\n    <button class=\\\"btn btn-default btn-sm\\\" type=\\\"button\\\" ng-click=\\\"vm.openColourChangeModal()\\\" ng-show=\\\"vm.isAllowedToChangeColoursOnProducts\\\"> {{ 'article.changeColour' | translate }} </button>\\n</div>\\n<div class=\\\"col-lg-12\\\"> \\n    <table class=\\\"table-hover table-condensed table-readable-compact\\\">\\n        <thead>\\n            <th>{{vm.article.itemGroup.mainGroup.variant1.variantName}}</th>\\n            <th ng-hide=\\\"vm.disabled\\\"> </th>\\n            <th ng-repeat=\\\"variantDetail2 in vm.variantDetail2s\\\"> {{variantDetail2.variantDetailName}} </th>\\n        </thead>\\n        <tr ng-repeat=\\\"articleVariantArray in vm.gridData\\\">\\n            <td>\\n                <span ng-show=\\\"vm.isEditing || vm.isNewArticle\\\" style=\\\"width: 100%; display:inline-block;\\\">{{ (articleVariantArray.length !== 0) ? articleVariantArray[0].variantDetail1.variantDetailName : '' }}</span>\\n                <span class=\\\"btn bg-white-only\\\" style=\\\"border-left: 0px; padding-left: 0px; margin-left: 0px; \\\" ng-show=\\\"!vm.isNewArticle && !vm.isEditing\\\" \\n                    ng-click=\\\"vm.openColourChangeModal(((articleVariantArray.length !== 0) ? articleVariantArray[0].variantDetail1.variantDetailName : ''))\\\" >\\n                    {{ (articleVariantArray.length !== 0) ? articleVariantArray[0].variantDetail1.variantDetailName : '' }}\\n                    <span>\\n                        <i class=\\\"fa fa-ellipsis-h\\\" style=\\\"text-align:center; vertical-align: middle;padding-left: 10px; font-size:18px\\\"></i>\\n                    </span>\\n                </span>\\n            </td>\\n            <td ng-hide=\\\"vm.disabled\\\">\\n                <ca-article-variants-grid-cell article-variants=\\\"articleVariantArray\\\" grid-edit-type=\\\"vm.selectedGridEditType\\\" change-count='vm.articleChangeCount' disabled=\\\"vm.disabled\\\" article-collections=\\\"vm.articleCollections\\\"> </ca-article-variants-grid-cell>\\n            </td>\\n            <td ng-repeat=\\\"articleVariant in articleVariantArray\\\" ng-class=\\\"{'ca-articlevariantsgrid-searchedcell':vm.isSearchedVariant(articleVariant)}\\\"> \\n                <ca-article-variants-grid-cell \\n                    article-variant=\\\"articleVariant\\\" \\n                    grid-edit-type=\\\"vm.selectedGridEditType\\\" \\n                    change-count=\\\"vm.articleChangeCount\\\" \\n                    disabled=\\\"vm.disabled || articleVariant.isGeneratedArticleVariant\\\" \\n                    article-collections=\\\"vm.articleCollections\\\"> \\n            </td>\\n        </tr>\\n        <tr ng-show=\\\"!vm.disabled\\\">\\n            <td>\\n                <button class=\\\"btn btn-xs btn-success\\\" style=\\\"font-size:small; border-radius: 12px;\\\" type=\\\"button\\\" ng-click=\\\"vm.openAddArticleVariantDialog()\\\">\\n                    <i class=\\\"fa fa-plus\\\" aria-hidden=\\\"true\\\"></i>\\n                    <span>\\n                        {{'common.add' | translate}} {{ 'customerinvoice.articleVariant' | translate}} &ensp; \\n                    </span>\\n                </button> \\n            </td>\\n        </tr>\\n    </table>\\n    <div>&nbsp;</div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<!-- Display values -->\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"vm.disabled && vm.dataType === 'text'\\\"> \\n    {{vm.articleVariant[vm.gridEditType.value]}} \\n</div>\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"vm.disabled && vm.dataType === 'number'\\\"> \\n    {{vm.articleVariant[vm.gridEditType.value] | number: 2 }} \\n</div>\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"vm.dataType === 'disabled'\\\"> \\n    {{vm.articleVariant[vm.gridEditType.value]}} \\n</div>\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"vm.disabled && vm.dataType === 'boolean' && vm.dataType !== 'disabled'\\\"> \\n        <input type=\\\"checkbox\\\" \\n        class=\\\"form-control no-border no-bg text-sm enterAsTab\\\"\\n        style=\\\"border:0px;padding:0px;height:auto;width:inherit\\\"\\n        ng-model=\\\"vm.inputBoxDisplayValue\\\" \\n        ng-change=\\\"vm.inputValueChanged()\\\"\\n        ng-disabled=\\\"true\\\"\\n        enter-as-tab>\\n</div>\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"vm.disabled && (vm.dataType === 'articleCollection' && vm.dataType !== 'disabled')\\\"> \\n    {{vm.inputBoxDisplayValue.collectionDescription}} \\n</div>\\n\\n<!-- Edit Fields -->\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"!vm.disabled && vm.dataType === 'text'\\\">\\n    <input type=\\\"text\\\" \\n        class=\\\"form-control no-border no-bg text-sm enterAsTab\\\"\\n        style=\\\"border:0px;padding:0px;height:auto\\\"\\n        ng-model=\\\"vm.inputBoxDisplayValue\\\" \\n        ng-change=\\\"vm.inputValueChanged()\\\"\\n        enter-as-tab>\\n</div>\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"!vm.disabled && vm.dataType === 'number'\\\">\\n        <input type=\\\"text\\\" \\n            class=\\\"form-control no-border no-bg text-sm enterAsTab\\\"\\n            style=\\\"border:0px;padding:0px;height:auto\\\"\\n            ng-model=\\\"vm.inputBoxDisplayValue\\\" \\n            ng-change=\\\"vm.inputValueChanged()\\\"\\n            step=\\\"any\\\"\\n            smart-decimal\\n            enter-as-tab>\\n    </div>\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"!vm.disabled && vm.dataType === 'boolean' && vm.dataType !== 'disabled'\\\">\\n    <input type=\\\"checkbox\\\" \\n        class=\\\"form-control no-border no-bg text-sm enterAsTab\\\"\\n        style=\\\"border:0px;padding:0px;height:auto;width:inherit\\\"\\n        ng-model=\\\"vm.inputBoxDisplayValue\\\" \\n        ng-change=\\\"\\\"\\n        ng-click=\\\"vm.inputValueChanged()\\\"\\n        enter-as-tab>\\n</div>\\n\\n<div class=\\\"input-group list-menu\\\" ng-show=\\\"!vm.disabled && (vm.dataType === 'articleCollection' && vm.dataType !== 'disabled')\\\"> \\n    <ui-select ng-model=\\\"vm.inputBoxDisplayValue\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab on-select=\\\"vm.inputValueChanged()\\\">\\n        <ui-select-match placeholder=\\\"{{'article.articlecollection' | translate}}\\\">{{$select.selected.collectionDescription}}</ui-select-match>\\n        <ui-select-choices repeat=\\\"articleCollection in vm.articleCollections\\\">\\n            <span ng-if=\\\"articleCollection.id !== -1\\\">{{articleCollection.collectionDescription}}</span>\\n            <span ng-if=\\\"articleCollection.id === -1\\\">&nbsp;</span>\\n        </ui-select-choices>\\n    </ui-select>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<ca-article-list\\n    articles=\\\"vm.articles\\\"\\n    filter=\\\"vm.filter\\\"\\n    current-page=\\\"vm.currentPage\\\"\\n    page-size=\\\"vm.pageSize\\\"\\n    on-article-selected=\\\"vm.selectArticle(article)\\\"\\n    on-new=\\\"vm.goToNew()\\\"\\n    show-new-button=\\\"true\\\"\\n    show-filter-dropdown=\\\"true\\\"\\n    match=\\\"vm.match\\\"\\n    inactive=\\\"vm.inactive\\\"\\n    ></ca-article-list>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.save()\\\"> {{'common.save' | translate}} </button>\\n        </span>\\n        <span>{{vm.selectedArticle.alternativeArticleNumber}} {{vm.selectedArticle.articleName}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <label class=\\\"col-lg-3 control-label\\\">{{'location.location' | translate}}:</label>\\n        <div class=\\\"col-lg-9\\\">\\n            <ui-select ng-model=\\\"vm.selectedLocation\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationNumber + \\\" \\\" + $select.selected.locationName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"location in vm.locations | filter:vm.filterSubCategories | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['locationNumber', 'locationName']}\\\">\\n                    <span>{{location.locationNumber + \\\" \\\" + location.locationName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n        <label class=\\\"col-lg-3 control-label\\\">{{'article.originalprice' | translate}}:</label>\\n        <div class=\\\"col-lg-9\\\">\\n            {{vm.selectedArticle.salesPrice}}\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n        <label class=\\\"col-lg-3 control-label\\\">{{'article.salesprice' | translate}}:</label>\\n        <div class=\\\"col-lg-7\\\">\\n            <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.newPrice\\\" />\\n        </div>\\n        <div class=\\\"col-lg-2\\\">\\n            <button ng-disabled=\\\"!vm.foundExistingPrice\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"vm.removeOverridePrice()\\\"> {{'common.delete' | translate}} </button>\\n        </div>\\n\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<ca-article-list\\n    articles=\\\"vm.articles\\\"\\n    filter=\\\"vm.filter\\\"\\n    current-page=\\\"vm.currentPage\\\"\\n    page-size=\\\"vm.pageSize\\\"\\n    on-article-selected=\\\"vm.selectArticle(article)\\\"\\n    show-new-button=\\\"false\\\"\\n    show-filter-dropdown=\\\"true\\\"\\n    ></ca-article-list>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveBrand()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewBrand\\\"> {{'common.cancel' | translate}} </button>\\n        <span>{{vm.brand.brandCode + \\\" \\\" + vm.brand.brandDescription}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n      \\n        <ca-form-group-row label=\\\"'brand.brandcode'\\\">\\n            <div ng-if=\\\"!vm.isNewBrand\\\">\\n                <label>{{vm.brand.brandCode}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewBrand\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isBrandCodeValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"brandCode\\\" ng-model=\\\"vm.brand.brandCode\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>          \\n        \\n        <ca-form-group-row label=\\\"'brand.branddescription'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.brand.brandDescription}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isBrandDescriptionValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"brandDescription\\\" ng-model=\\\"vm.brand.brandDescription\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>          \\n\\n        <ca-form-group-row label=\\\"'brand.preferredCompany'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.brand.company.companyName}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.brand.company\\\" choices=\\\"vm.companies\\\" order-by=\\\"'companyName'\\\" item-renderer=\\\"'companyName'\\\"/>\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'brand.companies'\\\">\\n            <div>\\n                <div ng-if=\\\"vm.isEditing\\\">\\n                    <ca-multiselect model=\\\"vm.brand.companies\\\" choices=\\\"vm.companies\\\" order-by=\\\"'companyName'\\\" placeholder=\\\"'article.addCompany'\\\" item-renderer=\\\"['companyName']\\\"/>\\n                    <div ng-show=\\\"vm.isEditing\\\">\\n                        &nbsp;\\n                    </div>\\n                </div>\\n                <div ng-if=\\\"!vm.isEditing\\\" ng-repeat=\\\"company in vm.brand.companies | orderBy:'company.companyName'\\\">\\n                    <span>{{company.companyName}}</span>\\n                </div>          \\n            </div>\\n        </ca-form-group-row>\\n\\n        <div class=\\\"form-group row\\\" ng-if=\\\"!vm.isNewBrand\\\">\\n        </div>\\n\\n        <ca-form-group-row label=\\\"'brand.brandcategory'\\\">\\n            <div ng-if=\\\"!vm.isNewBrand\\\">\\n                <label ng-show=\\\"vm.brand.brandCategory.isBarcodeGenerationAllowed\\\"> {{vm.brand.brandCategory.typeName}} ({{'brand.barcodegenerationallowed' | translate}}) </label>\\n                <label ng-hide=\\\"vm.brand.brandCategory.isBarcodeGenerationAllowed\\\"> {{vm.brand.brandCategory.typeName}} ({{'brand.barcodegenerationdisallowed' | translate}}) </label>\\n            </div>\\n            <div ng-if=\\\"vm.isNewBrand\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isBrandCategoryValid()}\\\">\\n                <ca-singleselect model=\\\"vm.brand.brandCategory\\\" choices=\\\"vm.brandCategories\\\" order-by=\\\"'typeName'\\\" item-renderer=\\\"'typeName'\\\"/>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'article.barcodetype'\\\">\\n            <div ng-if=\\\"!vm.isNewBrand\\\">\\n                <label>{{vm.brand.barcodeType.barcodeTypeName}}</label>\\n            </div>\\n            <div ng-if=\\\"vm.isNewBrand\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isBarcodeTypeValid()}\\\">\\n                <ca-singleselect model=\\\"vm.brand.barcodeType\\\" choices=\\\"vm.barcodeTypes\\\" order-by=\\\"'barcodeTypeName'\\\" item-renderer=\\\"'barcodeTypeName'\\\"/>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'brand.salesChannels'\\\">\\n            <div ng-if=\\\"!vm.isNewBrand || !vm.isEditing\\\">\\n                <div ng-repeat=\\\"salesChannel in vm.brand.salesChannels\\\">{{salesChannel.salesChannelCode + \\\" \\\" + salesChannel.salesChannelDescription}}</div>\\n            </div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-multiselect model=\\\"vm.brand.salesChannels\\\" choices=\\\"vm.salesChannels\\\" order-by=\\\"'salesChannelCode'\\\" item-renderer=\\\"['salesChannelCode','salesChannelDescription']\\\" />\\n            </div>\\n        </ca-form-group-row>   \\n\\n        <div class=\\\"form-group row\\\"> &nbsp; </div>\\n        \\n        <div class=\\\"form-group row\\\" ng-if=\\\"!vm.isNewBrand\\\">\\n            <div class=\\\"col-sm-4 control-label\\\">{{'brand.maingroups' | translate}}:</div>\\n            <div class=\\\"col-sm-8\\\">\\n                <div ng-if=\\\"vm.isEditing\\\">\\n                    <ca-multiselect model=\\\"vm.selectedMainGroups\\\"\\n                        choices=\\\"vm.mainGroups\\\"\\n                        placeholder=\\\"'article.addMaingroup'\\\"\\n                        item-renderer=\\\"['mainGroupCode','mainGroupDescription']\\\"/>\\n                </div>\\n                <div ng-repeat=\\\"itemGroup in vm.brand.itemGroups | orderBy:'mainGroup.mainGroupDescription'\\\">\\n                    <span ng-hide=\\\"vm.isEditing\\\"> {{itemGroup.mainGroup.mainGroupCode}} {{itemGroup.mainGroup.mainGroupDescription}} </span>\\n                    <a ng-click=\\\"vm.toggleDisplayForm(itemGroup)\\\" ng-show=\\\"vm.isEditing\\\"> {{itemGroup.mainGroup.mainGroupCode}} {{itemGroup.mainGroup.mainGroupDescription}} </a>\\n                    <div  ng-show=\\\"itemGroup.showEditForm && vm.isEditing\\\">\\n                        <ca-item-group-inline item-group=\\\"itemGroup\\\" vats=\\\"vm.vats\\\" variant-groups=\\\"vm.variantGroups\\\" />\\n                    </div>\\n                    <div ng-show=\\\"itemGroup.showEditForm && vm.isEditing\\\">\\n                        &nbsp;\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.brands.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <div class=\\\"text-center header-row\\\">\\n                            <span style=\\\"cursor: pointer; display: inline-block; margin-left: 20px;\\\" class=\\\"pull-left\\\">\\n                                <i class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\" ng-click=\\\"vm.sortBrands('brandCode')\\\"></i> \\n                            </span>\\n                            <span style=\\\"cursor: pointer; display: inline-block; margin-right: 75px;\\\">\\n                                <i class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\" ng-click=\\\"vm.sortBrands('brandDescription')\\\"></i> \\n                            </span>\\n                        </div>\\n                        <a ng-click=\\\"$state.go('product.brands.brand', {brandId: brand.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"brand in vm.brands\\\" ng-class=\\\"{'focus m-l-none': brand.id === vm.selectedBrandId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': brand.id === vm.selectedBrandId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{brand.brandCode}}</span><span class=\\\"pull-right text-ellipsis lg-label\\\">{{brand.brandDescription}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveBusinessArea()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewBusinessArea\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteBusinessArea()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewBusinessArea\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n\\n\\n        <ca-form-group-row label=\\\"'businessarea.code'\\\">\\n            <div ng-if=\\\"!vm.isNewBusinessArea && !vm.isEditing\\\">\\n                <label>{{vm.businessarea.code}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isNewBusinessArea || vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isBusinessAreaCodeValid()}\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"code\\\" ng-model=\\\"vm.businessarea.code\\\" maxlength=\\\"20\\\" uppercase enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'businessarea.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.businessarea.name}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.businessarea.name\\\" maxlength=\\\"100\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.businessareas.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.businessareas.businessarea', {businessareaId: businessarea.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"businessarea in vm.businessareas\\\" ng-class=\\\"{'focus m-l-none': businessarea.id === vm.selectedBusinessAreaId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': businessarea.id === vm.selectedBusinessAreaId }\\\">\\n                                <span class=\\\"sm-label\\\">{{businessarea.code}} {{businessarea.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-11\\\">\\n            <ui-select multiple=\\\"\\\" class=\\\"editable-input\\\" ng-model=\\\"vm.articlesToAdd\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.disabled\\\">\\n                <ui-select-match placeholder=\\\"{{'order.addarticle' | translate}}\\\">\\n                    <span>{{::$item.articleName + ' (' + ($item.useAlternativeArticleNumber && $item.alternativeArticleNumber.length > 0 ? $item.alternativeArticleNumber : $item.articleNumber) + ')'}}</span>\\n                </ui-select-match>\\n                <ui-select-choices repeat=\\\"article in vm.searchResultArticles track by article.id\\\" refresh=\\\"vm.refreshArticles($select.search)\\\" refresh-delay=\\\"200\\\">\\n                    <span>{{::article.articleName + ' (' + (article.useAlternativeArticleNumber && article.alternativeArticleNumber.length > 0 ? article.alternativeArticleNumber : article.articleNumber) + ')'}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n        <div class=\\\"col-lg-1\\\">\\n            <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.addArticles()\\\" ng-disabled=\\\"vm.disabled\\\">+</button>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n\\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-4 control-label\\\">{{'itemgroup.itemgroupname' | translate}}:</div>\\n        <div class=\\\"col-lg-8\\\">\\n            <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                    type=\\\"text\\\"\\n                    ng-model=\\\"vm.itemGroup.itemGroupLongName\\\"/>\\n        </div>\\n    </div>\\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-4 control-label\\\">{{'article.vat' | translate}}:</div>\\n        <div class=\\\"col-lg-8\\\">\\n            <ui-select ng-model=\\\"vm.itemGroup.vat\\\" theme=\\\"bootstrap\\\">\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.vatDescription}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"vat in vm.vats\\\">\\n                    <span>{{vat.vatDescription}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n    \\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-4 control-label\\\">{{'maingroup.preferredVariantGroup1' | translate}}:</div>\\n        <div class=\\\"col-lg-8\\\">\\n            <ui-select ng-model=\\\"vm.itemGroup.variantGroup1\\\" theme=\\\"bootstrap\\\">\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.groupName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"variantGroup in vm.variantGroup1s\\\">\\n                    <span>{{variantGroup.groupName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-4 control-label\\\">{{'maingroup.preferredVariantGroup2' | translate}}:</div>\\n        <div class=\\\"col-lg-8\\\">\\n            <ui-select ng-model=\\\"vm.itemGroup.variantGroup2\\\" theme=\\\"bootstrap\\\">\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.groupName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"variantGroup in vm.variantGroup2s\\\">\\n                    <span>{{variantGroup.groupName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<form name=\\\"departmentForm\\\" ng-submit=\\\"vm.save()\\\" >\\n    <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-heading font-bold\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n            <button class=\\\"btn btn-primary\\\" type=\\\"submit\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"departmentForm.$invalid\\\"> {{'common.save' | translate}}  </button>\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNew\\\"> {{'common.cancel' | translate}} </button>\\n            <span> &nbsp;{{vm.department.departmentCode + \\\" \\\" + vm.department.departmentDescription}}</span>\\n        </div>\\n        <div class=\\\"panel-body\\\">\\n            <ca-form-group-row label=\\\"'department.departmentCode'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.department.departmentCode }}</span>\\n                <div ng-class=\\\"{'has-error': departmentForm.departmentCode.$invalid && departmentForm.departmentCode.$touched}\\\">\\n                    <input name=\\\"departmentCode\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.department.departmentCode\\\" enter-as-tab required />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"departmentForm.departmentCode.$invalid && departmentForm.departmentCode.$touched\\\">{{'common.required' | translate}}</span>\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'department.departmentDescription'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.department.departmentDescription }}</span>\\n                <div ng-class=\\\"{'has-error': departmentForm.departmentDescription.$invalid && departmentForm.departmentDescription.$touched}\\\">\\n                    <input name=\\\"departmentDescription\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.department.departmentDescription\\\" enter-as-tab required />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"departmentForm.departmentDescription.$invalid && departmentForm.departmentCode.$touched\\\">{{'common.required' | translate}}</span>\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'department.mainGroups'\\\">\\n                <p ng-if=\\\"!vm.isEditing\\\" ng-repeat=\\\"mainGroup in  vm.department.mainGroups\\\">{{ mainGroup.mainGroupCode + \\\" \\\" + mainGroup.mainGroupDescription  }}</p>\\n                <ca-multiselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.department.mainGroups\\\" choices=\\\"vm.mainGroups\\\" order-by=\\\"'mainGroupCode'\\\" item-renderer=\\\"['mainGroupCode','mainGroupDescription']\\\" />\\n            </ca-form-group-row>\\n        </div>\\n    </div>\\n</form>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.departments.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChanged()\\\"\\n                   placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.departments.department', {departmentId: department.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"department in vm.departments\\\" ng-class=\\\"{'focus m-l-none': department.id === vm.selectedDepartmentId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': department.id === vm.selectedDepartmentId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{department.departmentCode}}</span><span class=\\\"text-ellipsis lg-label\\\">{{department.departmentDescription}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n        <div class=\\\"col-md-12\\\">\\n            <div class=\\\"text-center\\\" ng-show=\\\"vm.totalRows > vm.itemsPerPage\\\">\\n                <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalRows\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"5\\\" ng-change=\\\"vm.pageChanged()\\\"\\n                     ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\">\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.validationErrors.length > 0\\\">\\n                            <ul>\\n                                <li ng-repeat=\\\"error in vm.validationErrors\\\">{{::error}}</li>\\n                            </ul>\\n                        </div>\\n                    </div>\\n\\n                    <!--\\n                        Headers and tabs\\n                    -->\\n                    <label class=\\\"col-lg-12 h3\\\"> {{vm.importFile.fileName}} </label>\\n                    <label class=\\\"col-lg-12 h4\\\"> {{'order.company' | translate}}: {{vm.importFile.preferredSupplier.companyName}} </label>\\n                    <label class=\\\"col-lg-12 h4\\\"> {{'stock.location' | translate}}: {{(vm.importFile.location) ? vm.importFile.location.locationName : \\\"\\\"}} </label>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\" id=\\\"tabsPanel\\\">\\n                        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.switchToOverview()\\\" ng-disabled=\\\"vm.isEditing\\\"> {{'common.overview' | translate}} </button>\\n                        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.switchToArticles()\\\" ng-disabled=\\\"vm.isEditing\\\"> {{'article.articles' | translate}} </button>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <!--\\n                        Overview section\\n                    -->\\n                    <label class=\\\"col-lg-12 h4\\\" ng-show=\\\"vm.viewVisibility.overview\\\"> {{'common.overview' | translate}} </label>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.viewVisibility.overview\\\">&nbsp;</div>\\n                    <div class=\\\"col-lg-12\\\" id=\\\"overviewSection\\\" ng-show=\\\"vm.viewVisibility.overview\\\">\\n                        <wj-flex-grid selection-mode=\\\"Cell\\\"\\n                                      headers-visibility=\\\"Column\\\" is-read-only=\\\"false\\\"\\n                                      beginning-edit=\\\"vm.setIsEditingTrue()\\\"\\n                                      cell-edit-ending=\\\"vm.setIsEditingFalse()\\\"\\n                                      class=\\\"orders-flex-grid\\\" style=\\\"width: 95%; max-height: 350px\\\" initialized=\\\"vm.captureOverviewGrid(s)\\\">\\n                            <wj-flex-grid-column binding=\\\"alternativeArticleNumber\\\" width=\\\"*\\\" header=\\\"{{'article.alternativearticlenumber' | translate}}\\\">\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getAlternativeArticleNumberStyle($item)\\\">\\n                                    {{($item.alternativeArticleNumber === undefined || $item.alternativeArticleNumber === \\\"\\\") ? \\\"-\\\" : $item.alternativeArticleNumber}}\\n                                </wj-flex-grid-cell-template>\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"articleName\\\" width=\\\"2*\\\" header=\\\"{{'article.articlename' | translate}}\\\"></wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"articleDescription\\\" width=\\\"*\\\" header=\\\"{{'article.descriptionShort' | translate}}\\\"></wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"itemGroupString\\\" width=\\\"*\\\" header=\\\"{{'article.itemgroup' | translate}}\\\">\\n\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getItemGroupStyle($item)\\\">\\n                                    {{($item.itemGroupString === undefined || $item.itemGroupString === \\\"\\\") ? \\\"-\\\" : $item.itemGroupString}}\\n                                </wj-flex-grid-cell-template>\\n\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"variant1Name\\\" width=\\\"*\\\" header=\\\"{{'article.variantdetail1' | translate}}\\\">\\n\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getColorVariantStyle($item)\\\">\\n                                    {{($item.variant1Name === undefined || $item.variant1Name === \\\"\\\") ? \\\"-\\\" : $item.variant1Name}}\\n                                </wj-flex-grid-cell-template>\\n\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"variant2Name\\\" width=\\\"*\\\" header=\\\"{{'article.variantdetail2' | translate}}\\\">\\n\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getSizeVariantStyle($item)\\\">\\n                                    {{($item.variant2Name === undefined || $item.variant2Name === \\\"\\\") ? \\\"-\\\" : $item.variant2Name}}\\n                                </wj-flex-grid-cell-template>\\n\\n                            </wj-flex-grid-column>\\n\\n                            <wj-flex-grid-column binding=\\\"departmentCode\\\" width=\\\"*\\\" header=\\\"{{'article.department' | translate}}\\\">\\n\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getDepartmentStyle($item)\\\"> \\n                                    {{$item.departmentCode}}\\n                                </wj-flex-grid-cell-template>\\n\\n                            </wj-flex-grid-column>\\n\\n                            <wj-flex-grid-column binding=\\\"quantity\\\" width=\\\"*\\\" header=\\\"{{'article.totalquantity' | translate}}\\\"></wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"purchaseCost\\\" width=\\\"*\\\" header=\\\"{{'article.purchasecost' | translate}}\\\">\\n\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getPricesStyle($item)\\\">\\n                                    {{$item.purchaseCost}}\\n                                </wj-flex-grid-cell-template>\\n\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"salesPrice\\\" width=\\\"*\\\" header=\\\"{{'article.salesprice' | translate}}\\\">\\n\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getPricesStyle($item)\\\">\\n                                    {{$item.salesPrice}}\\n                                </wj-flex-grid-cell-template>\\n\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"previousPrice\\\" width=\\\"*\\\" header=\\\"{{'article.previousprice' | translate}}\\\"></wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"subCategory\\\" width=\\\"*\\\" header=\\\"{{'article.subcategory' | translate}}\\\"></wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"articleTypeString\\\" width=\\\"*\\\" header=\\\"{{'article.articletype' | translate}}\\\">\\n\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getArticleTypeStyle($item)\\\">\\n                                    {{($item.articleTypeString === undefined || $item.articleTypeString === \\\"\\\") ? \\\"-\\\" : $item.articleTypeString}}\\n                                </wj-flex-grid-cell-template>\\n\\n                            </wj-flex-grid-column>                            <wj-flex-grid-column binding=\\\"intrastatCode\\\" width=\\\"*\\\" header=\\\"{{'article.intrastatnumber' | translate}}\\\">\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getIntrastatStyle($item)\\\">\\n                                    {{($item.intrastatCode === undefined || $item.intrastatCode === \\\"\\\") ? \\\"-\\\" : $item.intrastatCode}}\\n                                </wj-flex-grid-cell-template>                                \\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"barcode\\\" width=\\\"2*\\\" header=\\\"{{'article.barcode' | translate}}\\\">\\n\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getBarcodeStyle($item)\\\">\\n                                    {{($item.barcode === undefined || $item.barcode === \\\"\\\") ? \\\"-\\\" : $item.barcode}}\\n                                </wj-flex-grid-cell-template>\\n\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"collection\\\" width=\\\"*\\\" header=\\\"{{'order.collection' | translate}}\\\">\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getCollectionStyle($item)\\\">\\n                                    {{($item.collection === undefined || $item.collection === \\\"\\\") ? \\\"-\\\" : $item.collection}}\\n                                </wj-flex-grid-cell-template>\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column align=\\\"center\\\" is-read-only=\\\"true\\\" header=\\\"{{'import.removerow' | translate}}\\\">\\n                                <label class=\\\"i-checks m-t-xs\\\">\\n                                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"$item.shouldRemoveThisRow\\\" />\\n                                    <i></i>\\n                                </label>\\n                            </wj-flex-grid-column>\\n\\n                        </wj-flex-grid>\\n                    </div>\\n\\n                    <!--\\n                        Articles section\\n                    -->\\n                    <label class=\\\"col-lg-12 h4\\\" ng-show=\\\"vm.viewVisibility.articles\\\"> {{'article.articles' | translate}} </label>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.viewVisibility.articles\\\">&nbsp;</div>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.viewVisibility.articles\\\">\\n                        <wj-flex-grid selection-mode=\\\"Cell\\\"\\n                            headers-visibility=\\\"Column\\\" is-read-only=\\\"false\\\"\\n                            beginning-edit=\\\"vm.setIsEditingTrue()\\\"\\n                            cell-edit-ending=\\\"vm.setIsEditingFalse(); vm.registerOldArticleGroupingInfo()\\\"\\n                            cell-edit-ended=\\\"vm.copyArticleGroupInformationToAllRelatedRows()\\\"\\n                            class=\\\"orders-flex-grid\\\" style=\\\"width: 95%\\\" initialized=\\\"vm.captureArticleGroupingsGrid(s)\\\">\\n\\n                            <wj-flex-grid-column binding=\\\"alternativeArticleNumber\\\" width=\\\"*\\\" header=\\\"{{'article.alternativearticlenumber' | translate}}\\\">\\n                                <wj-flex-grid-cell-template cell-type=\\\"Cell\\\" ng-style=\\\"vm.getAlternativeArticleNumberStyle($item)\\\">\\n                                    {{($item.alternativeArticleNumber === undefined || $item.alternativeArticleNumber === \\\"\\\") ? \\\"-\\\" : $item.alternativeArticleNumber}}\\n                                </wj-flex-grid-cell-template>\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"articleName\\\" width=\\\"2*\\\" header=\\\"{{'article.articlename' | translate}}\\\"></wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"itemGroupString\\\" width=\\\"*\\\" header=\\\"{{'article.itemgroup' | translate}}\\\" is-read-only=\\\"true\\\">\\n                                <wj-auto-complete\\n                                        initialized=\\\"vm.setWjDefaultItemGroup(s, $item)\\\"\\n                                        is-dropped-down-changed=\\\"vm.itemGroupChanged(s, $item)\\\"\\n                                        placeholder=\\\"{{'article.itemGroup' | translate}}\\\"\\n                                        show-drop-down-button=\\\"true\\\"\\n                                        items-source=\\\"vm.itemGroupNamesAndCodes\\\"\\n                                        is-editable=\\\"false\\\"\\n                                        isRequired=\\\"true\\\">\\n                                </wj-auto-complete>\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"purchaseCost\\\" width=\\\"*\\\" header=\\\"{{'article.purchasecost' | translate}}\\\"></wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"salesPrice\\\" width=\\\"*\\\" header=\\\"{{'article.salesprice' | translate}}\\\"></wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"articleTypeString\\\" width=\\\"*\\\" header=\\\"{{'article.articletype' | translate}}\\\" is-read-only=\\\"true\\\">\\n                                <wj-auto-complete\\n                                        initialized=\\\"vm.setWjDefaultArticleType(s, $item)\\\"\\n                                        is-dropped-down-changed=\\\"vm.articleTypeChanged(s, $item)\\\"\\n                                        placeholder=\\\"{{'article.articletype' | translate}}\\\"\\n                                        show-drop-down-button=\\\"true\\\"\\n                                        items-source=\\\"vm.articleTypeNames\\\"\\n                                        is-editable=\\\"false\\\"\\n                                        isRequired=\\\"false\\\">\\n                                </wj-auto-complete>\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column binding=\\\"collection\\\" width=\\\"*\\\" header=\\\"{{'order.collection' | translate}}\\\" is-read-only=\\\"true\\\">\\n                                <wj-auto-complete\\n                                        initialized=\\\"vm.wjAutoCompleteSetDefaultValue(s, $item, 'collection')\\\"\\n                                        is-dropped-down-changed=\\\"vm.collectionChanged(s, $item)\\\"\\n                                        placeholder=\\\"{{'article.collection' | translate}}\\\"\\n                                        show-drop-down-button=\\\"true\\\"\\n                                        items-source=\\\"vm.collectionCodes\\\"\\n                                        is-editable=\\\"false\\\"\\n                                        isRequired=\\\"false\\\">\\n                                </wj-auto-complete>\\n                            </wj-flex-grid-column>\\n                        </wj-flex-grid>\\n                    </div>\\n\\n                    <!--\\n                        Colors section\\n                    -->\\n                    <label class=\\\"col-lg-12 h4\\\" ng-show=\\\"vm.viewVisibility.colors\\\"> {{'article.variantdetail1' | translate}} </label>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.viewVisibility.colors\\\">&nbsp;</div>\\n                    <div class=\\\"col-lg-6\\\" ng-show=\\\"vm.viewVisibility.colors\\\">\\n\\n                        <div class=\\\"col-lg-3\\\">\\n                            <label class=\\\"col-lg-2\\\"> {{'article.variantdetail1' | translate}}: </label>\\n                        </div>\\n                        <div class=\\\"col-lg-4\\\">\\n                            <ui-select theme=\\\"bootstrap\\\" ng-model=\\\"vm.colorChange.from\\\">\\n                                <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"color in vm.distinctColors\\\">\\n                                    <span>{{color}}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                        </div>\\n                        <div class=\\\"col-lg-4\\\">\\n                            <input type=\\\"text\\\" class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\" ng-model=\\\"vm.colorChange.to\\\" />\\n                        </div>\\n                        <div class=\\\"col-lg-1\\\">\\n                            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.changeAllColors()\\\"> {{'common.change' | translate}} </button>\\n                        </div>\\n\\n                    </div>\\n                    <div class=\\\"col-lg-6\\\" ng-show=\\\"vm.viewVisibility.colors\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <!-- View colors -->\\n                    <div class=\\\"col-lg-12\\\"ng-show=\\\"vm.viewVisibility.colors\\\">&nbsp;</div>\\n                    <div class=\\\"col-lg-6\\\"ng-show=\\\"vm.viewVisibility.colors\\\">\\n                        <div class=\\\"col-lg-12\\\" ng-repeat=\\\"(key, values) in vm.rowsGroupedByColor\\\">\\n                            <label class=\\\"col-lg-6 h4\\\"> {{key}} </label>\\n                            <label class=\\\"col-lg-4 h4\\\">\\n                                {{(values[0].variantDetail1 !== undefined) ?\\n                                values[0].variantDetail1.variantDetailName :\\n                                \\\"Will be created\\\"}}\\n                            </label>\\n                        </div>\\n                    </div>\\n                    <div class=\\\"col-lg-6\\\" ng-show=\\\"vm.viewVisibility.colors\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.viewVisibility.overview && !vm.importFile.isApproved\\\">\\n                        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveImportFile()\\\" ng-disabled=\\\"vm.isEditing || !vm.canAccess('articlesOrdersImport', 'update')\\\"> {{'common.save' | translate}} </button>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.viewVisibility.overview && !vm.importFile.isApproved\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.viewVisibility.overview && !vm.importFile.isApproved\\\">\\n                        <div class=\\\"m-b-none m-t-none\\\">\\n                            <label class=\\\"i-checks m-t-xs\\\">\\n                                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.importFile.shouldGenerateOrder\\\"/>\\n                                <i></i>\\n                                {{'import.generateorder' | translate}}\\n                            </label>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\" ng-if=\\\"false\\\">\\n                            <div class=\\\"col-lg-12\\\">\\n                                <label class=\\\"col-lg-2 control-label\\\">{{'order.externalordernumber' | translate}}:</label>\\n                                <div class=\\\"col-lg-3\\\">\\n                                    <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                                           type=\\\"text\\\"\\n                                           placeholder=\\\"{{'order.externalordernumber' | translate}}\\\"\\n                                           ng-model=\\\"vm.orderinfo.orderNumberExternal\\\"/>\\n                                </div>\\n                                <div class=\\\"col-lg-7\\\">\\n                                    &nbsp;\\n                                </div>\\n                            </div>\\n\\n                            <div class=\\\"col-lg-12\\\">\\n                                <label class=\\\"col-lg-2 control-label\\\">{{'order.planneddeliverydate' | translate}}:</label>\\n                                <div class=\\\"col-lg-3\\\">\\n                                    <wj-input-date\\n                                            value=\\\"vm.orderinfo.plannedDeliveryDate\\\"\\n                                            min=\\\"2000-01-01\\\"\\n                                            format=\\\"yyyy-MM-dd\\\"\\n                                            style=\\\"width:100%\\\">\\n                                    </wj-input-date>\\n                                </div>\\n                                <div class=\\\"col-lg-7\\\">\\n                                    &nbsp;\\n                                </div>\\n                            </div>\\n\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\">\\n                            &nbsp;\\n                        </div>\\n\\n                        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveAndFinalize()\\\" ng-disabled=\\\"vm.isEditing || vm.isAnyBarcodeOnWrongArticle()\\\"> {{'common.saveAndFinalize' | translate}} </button>\\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <button class=\\\"btn btn-default\\\" ng-click=\\\"$state.go('product.importfileslist.articleimport')\\\" ng-disabled=\\\"!vm.canAccess('articlesOrdersImport', 'create')\\\"> {{'common.new' | translate}} </button>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <div class=\\\"wrapper b-t text-center\\\">\\n                        <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadImportFiles()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <wj-flex-grid items-source=\\\"vm.importFiles\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" is-read-only=\\\"true\\\"\\n                                      class=\\\"orders-flex-grid\\\">\\n                            <wj-flex-grid-column header=\\\"{{'common.filename' | translate}}\\\" binding=\\\"fileName\\\" width=\\\"*\\\">\\n                                <a ng-click=\\\"vm.editImportFile($item.id)\\\" class=\\\"ca-celllink\\\">\\n                                    {{$item.fileName}}\\n                                </a>\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column header=\\\"{{'common.importdate' | translate}}\\\" binding=\\\"importDate\\\" width=\\\"*\\\"> {{ $item.importDate | date:'yyyy-MM-dd HH:mm' }} </wj-flex-grid-column>\\n                            <wj-flex-grid-column header=\\\"{{'common.approved' | translate}}\\\" binding=\\\"isApproved\\\" width=\\\"*\\\"> </wj-flex-grid-column>\\n                            <wj-flex-grid-column header=\\\"{{'order.order' | translate}}\\\">\\n                                <a ng-click=\\\"$state.go('order.modifyorder', {orderId: $item.order.id})\\\" class=\\\"ca-celllink\\\">\\n                                    {{$item.order.orderNumber}}\\n                                </a>\\n                            </wj-flex-grid-column>\\n                            <wj-flex-grid-column header=\\\"\\\">\\n                                <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteImportFile($item.id)\\\" ng-if=\\\"!$item.isApproved\\\"> {{'common.delete' | translate}} </button>\\n                            </wj-flex-grid-column>\\n                        </wj-flex-grid>\\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveIntrastat()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewIntrastat\\\"> {{'common.cancel' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.deleteIntrastat()\\\" ng-if=\\\"!vm.isEditing\\\" ng-hide=\\\"vm.isNewIntrastat\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'intrastat.code'\\\">\\n            <div ng-if=\\\"!vm.isNewIntrastat && !vm.isEditing\\\">\\n                <label>{{vm.intrastat.code}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" maxlength=\\\"12\\\" ng-model=\\\"vm.intrastat.code\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.internalDescription'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.intrastat.internalDescription}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" maxlength=\\\"100\\\" ng-model=\\\"vm.intrastat.internalDescription\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalCode1'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.intrastat.externalCode1}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" maxlength=\\\"12\\\" ng-model=\\\"vm.intrastat.externalCode1\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalDescription1'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.intrastat.externalDescription1}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" maxlength=\\\"100\\\" ng-model=\\\"vm.intrastat.externalDescription1\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalCode2'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.intrastat.externalCode2}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" maxlength=\\\"12\\\" ng-model=\\\"vm.intrastat.externalCode2\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalDescription2'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.intrastat.externalDescription2}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" maxlength=\\\"100\\\" ng-model=\\\"vm.intrastat.externalDescription2\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalCode3'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.intrastat.externalCode3}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" maxlength=\\\"12\\\" ng-model=\\\"vm.intrastat.externalCode3\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'intrastat.externalDescription3'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <label>{{vm.intrastat.externalDescription3}}</label>\\n            </div>            \\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" maxlength=\\\"100\\\" ng-model=\\\"vm.intrastat.externalDescription3\\\" enter-as-tab />\\n            </div>            \\n        </ca-form-group-row>\\n\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.intrastats.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.intrastats.intrastat', {intrastatId: intrastat.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"intrastat in vm.intrastats\\\" ng-class=\\\"{'focus m-l-none': intrastat.id === vm.selectedIntrastatId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': intrastat.id === vm.selectedIntrastatId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{intrastat.code}}</span>\\n                                <span class=\\\"pull-right text-ellipsis lg-label\\\">{{intrastat.internalDescription}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveMainGroup()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewMainGroup\\\"> {{'common.cancel' | translate}} </button>\\n        <span>{{vm.mainGroup.mainGroupCode + \\\" \\\" + vm.mainGroup.mainGroupDescription}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <div class=\\\"row\\\">\\n            <div class=\\\"col-sm-12 col-md-12 col-lg-6\\\">\\n                <ca-form-group-row label=\\\"'maingroup.maingroupcode'\\\">\\n                    <div ng-if=\\\"!vm.isNewMainGroup\\\">\\n                        <label>{{vm.mainGroup.mainGroupCode}}</label>\\n                    </div>\\n                    <div ng-if=\\\"vm.isNewMainGroup\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isMainGroupCodeValid()}\\\">\\n                        <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"mainGroupCode\\\" ng-model=\\\"vm.mainGroup.mainGroupCode\\\" enter-as-tab />\\n                    </div>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'maingroup.maingroupdescription'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <label>{{vm.mainGroup.mainGroupDescription}}</label>\\n                    </div>\\n                    <div ng-if=\\\"vm.isEditing\\\" class=\\\"form-group\\\" ng-class=\\\"{'has-error': !vm.isMainGroupDescriptionValid()}\\\">\\n                        <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"mainGroupDescription\\\" ng-model=\\\"vm.mainGroup.mainGroupDescription\\\" enter-as-tab />\\n                    </div>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'maingroup.businessarea'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <label>{{vm.mainGroup.businessArea.name}}</label>\\n                    </div>\\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <ca-singleselect model=\\\"vm.mainGroup.businessArea\\\" choices=\\\"vm.businessAreas\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" />\\n                    </div>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'maingroup.departments'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <div ng-repeat=\\\"department in vm.mainGroup.departments\\\">{{department.departmentDescription}}</div>\\n                    </div>\\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <ca-multiselect model=\\\"vm.mainGroup.departments\\\" choices=\\\"vm.departments\\\" order-by=\\\"'departmentDescription'\\\" item-renderer=\\\"'departmentDescription'\\\" />\\n                    </div>\\n                </ca-form-group-row>\\n                \\n                <ca-form-group-row label=\\\"'maingroup.subCategories'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <div ng-repeat=\\\"subCategory in vm.mainGroup.subCategories\\\">{{subCategory.subCategoryCode + \\\" \\\" + subCategory.subCategoryName}}</div>\\n                    </div>\\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <ca-multiselect model=\\\"vm.mainGroup.subCategories\\\" choices=\\\"vm.subCategories\\\" order-by=\\\"'subCategoryName'\\\" item-renderer=\\\"['subCategoryCode','subCategoryName']\\\" />\\n                    </div>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'maingroup.salesChannels'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <div ng-repeat=\\\"salesChannel in vm.mainGroup.salesChannels\\\">{{salesChannel.salesChannelCode + \\\" \\\" + salesChannel.salesChannelDescription}}</div>\\n                    </div>\\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <ca-multiselect model=\\\"vm.mainGroup.salesChannels\\\" choices=\\\"vm.salesChannels\\\" order-by=\\\"'salesChannelCode'\\\" item-renderer=\\\"['salesChannelCode','salesChannelDescription']\\\" />\\n                    </div>\\n                </ca-form-group-row>        \\n\\n                <ca-form-group-row label=\\\"'maingroup.vat'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <label>{{vm.mainGroup.vat.vatDescription}}</label>\\n                    </div>\\n                    <div ng-if=\\\"vm.isEditing\\\" class=\\\"form-group\\\"  ng-class=\\\"{'has-error': !vm.isMainGroupVatValid()}\\\">\\n                        <ca-singleselect model=\\\"vm.mainGroup.vat\\\" choices=\\\"vm.vats\\\" order-by=\\\"'vatDescription'\\\" item-renderer=\\\"'vatDescription'\\\" />\\n                    </div>\\n                </ca-form-group-row>\\n \\n                \\n                <ca-form-group-row label=\\\"'maingroup.salesAccount'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                        <label>{{vm.mainGroup.salesAccount.accountNumber}} {{vm.mainGroup.salesAccount.accountName}}</label>\\n                    </div>\\n                    <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.mainGroup.salesAccount\\\" choices=\\\"vm.accounts\\\" order-by=\\\"'accountNumber'\\\" item-renderer=\\\"['accountNumber','accountName']\\\" />\\n                </ca-form-group-row>\\n                <ca-form-group-row label=\\\"'maingroup.discountAccount'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                        <label>{{vm.mainGroup.discountAccount.accountNumber}} {{vm.mainGroup.discountAccount.accountName}}</label>\\n                    </div>\\n                    <ca-singleselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.mainGroup.discountAccount\\\" choices=\\\"vm.accounts\\\" order-by=\\\"'accountNumber'\\\" item-renderer=\\\"['accountNumber','accountName']\\\" />\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'maingroup.isvariant'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <label>{{vm.mainGroup.isVariant ? ('common.true' | translate) : ('common.false' | translate)}}</label>\\n                    </div>            \\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.mainGroup.isVariant\\\" />\\n                            <i></i>\\n                        </label>\\n                    </div>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"'maingroup.variant1'\\\" ng-show=\\\"vm.mainGroup.isVariant\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <label>{{vm.mainGroup.variant1.variantName}}</label>\\n                    </div>\\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <ui-select ng-model=\\\"vm.mainGroup.variant1\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                            <ui-select-match placeholder=\\\"\\\">{{$select.selected.variantName}}</ui-select-match>\\n                            <ui-select-choices repeat=\\\"variant in vm.variants | filter:vm.filterVariant1(variant)\\\">\\n                                <span>{{variant.variantName}}</span>\\n                            </ui-select-choices>\\n                        </ui-select>\\n                    </div>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row label=\\\"(vm.mainGroup.variant2) ? vm.mainGroup.variant2.variantName : 'maingroup.preferredVariantGroup2'\\\" ng-show=\\\"vm.mainGroup.isVariant\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\">\\n                        <label>{{vm.mainGroup.preferredVariantGroup2.groupName}}</label>\\n                    </div>\\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <ca-singleselect model=\\\"vm.mainGroup.preferredVariantGroup2\\\" choices=\\\"vm.preferredVariantGroups2\\\" order-by=\\\"'groupName'\\\" item-renderer=\\\"'groupName'\\\" filter-by=\\\"['groupName']\\\" />\\n                    </div>\\n                </ca-form-group-row>\\n\\n                <ca-form-group-row ng-if=\\\"!vm.isNewMainGroup && vm.intrastats.length > 0\\\" label=\\\"'maingroup.intrastatnumber'\\\">\\n                    <div ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                        <div ng-repeat=\\\"intrastat in vm.mainGroup.intrastats\\\">{{intrastat.code}} {{intrastat.internalDescription}}</div>\\n                    </div>\\n                    <ca-multiselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.mainGroup.intrastats\\\" choices=\\\"vm.intrastats\\\" order-by=\\\"'code'\\\" item-renderer=\\\"['code','internalDescription']\\\" />\\n                </ca-form-group-row>\\n\\n                <div class=\\\"form-group row\\\"> &nbsp; </div>\\n                \\n                <ca-form-group-row ng-if=\\\"!vm.isNewMainGroup\\\" label=\\\"'maingroup.brands'\\\">\\n                    <div ng-if=\\\"vm.isEditing\\\">\\n                        <ca-multiselect model=\\\"vm.selectedBrands\\\"\\n                            choices=\\\"vm.brands\\\"\\n                            placeholder=\\\"'article.addBrand'\\\"\\n                            item-renderer=\\\"['brandCode','brandDescription']\\\" />\\n                    </div>\\n                    <div style=\\\"max-height:500px; overflow:auto;\\\">\\n                        <div ng-repeat=\\\"itemGroup in vm.mainGroup.itemGroups | orderBy: 'brand.brandDescription'\\\">\\n                            <span ng-hide=\\\"vm.isEditing\\\"> {{itemGroup.brand.brandCode}} {{itemGroup.brand.brandDescription}} </span>\\n                            <a ng-click=\\\"vm.toggleDisplayForm(itemGroup)\\\" ng-show=\\\"vm.isEditing\\\"> {{itemGroup.brand.brandCode}} {{itemGroup.brand.brandDescription}} </a>\\n                            <div class=\\\"col-lg-12\\\" ng-show=\\\"itemGroup.showEditForm && vm.isEditing\\\">\\n                                <ca-item-group-inline item-group=\\\"itemGroup\\\" vats=\\\"vm.vats\\\" variant-groups=\\\"vm.variantGroups\\\" />\\n                            </div>\\n                            <div class=\\\"col-lg-12\\\" ng-show=\\\"itemGroup.showEditForm && vm.isEditing\\\">\\n                                &nbsp;\\n                            </div>\\n                        </div>\\n                    </div>\\n                </ca-form-group-row>\\n                <div class=\\\"form-group row\\\"> &nbsp; </div>\\n            </div>\\n            \\n            <div class=\\\"col-sm-12 col-md-12 col-lg-6\\\">\\n                <label>{{'maingroup.showAttributes'| translate}}:</label>\\n                <div>\\n                    <table style=\\\"width:100%\\\">\\n                        <tr>\\n                            <td><label>{{'article.length' | translate}}</label></td>\\n                            <td><ca-singleselect model=\\\"vm.attributeVisibility.productLength\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\" disabled-by=\\\"!vm.isEditing\\\" /></td>\\n                        </tr>\\n                        <tr>\\n                            <td><label>{{'article.width' | translate}}</label></td>\\n                            <td><ca-singleselect model=\\\"vm.attributeVisibility.productWidth\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\" disabled-by=\\\"!vm.isEditing\\\" /></td>\\n                        </tr>\\n                        <tr>\\n                            <td><label>{{'article.height' | translate}}</label></td>\\n                            <td><ca-singleselect model=\\\"vm.attributeVisibility.productHeight\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\" disabled-by=\\\"!vm.isEditing\\\" /></td>\\n                        </tr>\\n                        <tr>\\n                            <td><label>{{'article.weight' | translate}}</label></td>\\n                            <td><ca-singleselect model=\\\"vm.attributeVisibility.productWeight\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\" disabled-by=\\\"!vm.isEditing\\\" /></td>\\n                        </tr>\\n                        <tr>\\n                            <td><label>{{'article.intrastatnumber' | translate}}</label></td>\\n                            <td><ca-singleselect model=\\\"vm.attributeVisibility.intrastat\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\" disabled-by=\\\"!vm.isEditing\\\" /></td>\\n                        </tr>\\n                        <tr>\\n                            <td><label>{{'article.meursing' | translate}}</label></td>\\n                            <td><ca-singleselect model=\\\"vm.attributeVisibility.meursing\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\" disabled-by=\\\"!vm.isEditing\\\" /></td>\\n                        </tr>\\n                        <tr>\\n                            <td><label>{{'article.storageLocation' | translate}}</label></td>\\n                            <td><ca-singleselect model=\\\"vm.attributeVisibility.storageLocation\\\" choices=\\\"vm.articleCollectionTypes\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\" disabled-by=\\\"!vm.isEditing\\\" /></td>\\n                        </tr>\\n                    </table>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.maingroups.new')\\\">\\n                {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <div class=\\\"text-center header-row\\\">\\n                            <span style=\\\"cursor: pointer; display: inline-block; margin-left: 20px;\\\" class=\\\"pull-left\\\">\\n                                <i class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\" ng-click=\\\"vm.sortMainGroups('mainGroupCode')\\\"></i> \\n                            </span>\\n                            <span style=\\\"cursor: pointer; display: inline-block; margin-right: 75px;\\\">\\n                                <i class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\" ng-click=\\\"vm.sortMainGroups('mainGroupDescription')\\\"></i> \\n                            </span>\\n                        </div>\\n                        <a ng-click=\\\"$state.go('product.maingroups.maingroup', {mainGroupId: mainGroup.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"mainGroup in vm.mainGroups\\\" ng-class=\\\"{'focus m-l-none': mainGroup.id === vm.selectedMainGroupId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': mainGroup.id === vm.selectedMainGroupId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{mainGroup.mainGroupCode}}</span>\\n                                <span class=\\\"pull-right text-ellipsis lg-label\\\">{{mainGroup.mainGroupDescription}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n    \\n    \\n    </div>\\n    \\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-11\\\" style=\\\"margin-bottom: 3px;\\\">\\n    <input type=\\\"text\\\" class=\\\"form-control input-sm no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" placeholder=\\\"{{'common.search' | translate}}\\\" \\n           ng-keydown=\\\"($event.key === 'Enter') ? vm.search() : undefined\\\">    \\n</div>\\n<div class=\\\"col-lg-1\\\" style=\\\"margin-bottom: 3px;\\\">\\n    <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.search()\\\"> {{'common.search' | translate}} </button>\\n</div>\\n\\n<div class=\\\"col-lg-4\\\">\\n    <div class=\\\"col-lg-6\\\">\\n        <label class=\\\"control-label\\\">\\n            {{'article.saleschannel' | translate}}:\\n        </label>\\n    </div>\\n    <div class=\\\"col-lg-6\\\">\\n        <ui-select ng-model=\\\"vm.selectedSalesChannel\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n            <ui-select-match placeholder=\\\"\\\">{{$select.selected.salesChannelCode}} {{$select.selected.salesChannelDescription}}</ui-select-match>\\n            <ui-select-choices repeat=\\\"salesChannel in vm.salesChannels | filter:{'salesChannelDescription': $select.search}\\\">\\n                <span>{{salesChannel.salesChannelCode}} {{salesChannel.salesChannelDescription}}</span>\\n            </ui-select-choices>\\n        </ui-select>\\n    </div>\\n</div>\\n<div class=\\\"col-lg-4\\\">\\n    <div class=\\\"col-lg-6\\\">\\n        <label class=\\\"control-label\\\">\\n            {{'article.articlecollection' | translate}}:\\n        </label>\\n    </div>\\n    <div class=\\\"col-lg-6\\\">\\n        <ui-select ng-model=\\\"vm.selectedArticleCollection\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n            <ui-select-match placeholder=\\\"\\\">{{$select.selected.collectionCode}} {{$select.selected.collectionDescription}}</ui-select-match>\\n            <ui-select-choices repeat=\\\"artColl in vm.articleCollections | filter:{'collectionDescription': $select.search}\\\">\\n                <span>{{artColl.collectionDescription}}</span>\\n            </ui-select-choices>\\n        </ui-select>\\n    </div>\\n</div>\\n<div class=\\\"col-lg-4\\\">\\n    <table style=\\\"width: 100%;\\\"> \\n        <thead>\\n            <th style=\\\"width:5%;\\\"></th>\\n            <th style=\\\"width:40%;\\\"></th>\\n            <th style=\\\"width:50%;\\\"></th>\\n        </thead>\\n        <tr> \\n            <td>\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.usePriceRange\\\" />\\n                    <i></i>\\n                </label>\\n            </td>\\n            <td>\\n                <label class=\\\"control-label\\\">\\n                    {{'pricelist.minprice' | translate}}:\\n                </label>\\n            </td>\\n            <td>\\n                <input type=\\\"text\\\" class=\\\"form-control input-sm no-bg text-md\\\" ng-model=\\\"vm.minPrice\\\" ng-disabled=\\\"!vm.usePriceRange\\\">\\n            </td>\\n        </tr>\\n        <tr> \\n            <td>\\n                &nbsp;\\n            </td>\\n            <td>\\n                <label class=\\\"control-label\\\">\\n                    {{'pricelist.maxprice' | translate}}:\\n                </label>\\n            </td>\\n            <td>\\n                <input type=\\\"text\\\" class=\\\"form-control input-sm no-bg text-md\\\" ng-model=\\\"vm.maxPrice\\\" ng-disabled=\\\"!vm.usePriceRange\\\">\\n            </td>\\n        </tr>\\n    </table>\\n</div>\\n\\n<div class=\\\"col-lg-8\\\"> &nbsp; </div>\\n<div class=\\\"col-lg-8\\\">\\n    <label class=\\\"i-checks m-t-xs\\\" style=\\\"margin-right:20px;\\\">\\n        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.shouldGetOnlyNewArticles\\\" />\\n        <i></i>\\n        {{'article.newarticles' | translate}}\\n    </label>\\n    <label class=\\\"i-checks m-t-xs\\\" style=\\\"margin-right:20px;\\\">\\n        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.shouldGetOnlyCurrentArticles\\\" />\\n        <i></i>\\n        {{'article.currentarticles' | translate}} \\n    </label>\\n    <label class=\\\"i-checks m-t-xs\\\" style=\\\"margin-right:20px;\\\">\\n        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.shouldGetOnlyArticlesWithSetPrices\\\" />\\n        <i></i>\\n        {{'article.withsetprices' | translate}} \\n    </label>\\n    <label class=\\\"i-checks m-t-xs\\\" style=\\\"margin-right:20px;\\\">\\n        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.shouldGetOnlyArticlesWithVolumeDiscounts\\\" />\\n        <i></i>\\n        {{'article.withvolumediscounts' | translate}} \\n    </label>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\" ng-show=\\\"vm.editorArticles.length != 0\\\">\\n    <div class=\\\"col-lg-8\\\">\\n        <div class=\\\"col-lg-3\\\" style=\\\"padding:10px 0;\\\">\\n            <div class=\\\"pull-left\\\">\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.save()\\\"> {{'common.save' | translate}} </button>\\n            </div>\\n        </div>\\n        <div class=\\\"col-lg-3\\\" style=\\\"padding:10px 0;\\\">\\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.useVariantDetail1Level\\\" />\\n                <i></i>\\n                {{'article.variantdetail1' | translate}}\\n            </label>\\n        </div>\\n        <div class=\\\"col-lg-3\\\" style=\\\"padding:10px 0;\\\"> \\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.useVariantDetail2Level\\\" />\\n                <i></i>\\n                {{'article.variantdetail2' | translate}}\\n            </label>\\n        </div>\\n        <div class=\\\"col-lg-3\\\" style=\\\"padding:10px 0;\\\"> \\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showVolumeDiscountRules\\\" />\\n                <i></i>\\n                {{'volumeDiscount.volumeDiscount' | translate}}\\n            </label>\\n        </div>\\n        <div class=\\\"col-lg-3\\\" style=\\\"padding:10px 0;\\\" ng-hide=\\\"!vm.useVariantDetail1Level || !vm.useVariantDetail2Level\\\"> \\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showSku\\\" />\\n                <i></i>\\n                {{'common.show' | translate}} {{'purchaseorderanalysis.sku' | translate}}\\n            </label>\\n        </div>\\n        <div class=\\\"col-lg-3\\\" style=\\\"padding:10px 0;\\\" ng-hide=\\\"!vm.useVariantDetail1Level || !vm.useVariantDetail2Level\\\"> \\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showBarcode\\\" />\\n                <i></i>\\n                {{'common.show' | translate}} {{'article.barcode' | translate}}\\n            </label>\\n        </div>\\n    </div>\\n    <div class=\\\"col-lg-4\\\" style=\\\"padding:10px 0;\\\">\\n        <ui-select ng-model=\\\"vm.itemsPerPage\\\" theme=\\\"bootstrap\\\" class=\\\"pull-right\\\" style=\\\"max-width: 150px;\\\">\\n            <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n            <ui-select-choices repeat=\\\"itemPerPage in vm.itemsPerPageAlternatives\\\">\\n                <span>{{ itemPerPage }}</span>\\n            </ui-select-choices>\\n        </ui-select>\\n    </div>\\n</div>\\n\\n<div class=\\\"col-lg-12\\\">\\n    <div class=\\\"wrapper text-center\\\">\\n        <div uib-pagination \\n            boundary-links=\\\"true\\\" \\n            total-items=\\\"vm.editorArticlesTotal\\\" \\n            items-per-page=\\\"vm.itemsPerPage\\\" \\n            max-size=\\\"10\\\" \\n            ng-change=\\\"vm.loadArticles()\\\" \\n            ng-model=\\\"vm.currentPage\\\" \\n            class=\\\"pagination-sm\\\" \\n            previous-text=\\\"&lsaquo;\\\" \\n            next-text=\\\"&rsaquo;\\\" \\n            first-text=\\\"&laquo;\\\" \\n            last-text=\\\"&raquo;\\\"\\n            ng-show=\\\"vm.editorArticles.length != 0\\\"></div>\\n    </div>\\n\\n    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.editorArticles.length != 0\\\">\\n        <ui-select ng-model=\\\"vm.priceListPriceDisplaySelection\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n            <ui-select-match>\\n                {{$select.selected.label | translate}}\\n            </ui-select-match>\\n            <ui-select-choices repeat=\\\"selection in vm.priceListPriceDisplaySelections\\\">\\n                <span>{{selection.label | translate}}</span>\\n            </ui-select-choices>\\n        </ui-select>\\n    </div>\\n\\n    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.editorArticles.length != 0\\\">\\n        <table class=\\\"table table-bordered table-hover table-condensed\\\" ng-show=\\\"vm.editorArticles.length != 0\\\">\\n            <thead>\\n                <tr>\\n                    <td colspan=\\\"{{ 1 + (vm.useVariantDetail1Level ? 1 : 0) + (vm.useVariantDetail2Level ? 1 : 0) }}\\\"> {{'article.articlename' | translate}} </td>\\n                    <td ng-if=\\\"vm.useVariantDetail2Level && vm.showSku\\\"> {{'purchaseorderanalysis.sku' | translate}} </td>\\n                    <td ng-if=\\\"vm.useVariantDetail2Level && vm.showBarcode\\\"> {{'article.barcode' | translate}} </td>\\n                    <td ng-repeat=\\\"priceList in vm.priceListHeads | orderBy:vm.priceListSort\\\"> \\n                        {{(priceList.pricelistName == 'SYS') ? ('pricelist.salesprice' | translate) : priceList.pricelistName}} ({{priceList.currency.code}}) \\n                    </td>\\n                </tr>\\n            </thead>\\n            <tbody>\\n                <tr ng-repeat=\\\"editorArticle in vm.editorArticles track by $index\\\" ng-if=\\\"editorArticle\\\">\\n                    <td>{{editorArticle.articleDescription}}</td>\\n                    <td ng-if=\\\"editorArticle.variantDetail1\\\">{{ editorArticle.variantDetail1.variantDetailName }}</td>\\n                    <td ng-if=\\\"editorArticle.variantDetail2\\\">{{ editorArticle.variantDetail2.variantDetailName }}</td>\\n                    <td ng-if=\\\"vm.showSku && editorArticle.variantDetail1 && editorArticle.variantDetail2\\\">{{ editorArticle.articleVariantSku }}</td>\\n                    <td ng-if=\\\"vm.showBarcode && editorArticle.variantDetail1 && editorArticle.variantDetail2\\\">{{ editorArticle.articleVariantBarcode }}</td>\\n                    <td ng-repeat=\\\"price in editorArticle.priceListPrices | orderBy:vm.priceListSort\\\" style=\\\"padding: 5px 5px;\\\">\\n                        <div class=\\\"col-lg-12\\\" ng-show=\\\"!vm.showVolumeDiscountRules\\\" style=\\\"padding:0;\\\">\\n                            <ca-price-range-input ng-show=\\\"vm.priceListPriceDisplaySelection.type == 'salesPrice'\\\"\\n                            price-range-item=\\\"price\\\" \\n                            on-price-range-item-changed=\\\"vm.handlePriceChange(priceRangeItem, editorArticle)\\\"\\n                            max-price-field-name=\\\"'maxPrice'\\\"\\n                            min-price-field-name=\\\"'minPrice'\\\"> </ca-price-range-input>\\n                            <ca-price-range-input ng-show=\\\"vm.priceListPriceDisplaySelection.type == 'previousPrice'\\\"\\n                            price-range-item=\\\"price\\\" \\n                            on-price-range-item-changed=\\\"vm.handlePriceChange(priceRangeItem, editorArticle)\\\"\\n                            max-price-field-name=\\\"'previousMaxPrice'\\\"\\n                            min-price-field-name=\\\"'previousMinPrice'\\\"> </ca-price-range-input>\\n                        </div>\\n                        <div ng-show=\\\"vm.showVolumeDiscountRules\\\" style=\\\"padding:0;\\\">\\n                            <ca-volume-discount-selector price-range-item=\\\"price\\\" volume-discounts=\\\"vm.volumeDiscounts\\\"> </ca-volume-discount-selector>\\n                        </div>\\n                    </td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n    <div class=\\\"wrapper text-center\\\">\\n        <div uib-pagination \\n            boundary-links=\\\"true\\\" \\n            total-items=\\\"vm.editorArticlesTotal\\\" \\n            items-per-page=\\\"vm.itemsPerPage\\\" \\n            max-size=\\\"10\\\" \\n            ng-change=\\\"vm.loadArticles()\\\" \\n            ng-model=\\\"vm.currentPage\\\" \\n            class=\\\"pagination-sm\\\" \\n            previous-text=\\\"&lsaquo;\\\" \\n            next-text=\\\"&rsaquo;\\\" \\n            first-text=\\\"&laquo;\\\" \\n            last-text=\\\"&raquo;\\\"\\n            ng-show=\\\"vm.editorArticles.length != 0\\\"></div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"input-group list-menu\\\">\\n    <input type=\\\"text\\\" \\n        class=\\\"form-control no-border no-bg text-md enterAsTab\\\"\\n        style=\\\"border:0px; padding:0px; height:auto;\\\"\\n        ng-model=\\\"vm.inputBoxDisplayValue\\\" \\n        ng-change=\\\"vm.handleInputChange()\\\"\\n        ng-focus=\\\"vm.inputBoxFocused()\\\"\\n        ng-blur=\\\"vm.inputBoxBlurred()\\\"\\n        ng-style=\\\"vm.getInputBoxStyle($item)\\\"\\n        ng-keypress=\\\"vm.handleKeypress($event)\\\"\\n        ng-disabled=\\\"!vm.priceRangeItem.isPriceOnAnyPriceList && vm.priceRangeItem.priceListId != 0\\\"\\n        enter-as-tab>\\n    <span class=\\\"input-group-addon input-xs no-border no-bg\\\" ng-if=\\\"!vm.priceRangeItem.isCalculatedPrice && !vm.priceRangeItem.isSystemPrice\\\">\\n        <a ng-click=\\\"vm.markForRemoval()\\\"> \\n            <i class=\\\"fa fa-times text-danger\\\"></i> \\n        </a>\\n    </span>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-group\\\" >\\n    <ui-select ng-model=\\\"vm.selectedVolumeDiscount\\\" ng-change=\\\"vm.changeVolumeDiscount()\\\" theme=\\\"bootstrap\\\" enter-as-tab class=\\\" enterAsTab\\\" ng-disabled=\\\"!vm.volumeDiscountAllowed\\\">\\n        <ui-select-match placeholder=\\\"\\\">{{$select.selected.name}}</ui-select-match>\\n        <ui-select-choices repeat=\\\"volumeDiscout in vm.volumeDiscounts | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['name']}\\\">\\n            <span>{{volumeDiscout.name}}</span>\\n        </ui-select-choices>\\n    </ui-select>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n\\n                <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n\\n                <div class=\\\"col-lg-12\\\">\\n                    <ca-article-selection on-search-context-changed=\\\"vm.searchContextChanged(searchContext)\\\"></ca-article-selection>\\n                </div>\\n\\n                <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n\\n                <!-- \\n                    The component responsible for editing and persisting the actual price list data \\n                -->\\n                <div class=\\\"col-lg-12\\\">\\n                    <ca-pricelist-grid\\n                        article-ids=\\\"vm.selectedArticleIds\\\"\\n                        saleschannel-id=\\\"vm.selectedSalesChannelId\\\"\\n                        article-collection-id=\\\"vm.selectedArticleCollectionId\\\">\\n                    </ca-pricelist-grid>\\n                </div>\\n\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.savePricelist()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewPricelist\\\"> {{'common.cancel' | translate}} </button>\\n        <span>{{vm.pricelist.pricelistCode + \\\" \\\" + vm.pricelist.pricelistName}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'pricelist.pricelistCode'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.pricelist.pricelistCode}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <div ng-class=\\\"{'has-error': !vm.isPricelistCodeValid()}\\\">\\n                    <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"pricelistCode\\\" ng-model=\\\"vm.pricelist.pricelistCode\\\" enter-as-tab />\\n                </div>\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'pricelist.pricelistName'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.pricelist.pricelistName}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <div ng-class=\\\"{'has-error': !vm.isPricelistNameValid()}\\\">\\n                    <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"pricelistName\\\" ng-model=\\\"vm.pricelist.pricelistName\\\" enter-as-tab />\\n                </div>\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'pricelist.currency'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.pricelist.currency.code}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <div ng-class=\\\"{'has-error': !vm.hasChosenCurrency()}\\\">\\n                    <ca-singleselect model=\\\"vm.pricelist.currency\\\" choices=\\\"vm.currencies\\\" order-by=\\\"'code'\\\" item-renderer=\\\"['code']\\\" mandatory=\\\"true\\\" />\\n                </div>\\n            </div>\\n        </ca-form-group-row>\\n    \\n        <ca-form-group-row label=\\\"'pricelist.salesChannel'\\\">\\n            <div ng-if=\\\"!vm.isNewPricelist\\\">{{vm.pricelist.salesChannel.salesChannelCode + ' ' + vm.pricelist.salesChannel.salesChannelDescription}}</div>\\n            <div ng-if=\\\"vm.isNewPricelist\\\" ng-class=\\\"{'has-error': !vm.isSalesChannelCodeValid()}\\\">\\n                <ca-singleselect model=\\\"vm.pricelist.salesChannel\\\" choices=\\\"vm.salesChannels\\\" order-by=\\\"'salesChannelCode'\\\" item-renderer=\\\"['salesChannelCode','salesChannelDescription']\\\" mandatory=\\\"true\\\" />\\n            </div>\\n        </ca-form-group-row>         \\n        <ca-form-group-row label=\\\"'pricelist.customerGroup'\\\">\\n            <div ng-if=\\\"!vm.isNewPricelist\\\">{{vm.pricelist.customerGroup.code + ' ' + vm.pricelist.customerGroup.name}}</div>\\n            <div ng-if=\\\"vm.isNewPricelist\\\">\\n                <ca-singleselect model=\\\"vm.pricelist.customerGroup\\\" choices=\\\"vm.customerGroups\\\" order-by=\\\"'name'\\\" item-renderer=\\\"['code','name']\\\" />\\n            </div>\\n        </ca-form-group-row>             \\n   \\n        <ca-form-group-row label=\\\"'pricelist.priceFactor'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <div>{{ vm.pricelist.priceFactor * 100 + '%' }}</div>\\n                <div style=\\\"margin-bottom:5px; font-style: italic;\\\">{{ 'common.example' | translate }}: 299 {{ vm.pricelist.currency.code }} ({{ 'article.originalprice' | translate }}) &RightArrow; {{ (299 * vm.pricelist.priceFactor).toFixed(2) }} {{ vm.pricelist.currency.code }} ({{ 'article.priceOnPricelist' | translate }})</div>\\n            </div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input class=\\\"form-control enterAsTab\\\"\\n                    type=\\\"number\\\" step=\\\"1\\\"\\n                    name=\\\"priceFactor\\\"\\n                    ng-model=\\\"vm.pricelist.priceFactor\\\"\\n                    enter-as-tab\\n                    percent-input />\\n                <div style=\\\"margin-bottom:5px; font-style: italic;\\\">{{ 'common.example' | translate }}: 299 {{ vm.pricelist.currency.code }} ({{ 'article.originalprice' | translate }}) &RightArrow; {{ (299 * vm.pricelist.priceFactor).toFixed(2) }} {{ vm.pricelist.currency.code }} ({{ 'article.priceOnPricelist' | translate }})</div>\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'pricelist.exchangeRate'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">\\n                <div>{{vm.pricelist.exchangeRate | number}}</div>\\n                <div style=\\\"margin-bottom:5px; font-style: italic;\\\">\\n                    {{ 'common.example' | translate }}:\\n                    <span>299 SEK &RightArrow; {{ (299 / vm.pricelist.exchangeRate).toFixed(2) }} {{ vm.pricelist.currency.code }}</span>,\\n                    <span>299 {{ vm.pricelist.currency.code }} &RightArrow; {{ (299 * vm.pricelist.exchangeRate).toFixed(2) }} SEK</span>\\n                </div>\\n            </div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input class=\\\"form-control enterAsTab\\\"\\n                    type=\\\"number\\\"\\n                    step=\\\"1\\\"\\n                    name=\\\"exchangeRate\\\"\\n                    ng-model=\\\"vm.pricelist.exchangeRate\\\"\\n                    enter-as-tab />\\n                <div style=\\\"margin-bottom:5px; font-style: italic;\\\">\\n                    {{ 'common.example' | translate }}:\\n                    <span>299 SEK &RightArrow; {{ (299 / vm.pricelist.exchangeRate).toFixed(2) }} {{ vm.pricelist.currency.code }}</span>,\\n                    <span>299 {{ vm.pricelist.currency.code }} &RightArrow; {{ (299 * vm.pricelist.exchangeRate).toFixed(2) }} SEK</span>\\n                </div>\\n            </div>\\n        </ca-form-group-row>\\n        <!-- <ca-form-group-row label=\\\"'pricelist.leastNetProfitPercentage'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.pricelist.leastNetProfitPercentage | number}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"number\\\" step=\\\"any\\\" class=\\\"form-control enterAsTab\\\" name=\\\"leastNetProfitPercentage\\\" ng-model=\\\"vm.pricelist.leastNetProfitPercentage\\\" enter-as-tab />\\n            </div>\\n        </ca-form-group-row> -->\\n        <ca-form-group-row label=\\\"'pricelist.psychologicalPrice'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.pricelist.psychologicalPrice.name}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.pricelist.psychologicalPrice\\\" choices=\\\"vm.psychologicalPrices\\\" order-by=\\\"'name'\\\" item-renderer=\\\"['name']\\\" />\\n            </div>\\n        </ca-form-group-row>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.pricelists.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.pricelists.pricelist', {pricelistId: pricelist.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"pricelist in vm.pricelists\\\" ng-class=\\\"{'focus m-l-none': pricelist.id === vm.selectedPricelistId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': pricelist.id === vm.selectedPricelistId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{pricelist.pricelistCode}}</span><span class=\\\"pull-right text-ellipsis lg-label\\\">{{pricelist.pricelistName}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n    <div class=\\\"col lter b-r productlist-w-transition\\\" ng-class=\\\"{   'w-3xs' : !$state.params.showArticleList, \\n                                                                     'w-xl' : $state.params.showArticleList || $state.params.showArticleList === undefined}\\\" \\n                                 ui-view=\\\"productList\\\" ng-hide=\\\"$state.includes('product.importfileslist') || \\n                                                                $state.includes('product.pricelisteditor') || \\n                                                                $state.includes('product.productimport') ||\\n                                                                $state.includes('product.productimporteditor')\\\"></div>\\n                                                                      \\n    <div class=\\\"col w-xxl bg-white-only\\\" ui-view=\\\"productView\\\" ng-hide=\\\"$state.includes('product.maingroups') ||\\n                                                                        $state.includes('product.articles.new') || \\n                                                                        $state.includes('product.articles.article') || \\n                                                                        $state.includes('product.importfileslist') || \\n                                                                        $state.includes('product.productimport') || \\n                                                                        $state.includes('product.pricelisteditor') ||\\n                                                                        $state.includes('product.productimporteditor')\\\"></div>\\n    \\n    <div class=\\\"col\\\" ui-view=\\\"wideColumnView\\\" ng-show=\\\"$state.includes('product.maingroups') ||\\n                                                       $state.includes('product.articles.new') || \\n                                                       $state.includes('product.articles.article') || \\n                                                       $state.includes('product.importfileslist') || \\n                                                       $state.includes('product.productimport') || \\n                                                       $state.includes('product.pricelisteditor') ||\\n                                                       $state.includes('product.productimporteditor')\\\"></div>\\n    \\n    <div class=\\\"col\\\" ng-hide=\\\"$state.includes('product.maingroups') ||\\n                              $state.includes('product.articles.new') || \\n                              $state.includes('product.articles.article') || \\n                              $state.includes('product.importfileslist')  || \\n                              $state.includes('product.pricelisteditor') || \\n                              $state.includes('product.productimport') ||\\n                              $state.includes('product.productimporteditor')\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <label class=\\\"col-sm-4 control-label\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\">{{'productimport.file' | translate}}:</label>\\n    <div class=\\\"col-sm-8\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\">\\n        <div>\\n            <label class=\\\"btn btn-default btn-file\\\">\\n                    {{'stock.readfile' | translate}}<input id=\\\"xlf\\\" type=\\\"file\\\" name=\\\"xlfile\\\" style=\\\"display:none;\\\">\\n            </label>\\n            \\n            <div ng-bind=\\\"importfile\\\"></div>\\n            <button ng-click=\\\"vm.reloadFile()\\\" ng-show=\\\"vm.showReload\\\" title=\\\"Ladda om fil\\\" class=\\\"btn btn-default btn-sm\\\" type=\\\"button\\\" style=\\\"float:right;\\\">\\n                <i class=\\\"fa fa-refresh fa-fw\\\"></i>\\n            </button>\\n        </div>\\n        <label>{{vm.importFileName}}</label>\\n    </div>\\n    <div style=\\\"clear:both;height:1px;\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\">&nbsp;</div>\\n    <div ng-show=\\\"vm.importType === 'existingImportFile'\\\">\\n        <div>\\n            <div class=\\\"wrapper b-t text-center\\\">\\n                <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadImportFiles()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n            </div>\\n\\n            <div class=\\\"col-md-12\\\">\\n                <table class=\\\"table\\\">\\n                    <thead>\\n                        <th>{{'common.filename' | translate}}</th>\\n                        <th>{{'common.importdate' | translate}}</th>\\n                        <th>{{'productimport.importtype' | translate}}</th>\\n                        <th>{{'common.approved' | translate}}</th>\\n                        <!-- <th>{{'order.order' | translate}}</th> -->\\n                        <th style=\\\"text-align:right;\\\">{{'common.delete' | translate}}</th>\\n                    </thead>\\n                    <tbody ng-repeat=\\\"file in vm.importFiles\\\">\\n                        <tr>\\n                            <td><a ng-click=\\\"vm.goToEditor(file)\\\" class=\\\"ca-celllink\\\">{{ file.fileName }}</a></td>\\n                            <td>{{ file.importDate | date: 'yyyy-MM-dd HH:mm' }}</td>\\n                            <td>\\n                                {{(file.importType == 'product') ? ('productimport.product' | translate) : ''}}\\n                                {{(file.importType == 'order') ? ('productimport.order' | translate) : ''}}\\n                            </td>\\n                            <td>\\n                                <label class=\\\"i-checks m-t-xs\\\">\\n                                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-disabled=\\\"true\\\" ng-checked=\\\"file.isApproved\\\" />\\n                                    <i></i>\\n                                </label>\\n                            </td>\\n                            <!-- <td><a ng-click=\\\"vm.goToOrder(file.order)\\\" class=\\\"ca-celllink\\\">{{ file.order.orderNumber }}</a></td> -->\\n                            <td><ca-confirm-button confirm-title=\\\"'common.confirmDelete'\\\" on-confirm-pressed=\\\"vm.deleteImportFile(file.id)\\\" ng-show=\\\"!file.isApproved\\\"></ca-confirm-button></td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </div>\\n        </div>\\n\\n        <div>&nbsp;</div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<!-- <span style=\\\"margin-right:20px\\\"><input type=\\\"radio\\\" ng-model=\\\"vm.multiplicity\\\" value=\\\"single\\\" checked=\\\"checked\\\" ng-disabled=\\\"vm.disabledBy\\\"> {{ 'productimport.setSpecific' | translate }}</span> -->\\n<!-- <span><input type=\\\"radio\\\" ng-model=\\\"vm.multiplicity\\\" value=\\\"multiple\\\" ng-disabled=\\\"(!vm.columnNames || vm.columnNames.length === 0) || vm.disabledBy\\\"> {{ 'productimport.getFromFile' | translate }}</span> -->\\n\\n<wj-input-date  ng-show=\\\"vm.multiplicity === 'single'\\\" ng-disabled=\\\"vm.disabledBy\\\"\\n    value=\\\"vm.dateModel\\\"\\n    format=\\\"yyyy-MM-dd\\\"\\n    style=\\\"width:100%\\\">\\n</wj-input-date>\\n<!--     min=\\\"vm.dateMin\\\"\\n    max=\\\"vm.dateMax\\\"\\n-->\\n<ui-select ng-model=\\\"vm.columnModel\\\" ng-show=\\\"vm.multiplicity === 'multiple'\\\" ng-disabled=\\\"(!vm.columnNames || vm.columnNames.length === 0) || vm.disabledBy\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n    <ui-select-match placeholder=\\\"{{vm.columnPlaceholder | translate}}\\\">{{vm.columnRenderItem('selected', $select.selected)}}</ui-select-match>\\n    <ui-select-choices repeat=\\\"item in vm.columnNames | orderBy:vm.columnOrderBy | filter:vm.filterColumn($select.search) track by item.id\\\">\\n        {{vm.columnRenderItem('choice', item)}}\\n    </ui-select-choices>\\n</ui-select>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<span style=\\\"margin-right:20px\\\"><input type=\\\"radio\\\" ng-model=\\\"vm.multiplicity\\\" value=\\\"single\\\" checked=\\\"checked\\\" ng-disabled=\\\"vm.disabledBy\\\"> {{ 'productimport.setSpecific' | translate }}</span>\\n<span><input type=\\\"radio\\\" ng-model=\\\"vm.multiplicity\\\" value=\\\"multiple\\\" ng-disabled=\\\"(!vm.columnNames || vm.columnNames.length === 0) || vm.disabledBy\\\"> {{ 'productimport.getFromFile' | translate }}</span>\\n\\n<ui-select ng-model=\\\"vm.choiceModel\\\" ng-show=\\\"vm.multiplicity === 'single'\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.disabledBy\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n    <ui-select-match placeholder=\\\"{{vm.choicePlaceholder | translate}}\\\">{{vm.choiceRenderItem('selected', $select.selected)}}</ui-select-match>\\n    <ui-select-choices repeat=\\\"item in vm.choices | orderBy:vm.choiceOrderBy | filter:vm.filterChoice($select.search) track by item.id\\\">\\n        {{vm.choiceRenderItem('choice', item)}}\\n    </ui-select-choices>\\n</ui-select>\\n\\n<ui-select ng-model=\\\"vm.columnModel\\\" ng-show=\\\"vm.multiplicity === 'multiple'\\\" ng-disabled=\\\"(!vm.columnNames || vm.columnNames.length === 0) || vm.disabledBy\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n    <ui-select-match placeholder=\\\"{{vm.columnPlaceholder | translate}}\\\">{{vm.columnRenderItem('selected', $select.selected)}}</ui-select-match>\\n    <ui-select-choices repeat=\\\"item in vm.columnNames | orderBy:vm.columnOrderBy | filter:vm.filterColumn($select.search) track by item.id\\\">\\n        {{vm.columnRenderItem('choice', item)}}\\n    </ui-select-choices>\\n</ui-select>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"panel panel-default\\\">\\n            <div class=\\\"panel-heading font-bold\\\">\\n                <span>\\n                    <button ng-click=\\\"vm.validateImportFile()\\\" class=\\\"btn btn-sm\\\" style=\\\"margin-top: 0px;\\\" ng-class=\\\"{ true : 'btn-default', false : 'btn-primary' }[vm.readyForImport]\\\" type=\\\"button\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\">{{ 'common.validate' | translate }}</button>\\n                    <button ng-click=\\\"vm.confirmGoToEditor()\\\" ng-disabled=\\\"!vm.readyForImport\\\" class=\\\"btn btn-sm\\\" style=\\\"margin-top: 0px;\\\" ng-class=\\\"{ true : 'btn-primary', false : 'btn-default' }[vm.readyForImport]\\\" type=\\\"button\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\">{{ 'productimport.import' | translate }}</button>\\n                    <span class=\\\"ca-warning \\\" ng-show=\\\"vm.importType === 'newImportFile' && !vm.readyForImport\\\">{{ 'productimport.notReadyForImport' | translate }}</span>\\n                    <span class=\\\"ca-success\\\" ng-show=\\\"vm.importType === 'newImportFile' && vm.readyForImport\\\">{{ 'productimport.readyForImport' | translate }}</span>\\n                    <span>&nbsp;</span>\\n                </span>\\n            </div>\\n            <ul class=\\\"nav nav-tabs\\\">\\n                <li ng-class=\\\"{'active' : vm.importType === 'newImportFile'}\\\"><a ng-click=\\\"vm.changeToImportNewFileView()\\\">{{ 'productimport.new' | translate }}</a></li>\\n                <li ng-class=\\\"{'active' : vm.importType === 'existingImportFile'}\\\"><a ng-click=\\\"vm.changeToUseExistingFileView()\\\">{{ 'productimport.existing' | translate }}</a></li>\\n            </ul>\\n            <div class=\\\"panel-body\\\">\\n                <div class=\\\"col-sm-12 col-md-12 col-lg-6\\\">\\n                    <ca-error-list error-list=\\\"vm.errorList\\\" label=\\\"'productimport.validationSummary'\\\"></ca-error-list>\\n                    <div style=\\\"clear:both; height:1px;\\\">&nbsp;</div>\\n\\n                    <div id=\\\"filelistAccordion\\\">\\n                        <h4 ng-show=\\\"vm.importType === 'newImportFile'\\\">{{ 'productimport.fileSettings' | translate }}</h4>\\n                        <!-- T1 -->\\n                        <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\">\\n                            <ca-form-group-row label=\\\"'productimport.fileType'\\\">\\n                                <div class=\\\"radio\\\">\\n                                    <label class=\\\"i-checks\\\">\\n                                        <input type=\\\"radio\\\" ng-model=\\\"vm.importFileType\\\" value=\\\"productImport\\\">\\n                                        <i> </i>\\n                                        {{'productimport.productImport' | translate }}\\n                                    </label>\\n                                </div>\\n                                <div class=\\\"radio\\\">\\n                                    <label class=\\\"i-checks\\\">\\n                                        <input type=\\\"radio\\\" ng-model=\\\"vm.importFileType\\\" value=\\\"orderImport\\\">\\n                                        <i> </i>\\n                                        {{'productimport.orderImport' | translate }}\\n                                    </label>\\n                                </div>\\n                            </ca-form-group-row>\\n                        </div>\\n                        \\n\\n                        <div style=\\\"clear:both;height:1px;\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\">&nbsp;</div>\\n                        <!-- T1 -->\\n                        <ca-import-file-list import-type=\\\"vm.importType\\\" on-import-file-changed=\\\"vm.handleImportFile(file, revalidate)\\\"></ca-import-file-list>\\n\\n                        <div class=\\\"col-sm-4\\\">&nbsp;</div>\\n                        <div class=\\\"col-sm-8\\\">\\n                            <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'importFileList'\\\"></ca-error-list>\\n                        </div>\\n                        <div style=\\\"clear:both; height:1px;\\\">&nbsp;</div>\\n                    </div>\\n                    \\n                    <div style=\\\"text-align: center;\\\"><span style=\\\"display: inline-block; width:80%; border-bottom:1px solid #eee; height:10px; margin-bottom:5px;\\\">&nbsp;</span></div>\\n\\n                    <div id=\\\"othersettings\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\" ng-class=\\\"{ true: 'ca-accordionUnavailable' }[!vm.mandatoryAccordionAvailable()]\\\">\\n                        <h4>{{ 'productimport.othersettings' | translate }}</h4>\\n                        <div class=\\\"col-lg-7 m-b-xs\\\">\\n                            {{ 'productimport.trygetpricesfromproduct' | translate }}:\\n                        </div>\\n                        <div class=\\\"col-lg-5 m-b-xs\\\">\\n                            <div style=\\\"align-items: center; vertical-align: middle; font-size: smaller;\\\">\\n                                <input type=\\\"checkbox\\\" ng-model=\\\"vm.usePricesFromExistingProducts.forPurchaseCost\\\" ng-disabled=\\\"!vm.mandatoryAccordionAvailable()\\\" ng-click=\\\"vm.readyForImport = false\\\"/>\\n                                &ensp;{{ 'productimport.purchaseCost' | translate }}\\n                            </div>\\n                            <div style=\\\"align-items: center; vertical-align: middle; font-size: smaller;\\\">\\n                                <input type=\\\"checkbox\\\" ng-model=\\\"vm.usePricesFromExistingProducts.forSalesPrice\\\" ng-disabled=\\\"!vm.mandatoryAccordionAvailable()\\\" ng-click=\\\"vm.readyForImport = false\\\"/>\\n                                &ensp;{{ 'productimport.salesPrice' | translate }}\\n                            </div>\\n                            <div style=\\\"align-items: center; vertical-align: middle; font-size: smaller;\\\">\\n                                <input type=\\\"checkbox\\\" ng-model=\\\"vm.usePricesFromExistingProducts.forPreviousPrice\\\" ng-disabled=\\\"!vm.mandatoryAccordionAvailable()\\\" ng-click=\\\"vm.readyForImport = false\\\"/>\\n                                &ensp;{{ 'productimport.previousPrice' | translate }}\\n                            </div>\\n                        </div>\\n                        <div  class=\\\"col-lg-12 m-b-xs\\\" ng-show=\\\"vm.usePricesFromExistingProducts.forPurchaseCost || vm.usePricesFromExistingProducts.forSalesPrice || vm.usePricesFromExistingProducts.forPreviousPrice\\\"\\n                            style=\\\"background-color: gold; color:black; border-color: goldenrod; border-width:1px; border-radius: 10px; font-size: smaller;\\\">\\n                            <b>{{ 'common.warning' | translate }}:</b> <br> \\n                            <span ng-bind-html=\\\"vm.getPricesFromProductWarningMessage()\\\">{{ vm.getPricesFromProductWarningMessage() }}</span>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-7 m-b-xs m-t-xs\\\" ng-show=\\\"vm.isAllowedToImportSku\\\">\\n                            {{'productimport.productImportSku' | translate }}: <span style=\\\"font-size:smaller\\\"><i>({{ 'productimport.skunotcommonlyused' | translate }})</i></span>\\n                        </div>\\n                        <div class=\\\"col-lg-5 m-b-xs m-t-xs\\\" ng-show=\\\"vm.isAllowedToImportSku\\\">\\n                            <div style=\\\"align-items: center; vertical-align: middle; font-size: smaller;\\\">\\n                                <input type=\\\"checkbox\\\" ng-model=\\\"vm.importSku\\\" ng-disabled=\\\"!vm.mandatoryAccordionAvailable()\\\"/>\\n                                &ensp;{{ 'common.yes' | translate }}\\n                            </div>\\n                        </div>\\n                        <div  class=\\\"col-lg-12 m-b-xs\\\" ng-show=\\\"vm.importSku && vm.isAllowedToImportSku\\\"\\n                            style=\\\"background-color: gold; color:black; border-color: goldenrod; border-width:1px; border-radius: 10px; font-size: smaller;\\\">\\n                            <b>{{ 'common.warning' | translate }}:</b> <br> \\n                            {{ 'productimport.skuwarningmessage' | translate }}\\n                        </div>\\n\\n                        <div class=\\\"col-lg-7 m-b-xs m-t-xs\\\">\\n                            {{ 'productimport.getitemgroupfrom' | translate }}:\\n                        </div>\\n                        <div class=\\\"col-lg-5 m-b-xs m-t-xs\\\">\\n                            <div style=\\\"align-items: center; vertical-align: middle; font-size: smaller;\\\">\\n                                <input type=\\\"radio\\\" ng-checked=\\\"!vm.useMainGroupAndBrand\\\" ng-click=\\\"vm.useMainGroupAndBrand = false\\\" ng-disabled=\\\"!vm.mandatoryAccordionAvailable()\\\">\\n                                &ensp;{{ 'productimport.itemGroupCode' | translate }}\\n                            </div>\\n                            <div style=\\\"align-items: center; vertical-align: middle; font-size: smaller;\\\">\\n                                <input type=\\\"radio\\\" ng-checked=\\\"vm.useMainGroupAndBrand\\\" ng-click=\\\"vm.useMainGroupAndBrand = true\\\" ng-disabled=\\\"!vm.mandatoryAccordionAvailable()\\\">\\n                                &ensp;{{ 'maingroup.maingroupcode' | translate }} & {{ 'brand.brandcode' | translate }}\\n                            </div>\\n                        </div>\\n                    </div>\\n\\n                    <div style=\\\"text-align: center;\\\"><span style=\\\"display: inline-block; width:80%; border-bottom:1px solid #eee; height:10px; margin-bottom:5px;\\\">&nbsp;</span></div>\\n                        \\n                    <div id=\\\"mandatoryAccordion\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\" ng-class=\\\"{ true: 'ca-accordionUnavailable' }[!vm.mandatoryAccordionAvailable()]\\\">\\n                        <h4>{{ 'productimport.mandatoryFields' | translate }}</h4>\\n                        <!-- T2 -->\\n                        <ca-form-group-row label=\\\"'productimport.supplier'\\\">\\n                            <ca-map-or-select choices=\\\"vm.suppliers\\\"\\n                                choice-model=\\\"vm.productImportRequest.supplier\\\"\\n                                column-model=\\\"vm.importMapping.column.companyCode\\\"\\n                                choice-order-by=\\\"'supplierName'\\\"\\n                                choice-item-renderer=\\\"'companyName'\\\"\\n                                choice-placeholder=\\\"'productimport.supplier'\\\"\\n                                column-names=\\\"vm.importFileColumnNames\\\"\\n                                column-order-by=\\\"'name'\\\"\\n                                column-item-renderer=\\\"'name'\\\"\\n                                column-placeholder=\\\"'productimport.supplier'\\\"\\n                                disabled-by=\\\"!vm.mandatoryAccordionAvailable()\\\"></ca-map-or-select>\\n                            <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'supplier'\\\"></ca-error-list>\\n                            <div>&nbsp;</div>\\n                        </ca-form-group-row>\\n                        <!-- T2 -->\\n                        <ca-form-group-row label=\\\"'common.locations'\\\" ng-show=\\\"vm.importFileType === 'orderImport'\\\">\\n                            <ca-map-or-select choices=\\\"vm.locations\\\"\\n                                choice-model=\\\"vm.productImportRequest.location\\\"\\n                                column-model=\\\"vm.importMapping.column.locationCode\\\"\\n                                choice-order-by=\\\"'locationName'\\\"\\n                                choice-item-renderer=\\\"'locationName'\\\"\\n                                choice-placeholder=\\\"'common.locations'\\\"\\n                                column-names=\\\"vm.importFileColumnNames\\\"\\n                                column-order-by=\\\"'name'\\\"\\n                                column-item-renderer=\\\"'name'\\\"\\n                                column-placeholder=\\\"'common.locations'\\\"\\n                                disabled-by=\\\"!vm.mandatoryAccordionAvailable()\\\"></ca-map-or-select>\\n                            <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'location'\\\"></ca-error-list>\\n                            <div>&nbsp;</div>\\n                        </ca-form-group-row>\\n                        <!-- T2 -->\\n                        <ca-form-group-row label=\\\"'common.articleCollection'\\\">\\n                            <ca-map-or-select choices=\\\"vm.articleCollections\\\"\\n                                choice-model=\\\"vm.productImportRequest.articleCollection\\\"\\n                                column-model=\\\"vm.importMapping.column.articleCollectionCode\\\"\\n                                choice-order-by=\\\"'collectionDescription'\\\"\\n                                choice-item-renderer=\\\"'collectionDescription'\\\"\\n                                choice-placeholder=\\\"'common.collection'\\\"\\n                                column-names=\\\"vm.importFileColumnNames\\\"\\n                                column-order-by=\\\"'name'\\\"\\n                                column-item-renderer=\\\"'name'\\\"\\n                                column-placeholder=\\\"'common.collection'\\\"\\n                                disabled-by=\\\"!vm.mandatoryAccordionAvailable()\\\"></ca-map-or-select>\\n                            <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'articleCollection'\\\"></ca-error-list>\\n                            <div>&nbsp;</div>\\n                        </ca-form-group-row>\\n                        <!-- T2 -->\\n                        <ca-form-group-row label=\\\"'common.orderCollection'\\\" ng-show=\\\"vm.importFileType === 'orderImport'\\\">\\n                            <ca-map-or-select choices=\\\"vm.orderCollections\\\"\\n                                choice-model=\\\"vm.productImportRequest.orderCollection\\\"\\n                                column-model=\\\"vm.importMapping.column.orderCollectionCode\\\"\\n                                choice-order-by=\\\"'collectionDescription'\\\"\\n                                choice-item-renderer=\\\"'collectionDescription'\\\"\\n                                choice-placeholder=\\\"'common.collection'\\\"\\n                                column-names=\\\"vm.importFileColumnNames\\\"\\n                                column-order-by=\\\"'name'\\\"\\n                                column-item-renderer=\\\"'name'\\\"\\n                                column-placeholder=\\\"'common.collection'\\\"\\n                                disabled-by=\\\"!vm.mandatoryAccordionAvailable()\\\"></ca-map-or-select>\\n                            <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'orderCollection'\\\"></ca-error-list>\\n                            <div>&nbsp;</div>\\n                        </ca-form-group-row>\\n                        <!-- T2 -->\\n                        <ca-form-group-row label=\\\"'productimport.deliveryDate'\\\" ng-show=\\\"vm.importFileType === 'orderImport'\\\">\\n                            <ca-map-or-date date-model=\\\"vm.productImportRequest.plannedDeliveryDate\\\"\\n                                column-model=\\\"vm.importMapping.column.plannedDeliveryDate\\\"\\n                                column-names=\\\"vm.importFileColumnNames\\\"\\n                                column-order-by=\\\"'name'\\\"\\n                                column-item-renderer=\\\"'name'\\\"\\n                                column-placeholder=\\\"'common.date'\\\"\\n                                disabled-by=\\\"!vm.mandatoryAccordionAvailable()\\\"></ca-map-or-date>\\n                            <!-- date-min=\\\"new Date(2017,10,01)\\\" date-max=\\\"new Date(2017,10,31)\\\" -->\\n                            <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'plannedDeliveryDate'\\\"></ca-error-list>\\n                            <div>&nbsp;</div>\\n                        </ca-form-group-row>\\n                    </div>\\n                </div>\\n                <div class=\\\"col-sm-12 col-md-12 col-lg-6\\\">\\n                    <div id=\\\"mappingsAccordion\\\" ng-show=\\\"vm.importType === 'newImportFile'\\\" ng-class=\\\"{ true: 'ca-accordionUnavailable' }[!vm.mappingsAccordionAvailable()]\\\">\\n                        <h4>{{ 'productimport.columns' | translate }}</h4>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.orderNumberExternal'\\\" ng-show=\\\"vm.importFileType === 'orderImport'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.orderNumberExternal\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.alternativeArticleNumber'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.alternativeArticleNumber\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                            <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'importMappingAlternativeArticleNumber'\\\"></ca-error-list>\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.articleName'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.articleName\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.articleDescription'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.articleDescription\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T4 -->\\n                        <ca-form-group-row label=\\\"'productimport.variant1Name'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.variant1Name\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T4 -->\\n                        <ca-form-group-row label=\\\"'productimport.variant2Name'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.variant2Name\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.barcode'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.barcode\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row ng-if=\\\"vm.importSku\\\" label=\\\"'productimport.externalSku'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.externalSku\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <div style=\\\"text-align: center;\\\"><span style=\\\"display: inline-block; width:80%; border-bottom:1px solid #eee; height:10px; margin-bottom:5px;\\\">&nbsp;</span></div>\\n\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.quantity'\\\" ng-show=\\\"vm.importFileType === 'orderImport'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.quantity\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.purchaseCost'\\\">\\n                            <div style=\\\"display: flex; align-items: center;\\\">\\n                                <i class=\\\"fa fa-times-circle\\\" style=\\\"color:gold\\\" aria-hidden=\\\"true\\\" ng-show=\\\"vm.usePricesFromExistingProducts.forPurchaseCost\\\"\\n                                    tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'productimport.validationignored' | translate}}\\\" tooltip-popup-delay=\\\"50\\\"></i>&ensp;\\n                                <div ng-show=\\\"vm.isPurchasingCurrencyCodePopulated()\\\" style=\\\"border-radius: 2px; width: 40px; height: 20px; background-color: rgb(160, 160, 160); margin-right: 10px; display: flex; align-items: center; justify-content: center;\\\">\\n                                    <span style=\\\"color: black; font-size: 11px;\\\">{{vm.productImportRequest.supplier.purchasingCurrency.code}}</span>\\n                                </div>\\n                                <ca-singleselect style=\\\"flex: 1;\\\" model=\\\"vm.importMapping.column.purchaseCost\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                            </div>\\n                            <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'importMappingPurchaseCost'\\\"></ca-error-list>\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.salesPrice'\\\">\\n                            <div style=\\\"display: flex; align-items: center;\\\">\\n                                <i class=\\\"fa fa-times-circle\\\" style=\\\"color:gold\\\" aria-hidden=\\\"true\\\" ng-show=\\\"vm.usePricesFromExistingProducts.forSalesPrice\\\"\\n                                    tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'productimport.validationignored' | translate}}\\\" tooltip-popup-delay=\\\"50\\\"></i>&ensp;\\n                                <ca-singleselect style=\\\"flex: 1;\\\" model=\\\"vm.importMapping.column.salesPrice\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                                <ca-error-list error-list=\\\"vm.errorList\\\" filter-by=\\\"'importMappingSalesPrice'\\\"></ca-error-list>\\n                            </div>\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.previousPrice'\\\">\\n                            <div style=\\\"display: flex; align-items: center;\\\">\\n                                <i class=\\\"fa fa-times-circle\\\" style=\\\"color:gold\\\" aria-hidden=\\\"true\\\" ng-show=\\\"vm.usePricesFromExistingProducts.forPreviousPrice\\\"\\n                                    tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'productimport.validationignored' | translate}}\\\" tooltip-popup-delay=\\\"50\\\"></i>&ensp;\\n                                <ca-singleselect style=\\\"flex: 1;\\\" model=\\\"vm.importMapping.column.previousPrice\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                            </div>\\n                        </ca-form-group-row>\\n                        <div style=\\\"text-align: center;\\\"><span style=\\\"display: inline-block; width:80%; border-bottom:1px solid #eee; height:10px; margin-bottom:5px;\\\">&nbsp;</span></div>\\n\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.itemGroupCode'\\\" ng-if=\\\"!vm.useMainGroupAndBrand\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.itemGroupCode\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'maingroup.maingroupcode'\\\" ng-if=\\\"vm.useMainGroupAndBrand\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.mainGroupCode\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'brand.brandcode'\\\" ng-if=\\\"vm.useMainGroupAndBrand\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.brandCode\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.subCategory'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.subCategory\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.productType'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.articleTypeName\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.departmentCode'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.departmentCode\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <!-- T3 -->\\n                        <ca-form-group-row label=\\\"'productimport.intrastatCode'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.intrastatCode\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.countryCode'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.countryCode\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n\\n                        <div style=\\\"text-align: center;\\\"><span style=\\\"display: inline-block; width:80%; border-bottom:1px solid #eee; height:10px; margin-bottom:5px;\\\">&nbsp;</span></div>\\n                        \\n                        <ca-form-group-row label=\\\"'productimport.supplierSku'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.supplierSku\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.length'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.length\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.height'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.height\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.width'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.width\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n                        <ca-form-group-row label=\\\"'article.weight'\\\">\\n                            <ca-singleselect model=\\\"vm.importMapping.column.weight\\\" choices=\\\"vm.importFileColumnNames\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"false\\\" disabled-by=\\\"!vm.mappingsAccordionAvailable()\\\" />\\n                        </ca-form-group-row>\\n\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div ng-mouseenter=\\\"showSummaryButton = true\\\" ng-mouseleave=\\\"showSummaryButton = false\\\" ng-init=\\\"showSummaryButton = false\\\" style=\\\"padding:5px 15px; max-width:500px; text-align: right;\\\">\\n    <div ng-show=\\\"vm.summaries.length > 0\\\" class=\\\"ca-infoListStyle\\\">\\n        <button class=\\\"btn btn-xs\\\" style=\\\"float:right;\\\" ng-click=\\\"vm.showSummaries = !vm.showSummaries\\\" ng-show=\\\"showSummaryButton\\\"\\n            tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ vm.showSummaries ? 'productimport.hideContents' : 'productimport.showContents' | translate }}\\\" tooltip-popup-delay=\\\"300\\\"\\n            >{{ vm.showSummaries ? 'productimport.hide' : 'productimport.show' | translate }}</button>        \\n        <label style=\\\"font-weight: bold; display:block;\\\">{{ 'productimport.creationSummary' | translate }}</label>\\n        <span style=\\\"margin-bottom:20px;\\\" ng-show=\\\"vm.showSummaries\\\">{{ 'productimport.creationSummaryDescription' | translate }}:</span>\\n        <ul ng-show=\\\"vm.showSummaries\\\">\\n            <li ng-repeat=\\\"summary in vm.summaries\\\" class=\\\"list-item-vertical-spacing-md\\\">\\n                {{ summary.title | translate }}: <span style=\\\"font-style: italic;\\\">{{ summary.count }} {{ 'common.piecesAbbr' | translate }}</span>\\n            </li>\\n        </ul>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"    <ui-select ng-model=\\\"vm.placeholderModel\\\" theme=\\\"bootstrap\\\" on-select=\\\"vm.selectionChanged()\\\" uis-open-close=\\\"vm.dropDownToggled(isOpen)\\\">\\n        <ui-select-match class=\\\"{{ vm.backgroundClass }}\\\">\\n            <span ng-if=\\\"vm.editProperty === 'itemGroupCode'\\\">{{ $select.selected.fullName }}</span>\\n            <span ng-if=\\\"vm.editProperty !== 'itemGroupCode'\\\">{{ $select.selected.value }}</span>\\n        </ui-select-match>\\n        \\n        <ui-select-choices repeat=\\\"item in vm.localSelectionOptions\\\" refresh=\\\"vm.refreshSearchItems($select.search)\\\" refresh-delay=\\\"50\\\">\\n            <span>{{item.fullName}}</span> &nbsp;\\n        </ui-select-choices>\\n    </ui-select>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div ng-show=\\\"vm.getNumberOfShownErrors() > 0\\\" ng-mouseenter=\\\"showErrorButton = true\\\" ng-mouseleave=\\\"showErrorButton = false\\\" ng-init=\\\"showErrorButton = false\\\" class=\\\"ca-errorListStyle\\\">\\n    <button class=\\\"btn btn-xs\\\" style=\\\"float:right;\\\" ng-click=\\\"vm.showErrors = !vm.showErrors\\\" ng-show=\\\"showErrorButton\\\"\\n        tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ vm.showErrors ? 'productimport.hideContents' : 'productimport.showContents' | translate }}\\\" tooltip-popup-delay=\\\"300\\\"\\n        >{{ vm.showErrors ? 'productimport.hide' : 'productimport.show' | translate }}</button>\\n    <div ng-show=\\\"vm.errors.length != 0\\\">\\n        <label style=\\\"float:left; font-weight: bold;\\\">{{ 'productimport.validationerrors' | translate }}</label>\\n        <div style=\\\"clear: both; height:1px\\\">&nbsp;</div>\\n    </div>\\n    <ul ng-show=\\\"vm.getNumberOfShownErrors() != 0 && vm.showErrors\\\">\\n        <li ng-repeat=\\\"error in vm.errors\\\" class=\\\"list-item-vertical-spacing-md\\\">\\n            {{ error.displayMessage | translate }} ({{error.fileRows.length}} {{(error.fileRows.length === 1) ? ('productimport.row' | translate) : ('productimport.rows' | translate)}})\\n            <button class=\\\"btn btn-xs\\\" ng-click=\\\"vm.selectValidationError(error)\\\"\\n                tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'productimport.showOnlyRowsWithError' | translate }} '{{ error.displayMessage | translate }}'\\\" tooltip-popup-delay=\\\"300\\\"\\n                > {{'productimport.filter' | translate}} </button>\\n            <div class=\\\"list-item-description\\\">{{ 'productimport.suggestion' | translate }}: {{ error.suggestedSolution | translate }}</div>\\n        </li>\\n    </ul>\\n</div>\\n<div ng-show=\\\"vm.warnings.length > 0\\\" ng-mouseenter=\\\"showWarningButton = true\\\" ng-mouseleave=\\\"showWarningButton = false\\\" ng-init=\\\"showWarningButton = false\\\"  class=\\\"col-lg-5 ca-warningListStyle\\\">\\n    <button class=\\\"btn btn-xs\\\" style=\\\"float:right;\\\" ng-click=\\\"vm.showWarnings = !vm.showWarnings\\\" ng-show=\\\"showWarningButton\\\"\\n        tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ vm.showWarnings ? 'productimport.hideContents' : 'productimport.showContents' | translate }}\\\" tooltip-popup-delay=\\\"300\\\"\\n        >{{ vm.showWarnings ? 'productimport.hide' : 'productimport.show' | translate }}</button>\\n    <div>\\n        <label style=\\\"float:left; font-weight: bold;\\\">{{ 'productimport.validationwarnings' | translate }}</label>\\n        <div style=\\\"clear: both; height:1px\\\">&nbsp;</div>\\n    </div>\\n    <ul ng-show=\\\"vm.getNumberOfShownWarnings() != 0 && vm.showWarnings\\\">\\n        <li ng-hide=\\\"warning.hide\\\" ng-repeat=\\\"warning in vm.warnings\\\" class=\\\"list-item-vertical-spacing-md\\\">\\n            {{ warning.displayMessage | translate }} ({{warning.fileRows.length}} {{(warning.fileRows.length === 1) ? ('productimport.row' | translate) : ('productimport.rows' | translate)}}) \\n            <button class=\\\"btn btn-xs\\\" ng-click=\\\"vm.selectValidationError(warning)\\\"\\n                tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'productimport.showOnlyRowsWithWarning' | translate }} '{{ warning.displayMessage | translate }}'\\\" tooltip-popup-delay=\\\"300\\\"\\n                > {{'productimport.filter' | translate}} </button>\\n            <button class=\\\"btn btn-xs\\\" ng-click=\\\"vm.hideWarning(warning)\\\"\\n                tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'productimport.hideTheWarning' | translate }} '{{ warning.displayMessage | translate }}'\\\" tooltip-popup-delay=\\\"300\\\"\\n                > {{'productimport.hide' | translate}} </button>\\n            <div class=\\\"list-item-description\\\">{{ 'productimport.suggestion' | translate }}: {{ warning.suggestedSolution | translate }}</div>\\n        </li>\\n    </ul>\\n    <div style=\\\"clear:both; height: 1px;\\\">&nbsp;</div>\\n    <div style=\\\"text-align: right;\\\" ng-show=\\\"vm.showWarnings && vm.hiddenWarningDisplayMessages && vm.hiddenWarningDisplayMessages.length > 0 && showWarningButton\\\">\\n        <button class=\\\"btn btn-xs\\\" ng-click=\\\"vm.resetWarnings()\\\">{{ 'productimport.showAllWarnings' | translate }}</button>\\n    </div>\\n</div>\\n\\n<div style=\\\"max-width:150px; float:left; margin-left:10px;\\\" ng-show=\\\"vm.numberOfFilteredRows > 0\\\">\\n    <button class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"vm.resetFilters()\\\">{{ 'productimport.resetfilter' | translate }}</button>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div style=\\\"clear:both; height:1px;\\\">&nbsp;</div>\\n<div class=\\\"col-lg-12\\\">\\n    <style>\\n        .table-background {\\n            background-color: #fcfcfc;\\n        }\\n        .ui-select-bootstrap>.ui-select-choices, .ui-select-bootstrap>.ui-select-no-choice {\\n            width: inherit;\\n        }\\n    </style>\\n    <table class=\\\"table-hover table-condensed table-readable-compact table-background\\\">\\n        <thead>\\n            <tr>\\n                <th colspan=\\\"{{ vm.displayedColumns.length }}\\\">\\n                    <div style=\\\"display:flex; flex-direction: row; flex-flow: row nowrap; justify-content: space-around; align-items:center;\\\">\\n                        <div style=\\\"flex-grow:0;\\\">\\n                            <span style=\\\"display: block; padding: 5px 5px; float:left; width:150px;\\\">{{ 'productimport.overviewLevel' | translate }}:</span>\\n                            <ca-form-group-row style=\\\"float:left; max-width:450px; min-width: 300px;\\\">\\n                                <ca-singleselect model=\\\"vm.currentGroupingLevel\\\" choices=\\\"vm.groupingLevels\\\" item-renderer=\\\"'label'\\\" mandatory=\\\"true\\\" />\\n                            </ca-form-group-row>\\n                        </div>\\n                        <div style=\\\"flex-grow:1; text-align: center;\\\">\\n                            <div uib-pagination\\n                                boundary-links=\\\"true\\\"\\n                                total-items=\\\"vm.displayedGroups.length\\\"\\n                                items-per-page=\\\"vm.itemsPerPage\\\"\\n                                max-size=\\\"10\\\"\\n                                ng-change=\\\"vm.updatePage()\\\"\\n                                ng-model=\\\"vm.currentPage\\\"\\n                                class=\\\"pagination-sm\\\"\\n                                previous-text=\\\"&lsaquo;\\\"\\n                                next-text=\\\"&rsaquo;\\\"\\n                                first-text=\\\"&laquo;\\\"\\n                                last-text=\\\"&raquo;\\\"\\n                                ng-show=\\\"vm.displayedGroups.length != 0 && vm.displayedGroups.length > vm.itemsPerPage\\\"></div>\\n                        </div>\\n                        <div style=\\\"flex-grow:0; min-width: 250px; text-align:right;\\\">\\n                            <span style=\\\"display: inline-block; padding: 5px 5px;\\\">{{ 'common.resultsPerPage' | translate }}:</span>\\n                            <ui-select ng-model=\\\"vm.itemsPerPage\\\" theme=\\\"bootstrap\\\" class=\\\"fixedMinWidth enterAsTab\\\" style=\\\"float:right; max-width:150px;\\\" enter-as-tab>\\n                                <ui-select-match placeholder=\\\"\\\">{{ $select.selected }}</ui-select-match>\\n                                <ui-select-choices repeat=\\\"item in vm.fixedItemsPerPageChoices\\\">\\n                                    <span>{{ item }}</span>\\n                                </ui-select-choices>\\n                            </ui-select>\\n                            <div style=\\\"clear:both; height:1px;\\\">&nbsp;</div>\\n                        </div>\\n                    </div>\\n                </th>\\n            </tr>\\n            <tr>\\n                <th ng-repeat=\\\"identifier in vm.displayedColumns\\\">\\n                        {{identifier.label | translate}}\\n                        <!-- {{(identifier.editPropertyName === 'purchaseCost' || identifier.editPropertyName === 'salesPrice' || identifier.editPropertyName === 'previousPrice') ? ' (' + vm.tenantCurrency.code + ')' : ''}} -->\\n                </th>\\n            </tr>\\n        </thead>\\n        <tbody>\\n            <tr ng-repeat=\\\"groupRow in vm.currentDisplayedGroups\\\">\\n                <td ng-repeat=\\\"identifier in vm.displayedColumns\\\">\\n                    <!-- Refresh Type -->\\n                    <span ng-if=\\\"identifier.inputElementType === 'refresh'\\\">\\n                        <span class=\\\"text-muted text-xs fa fa-bars\\\" ng-show=\\\"groupRow.numberOfRows > 1\\\"> {{ groupRow.numberOfRows }}</span>\\n                        <i class=\\\"fa fa-spinner fa-spin fa-fw\\\" ng-show=\\\"groupRow.isLoading\\\"></i>\\n                    </span>\\n                    </span>\\n                    <!-- String Type -->\\n                    <span ng-if=\\\"identifier.inputElementType === 'string'\\\">\\n                        <input type=\\\"text\\\"\\n                        class=\\\"form-control no-border no-bg text-sm enterAsTab\\\"\\n                        ng-style=\\\"vm.getRowInputStyle(identifier.editPropertyName, groupRow)\\\"\\n                        style=\\\"border:0px;padding:0px;height:auto;text-overflow:ellipsis\\\"\\n                        ng-model=\\\"groupRow[identifier.editPropertyName]\\\"\\n                        ng-change=\\\"vm.groupRowChanged(groupRow, identifier.editPropertyName)\\\"\\n                        tooltip-placement=\\\"top-left\\\"\\n                        tooltip-append-to-body=\\\"true\\\"\\n                        uib-tooltip=\\\"{{ vm.getInputTooltip(identifier.editPropertyName, groupRow) }}\\\"\\n                        tooltip-popup-delay=\\\"100\\\"\\n                        ng-readonly=\\\"vm.isInputReadOnly(identifier.editPropertyName, groupRow)\\\"\\n                        enter-as-tab />\\n                    </span>\\n                    <!-- Price Type -->\\n                    <span ng-if=\\\"identifier.inputElementType === 'price'\\\">\\n                        <div style=\\\"float:left\\\">\\n                            <span style=\\\"display: inline-block\\\">\\n                                <input type=\\\"text\\\"\\n                                ng-style=\\\"vm.getRowInputStyle(identifier.editPropertyName, groupRow)\\\"\\n                                style=\\\"padding:0px; height:auto; text-overflow: ellipsis; width: 50px;\\\"\\n                                ng-model=\\\"groupRow[identifier.editPropertyName]\\\"\\n                                ng-change=\\\"vm.groupRowChanged(groupRow, identifier.editPropertyName)\\\"\\n                                tooltip-placement=\\\"top-left\\\"\\n                                tooltip-append-to-body=\\\"true\\\"\\n                                uib-tooltip=\\\"{{ vm.getPriceInTenantCurrency(identifier.editPropertyName, groupRow) }}\\\"\\n                                tooltip-popup-delay=\\\"100\\\"\\n                                ng-readonly=\\\"vm.isInputReadOnly(identifier.editPropertyName, groupRow)\\\"\\n                                enter-as-tab />\\n                            </span>\\n                            <span style=\\\"display:inline-block; width: 25px;\\\">\\n                                {{ identifier.editPropertyName == \\\"purchaseCost\\\" ? groupRow.currencyCode : groupRow.tenantCurrencyCode }}\\n                            </span>\\n                        </div>\\n                    </span>\\n\\n                    <!-- Delete Type -->\\n                    <ca-confirm-button confirm-title=\\\"'common.confirmDelete'\\\" on-confirm-pressed=\\\"vm.deleteGroupRow(groupRow)\\\" ng-if=\\\"identifier.inputElementType === 'delete'\\\"></ca-confirm-button>\\n                    <!-- Dropdown string selection/addition type -->\\n                    <div ng-if=\\\"identifier.inputElementType === 'textdropdown'\\\">\\n                        <ca-import-editor-text-dropdown\\n                            selection-options=\\\"identifier.selectionElements\\\"\\n                            group-row=\\\"groupRow\\\"\\n                            edit-property=\\\"identifier.editPropertyName\\\"\\n                            on-selection-changed=\\\"vm.updateValue(groupRow, editProperty, value)\\\"\\n                            filter-function=\\\"vm.filterChoices\\\"\\n                            background-class=\\\"vm.getRowInputClass(identifier.editPropertyName, groupRow)\\\"\\n                            tooltip-placement=\\\"right\\\"\\n                            tooltip-append-to-body=\\\"true\\\"\\n                            uib-tooltip=\\\"{{ vm.getInputTooltip(identifier.editPropertyName, groupRow) }}\\\"\\n                            tooltip-popup-delay=\\\"100\\\"\\n                            tooltip-trigger=\\\"'outsideClick'\\\"\\n                            >\\n                        </ca-import-editor-text-dropdown>\\n                    </div>\\n                    <!-- Multiselect type -->\\n                    <div ng-if=\\\"identifier.inputElementType === 'multiselect'\\\">\\n                        <ca-multiselect\\n                            model=\\\"groupRow[identifier.editPropertyName]\\\"\\n                            choices=\\\"identifier.selectionElements\\\"\\n                            item-renderer=\\\"['fullName']\\\"\\n                            >\\n                        </ca-multiselect>\\n                    </div>\\n                    <!-- label -->\\n                    <span ng-if=\\\"identifier.inputElementType === 'textlabel'\\\">\\n                        {{groupRow[identifier.editPropertyName]}}\\n                    </span>\\n                </td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"vm.showFinalizeDialog()\\\" ng-disabled=\\\"!vm.isAllowedToFinalize()\\\">{{ 'productimport.finalize' + vm.importFile.importType | translate}}</button>\\n        <span>{{ vm.importFile.fileName }} ({{vm.importFile.importDate.substring(0, 10)}}) - {{'productimport.importtype' | translate}}: \\n            {{(vm.importFile.importType == 'product') ? ('productimport.product' | translate) : ''}}\\n            {{(vm.importFile.importType == 'order') ? ('productimport.order' | translate) : ''}}</span>\\n    </div>\\n    <div class=\\\"vbox\\\">\\n        <div class=\\\"row-row\\\">\\n            <div class=\\\"panel panel-default\\\" style=\\\"max-width: 1900px;\\\">\\n                <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.shouldShowValidationErrorsPanel()\\\">\\n                    &nbsp;\\n                </div>\\n                <div class=\\\"col-lg-12\\\">\\n                    <div style=\\\"display:flex; flex-direction: row; flex-flow: row nowrap; justify-content: space-between;\\\">\\n                        <div ng-show=\\\"vm.shouldShowValidationErrorsPanel()\\\" style=\\\"flex-grow:2; margin-left:20px;\\\">\\n                            <ca-import-editor-validation-errors\\n                                validation-errors=\\\"vm.validationErrors\\\"\\n                                select-file-rows=\\\"vm.selectFileRows(fileRows, displayMessage)\\\"\\n                                deselect-file-rows=\\\"vm.resetSelectedImportRows()\\\"\\n                                number-of-filtered-rows=\\\"vm.selectedFileRowIds ? vm.selectedFileRowIds.length : 0\\\"\\n                                validation-error-change-count=\\\"vm.validationErrorChangeCount\\\"></ca-import-editor-validation-errors>\\n                        </div>\\n                        <div style=\\\"flex-grow: 0; text-align: right;\\\">\\n                            <ca-import-editor-summary import-file=\\\"vm.importFile\\\" update-summary=\\\"vm.importUpdateCount\\\"></ca-import-editor-summary>\\n                        </div>\\n                    </div>\\n                </div>\\n                <div class=\\\"col-lg-12\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <table>\\n                            <tr>\\n                                <td>\\n                                    <button ng-click=\\\"vm.saveImportFile()\\\" class=\\\"btn btn-primary\\\"> {{'common.save' | translate}} </button>\\n                                </td>\\n                                <td>\\n                                    <button ng-click=\\\"vm.checkForConnectionWithArticleData()\\\" \\n                                        class=\\\"btn btn-default\\\"\\n                                        ng-disabled=\\\"vm.validationErrors.length === 0\\\"\\n                                        uib-tooltip=\\\"{{'productimport.checkForConnectionWithArticleData' | translate}}\\\"\\n                                        tooltip-placement=\\\"topleft\\\"\\n                                        tooltip-append-to-body=\\\"true\\\"> {{'productimport.checkForConnectionWithArticleDataShort' | translate}}\\n                                    </button>\\n                                </td>\\n                                <td>\\n                                    <button ng-click=\\\"vm.removeIncorrectCharactersFromBarcodes()\\\" class=\\\"btn btn-default\\\"> {{ 'import.cleanbarcodes' | translate}} </button>\\n                                </td>\\n                            </tr>   \\n                        </table>\\n\\n                    </div>\\n                </div>\\n                <div class=\\\"col-lg-12\\\">\\n                    <ca-import-rows-grid\\n                        import-file=\\\"vm.importFile\\\"\\n                        validation-errors=\\\"vm.validationErrors\\\"\\n                        check-results=\\\"vm.dataCheckResults\\\"\\n                        selected-file-row-ids=\\\"vm.selectedFileRowIds\\\"\\n                        tenant-currency=\\\"vm.defaultCurrency\\\"\\n                        on-group-row-changed=\\\"vm.updateImportSummary()\\\"\\n                        validation-error-change-count=\\\"vm.validationErrorChangeCount\\\"\\n                        currencies=\\\"vm.currencies\\\"\\n                        component-registration-handler=\\\"vm.registerImportGridComponent(component)\\\">\\n                    </ca-import-rows-grid>\\n                </div>\\n                <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\\n\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.savePsychologicalPrice()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewPsychologicalPrice\\\"> {{'common.cancel' | translate}} </button>\\n        <span>{{vm.psychologicalPrice.name}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'psychologicalPrice.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.psychologicalPrice.name}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <div ng-class=\\\"{'has-error': !vm.isPsychologicalPriceNameValid()}\\\">\\n                    <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.psychologicalPrice.name\\\" enter-as-tab />\\n                </div>\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'psychologicalPrice.description'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.psychologicalPrice.description}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"description\\\" ng-model=\\\"vm.psychologicalPrice.description\\\" enter-as-tab />\\n            </div>\\n        </ca-form-group-row>\\n        <div class=\\\"row\\\">\\n            <div class=\\\"col-xs-12\\\">\\n                <table class=\\\"table table-condensed\\\" ng-if=\\\"!vm.isEditing\\\">\\n                    <thead>\\n                        <tr>\\n                            <th class=\\\"ca-numeric\\\">{{'common.min' | translate}}</th>\\n                            <th class=\\\"ca-numeric\\\">{{'common.max' | translate}}</th>\\n                            <th class=\\\"ca-numeric\\\">{{'common.value' | translate}}</th>\\n                        </tr>\\n                    </thead>\\n                    <tbody>\\n                        <tr class=\\\"ca-table-listrow\\\" ng-repeat=\\\"priceInterval in vm.psychologicalPrice.priceIntervals | orderBy: 'minValue'\\\">\\n                            <td class=\\\"ca-numeric\\\">{{priceInterval.minValue| number:2}}</td>\\n                            <td class=\\\"ca-numeric\\\">{{priceInterval.maxValue| number:2}}</td>\\n                            <td class=\\\"ca-numeric\\\">{{priceInterval.resultValue| number:2}}</td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n                <table class=\\\"table table-condensed\\\" ng-if=\\\"vm.isEditing\\\">\\n                    <thead>\\n                        <tr>\\n                            <th class=\\\"ca-numeric\\\">{{'common.min' | translate}}</th>\\n                            <th class=\\\"ca-numeric\\\">{{'common.max' | translate}}</th>\\n                            <th class=\\\"ca-numeric\\\">{{'common.value' | translate}}</th>\\n                            <th class=\\\"ca-numeric\\\"><button class=\\\"btn btn-xs btn-warning\\\" ng-click=\\\"vm.clearIntervals()\\\">{{ 'common.clear' | translate}}</button></th>\\n                        </tr>\\n                    </thead>\\n                    <tbody>\\n                        <tr class=\\\"ca-table-newrow\\\">\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control form-control enterAsTab\\\" ng-model=\\\"vm.newInterval.minValue\\\" enter-as-tab /></td>\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control enterAsTab\\\" ng-model=\\\"vm.newInterval.maxValue\\\" enter-as-tab /></td>\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control enterAsTab\\\" ng-model=\\\"vm.newInterval.resultValue\\\" enter-as-tab /></td>\\n                            <td class=\\\"ca-numeric\\\"><button class=\\\"btn btn-sm btn-primary enterAsTab\\\" ng-click=\\\"vm.addInterval(vm.newInterval)\\\">{{ 'common.add' | translate}}</button></td>\\n                        </tr>\\n\\n                        <tr class=\\\"ca-table-editrow\\\" ng-repeat=\\\"priceInterval in vm.psychologicalPrice.priceIntervals | orderBy: 'minValue'\\\">\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control enterAsTab\\\" ng-model=\\\"priceInterval.minValue\\\" enter-as-tab /></td>\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control enterAsTab\\\" ng-model=\\\"priceInterval.maxValue\\\" enter-as-tab /></td>\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control enterAsTab\\\" ng-model=\\\"priceInterval.resultValue\\\" enter-as-tab /></td>\\n                            <td class=\\\"ca-numeric\\\"><button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.removeInterval(priceInterval)\\\">{{ 'common.remove' | translate}}</button></td>\\n                        </tr>\\n\\n                    </tbody>\\n                </table>\\n\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.psychologicalprices.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.psychologicalprices.psychologicalprice', {psychologicalPriceId: psychologicalPrice.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"psychologicalPrice in vm.psychologicalPrices\\\" ng-class=\\\"{'focus m-l-none': psychologicalPrice.id === vm.selectedPricelistId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': psychologicalPrice.id === vm.psychologicalPrice }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{psychologicalPrice.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveSalesChannel()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewSalesChannel\\\"> {{'common.cancel' | translate}} </button>\\n        <span>{{vm.salesChannel.salesChannelCode + \\\" \\\" + vm.salesChannel.salesChannelDescription}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'salesChannel.salesChannelCode'\\\">\\n            <div ng-if=\\\"!vm.isNewSalesChannel\\\">{{vm.salesChannel.salesChannelCode}}</div>\\n            <div ng-if=\\\"vm.isNewSalesChannel\\\">\\n                <div ng-class=\\\"{'has-error': !vm.isSalesChannelCodeValid()}\\\">\\n                    <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"salesChannelCode\\\" ng-model=\\\"vm.salesChannel.salesChannelCode\\\" enter-as-tab />\\n                </div>\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'salesChannel.salesChannelDescription'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.salesChannel.salesChannelDescription}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"salesChannelDescription\\\" ng-model=\\\"vm.salesChannel.salesChannelDescription\\\" />\\n            </div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'salesChannel.country'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.salesChannel.country.name}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.salesChannel.country\\\" choices=\\\"vm.countries\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\" ng-click=\\\"vm.getSalesChannels()\\\" />\\n            </div>\\n        </ca-form-group-row>                \\n        <ca-form-group-row label=\\\"'salesChannel.pricelists'\\\">\\n            <div ng-repeat=\\\"pricelist in vm.salesChannel.pricelists\\\">{{pricelist.pricelistCode + ' '+ pricelist.pricelistName}}</div>\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.saleschannels.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.saleschannels.saleschannel', {salesChannelId: salesChannel.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"salesChannel in vm.salesChannels\\\" ng-class=\\\"{'focus m-l-none': salesChannel.id === vm.selectedBrandId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': salesChannel.id === vm.selectedBrandId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{salesChannel.salesChannelCode}}</span><span class=\\\"pull-right text-ellipsis lg-label\\\">{{salesChannel.salesChannelDescription}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.subcategories.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChanged()\\\"\\n                   placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.subcategories.subcategory', {subCategoryId: subCategory.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"subCategory in vm.subCategories\\\" ng-class=\\\"{'focus m-l-none': subCategory.id === vm.selectedSubCategoryId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': subCategory.id === vm.selectedSubCategoryId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{subCategory.subCategoryCode}}</span><span class=\\\"text-ellipsis lg-label\\\">{{subCategory.subCategoryName}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n    <div class=\\\"row\\\">\\n        <div class=\\\"col-md-12\\\">\\n            <div class=\\\"text-center\\\" ng-show=\\\"vm.totalRows > vm.itemsPerPage\\\">\\n                <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalRows\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"5\\\" ng-change=\\\"vm.pageChanged()\\\"\\n                     ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\">\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<form name=\\\"categoryForm\\\" ng-submit=\\\"vm.save()\\\" >\\n    <div class=\\\"panel panel-default\\\">\\n        <div class=\\\"panel-heading font-bold\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n            <button class=\\\"btn btn-primary\\\" type=\\\"submit\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"categoryForm.$invalid\\\"> {{'common.save' | translate}}  </button>\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNew\\\"> {{'common.cancel' | translate}} </button>\\n            <span> &nbsp;{{vm.subCategory.subCategoryCode + \\\" \\\" + vm.subCategory.subCategoryName}}</span>\\n        </div>\\n        <div class=\\\"panel-body\\\">\\n            <ca-form-group-row label=\\\"'subCategory.subCategoryCode'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.subCategory.subCategoryCode }}</span>\\n                <div ng-class=\\\"{'has-error': categoryForm.subCategoryCode.$invalid && categoryForm.subCategoryCode.$touched}\\\">\\n                    <input name=\\\"subCategoryCode\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.subCategory.subCategoryCode\\\" enter-as-tab required ng-minlength=\\\"1\\\" ng-maxLength=\\\"3\\\" />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"categoryForm.subCategoryCode.$invalid && categoryForm.subCategoryCode.$touched\\\">{{'subCategory.betweenValues' | translate}}</span>\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'subCategory.subCategoryName'\\\">\\n                <span ng-if=\\\"!vm.isEditing\\\">{{ vm.subCategory.subCategoryName }}</span>\\n                <div ng-class=\\\"{'has-error': categoryForm.subCategoryName.$invalid && categoryForm.subCategoryName.$touched}\\\">\\n                    <input name=\\\"subCategoryName\\\" ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.subCategory.subCategoryName\\\" enter-as-tab required />\\n                    <span class=\\\"help-block\\\" ng-show=\\\"categoryForm.subCategoryName.$invalid && categoryForm.subCategoryCode.$touched\\\">{{'subCategory.required' | translate}}</span>\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'subCategory.maingroups'\\\">\\n                <div ng-if=\\\"!vm.isEditing\\\" ng-repeat=\\\"mainGroup in vm.subCategory.mainGroups | orderBy:'name'\\\">{{ mainGroup.mainGroupCode + \\\" \\\" + mainGroup.mainGroupDescription  }}</div>\\n                <div ng-show=\\\"vm.isEditing\\\">\\n                    <ca-multiselect model=\\\"vm.subCategory.mainGroups\\\" choices=\\\"vm.mainGroups\\\" order-by=\\\"'mainGroupCode'\\\" placeholder=\\\"'subCategory.maingroups'\\\" item-renderer=\\\"['mainGroupCode','mainGroupDescription']\\\" />\\n                </div>\\n            </ca-form-group-row>\\n            <ca-form-group-row ng-if=\\\"vm.intrastats.length > 0\\\" label=\\\"'maingroup.intrastatnumber'\\\">\\n                <div ng-if=\\\"!vm.isEditing\\\" class=\\\"editable\\\">\\n                    <div ng-repeat=\\\"intrastat in vm.subCategory.intrastats\\\" uib-tooltip=\\\"{{intrastat.internalDescription}}\\\">{{intrastat.code}}</div>\\n                </div>\\n                <ca-multiselect ng-if=\\\"vm.isEditing\\\" model=\\\"vm.subCategory.intrastats\\\" choices=\\\"vm.intrastats\\\" order-by=\\\"'code'\\\" item-renderer=\\\"['code','internalDescription']\\\" />\\n            </ca-form-group-row>            \\n        </div>\\n    </div>\\n</form>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveVariantGroup()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNew\\\"> {{'common.cancel' | translate}} </button>\\n        <span>{{vm.variantGroup.groupName}}</span>\\n    </div>\\n\\n     <div class=\\\"panel-body\\\">\\n        <div class=\\\"row\\\">\\n\\n            <div class=\\\"col-xs-12\\\">\\n                <table class=\\\"table\\\">\\n                    <thead>\\n                        <tr>\\n                            <th>{{'variantgroup.groupName' | translate}}</td>\\n                            <th>{{'article.variant' | translate}}</td>\\n                        </tr>\\n                    </thead>\\n                    <tbody>\\n                        <tr>\\n                            <td>\\n                                <span ng-if=\\\"!vm.isEditing\\\">{{vm.variantGroup.groupName}}</span>\\n                                <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"vm.variantGroup.groupName\\\" enter-as-tab>\\n                            </td>\\n                            <td>\\n                                <span>{{ vm.variantGroup.variant.variantName }}</span>\\n                                <ca-singleselect ng-if=\\\"vm.isNew\\\" model=\\\"vm.selectedVariant\\\" choices=\\\"vm.variants\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'variantName'\\\" /> \\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n\\n                <table class=\\\"table\\\">\\n                    <thead>\\n                        <tr>\\n                            <th>{{'article.variant' | translate}}</td>\\n                            <th>{{'variantdetail.statisticName' | translate}}</td>\\n                            <th ng-if=\\\"vm.isEditing && vm.variantGroup.variantDetails && vm.variantGroup.variantDetails.length > 1\\\">&nbsp;</th>\\n                        </tr>\\n                    </thead>\\n                    <tbody>\\n                        <tr ng-repeat=\\\"variantDetail in vm.variantGroup.variantDetails | orderBy: 'sortOrder'\\\" >\\n                            <td>\\n                                <span ng-if=\\\"!vm.isEditing\\\">{{variantDetail.variantDetailName}}</span>\\n                                 <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"variantDetail.variantDetailName\\\" enter-as-tab> \\n                            </td>\\n                            <td>\\n                                <span ng-if=\\\"!vm.isEditing\\\">{{variantDetail.statisticName}}</span>\\n                                <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"variantDetail.statisticName\\\" enter-as-tab>\\n                            </td>\\n                            <td><button ng-if=\\\"vm.isEditing && variantDetail.id === -1\\\" class=\\\"btn btn-default btn-sm\\\" type=\\\"button\\\" ng-click=\\\"vm.removeVariantDetail(variantDetail)\\\"> X </button>&nbsp;</td>\\n                        </tr>\\n                         <tr ng-if=\\\"vm.isEditing\\\">\\n                            <td colspan=\\\"3\\\">\\n                                <strong>{{'common.add' | translate}}:</strong><br>\\n                                <ca-multiselect model=\\\"vm.addedVariantDetails\\\" choices=\\\"vm.variantDetails\\\" order-by=\\\"'variantDetailName'\\\" placeholder=\\\"'article.variant'\\\" item-renderer=\\\"['variantDetailName']\\\"/>\\n                            </td>\\n                        </tr> \\n                    </tbody>\\n                </table>\\n            </div>\\n        </div>\\n    </div> \\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.variantgroups.new')\\\">{{'common.new' | translate}}</button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        \\n                        <a ng-click=\\\"$state.go('product.variantgroups.variantgroup', {variantGroupId: variantGroup.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"variantGroup in vm.variantGroups | orderBy: ['variantName','groupName']\\\" ng-class=\\\"{'focus m-l-none': variantGroup.id === vm.selectedVariantGroupId}\\\">\\n                            <div class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': variantGroup.id === vm.selectedVariantGroupId }\\\">\\n                                <div class=\\\"ca-searchlist-detail\\\">{{variantGroup.variantName | uppercase}}</div>\\n                                <div class=\\\"lg-label\\\">{{variantGroup.groupName | uppercase}}</div>\\n                            </div>\\n                        </a>\\n                        \\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n    <div class=\\\"wrapper b-t text-center\\\">\\n        <div class=\\\"text-center\\\" ng-show=\\\"vm.totalItems > vm.itemsPerPage\\\">\\n            <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"5\\\" ng-change=\\\"vm.loadVariantGroups()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"input-group m-b-xxs search-input\\\">\\n        <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n        <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.filter\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n    </div>\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveVariant()\\\" ng-if=\\\"vm.isEditing\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewVariant\\\"> {{'common.cancel' | translate}} </button>\\n        <span>{{vm.variant.variantName}}</span>\\n        <span style=\\\"margin-right: 20px; float: right;\\\">\\n            Visa: <select ng-model=\\\"vm.pageSize\\\" ng-options=\\\"option for option in vm.pageSizeOptions track by option\\\" ng-change=\\\"vm.searchTermChange()\\\">\\n            </select>\\n        </span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <div class=\\\"row\\\">\\n\\n            <div class=\\\"col-xs-12\\\">\\n                <table class=\\\"table\\\" ng-if=\\\"!vm.isEditing\\\">\\n                    <thead>\\n                        <tr>\\n                            <th>\\n                                <span>{{'variantdetail.variantDetailName' | translate}}</span>\\n                            </th>\\n                            <th>\\n                                <span>{{'variantdetail.statisticName' | translate}}</span>\\n                            </th>\\n                            <th>\\n                                <span>{{'variantdetail.sortOrder' | translate}}</span>\\n                            </th>\\n                        </tr>\\n                    </thead>\\n\\n                    <tbody>\\n                        <tr ng-repeat=\\\"variantDetail in vm.variantDetails\\\" >\\n                            <td>{{variantDetail.variantDetailName}}</td>\\n                            <td>{{variantDetail.statisticName}}</td>\\n                            <td>{{variantDetail.sortOrder}}</td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n                <table class=\\\"table\\\" ng-if=\\\"vm.isEditing\\\">\\n                    <thead>\\n                        <tr>\\n                            <th>{{'variantdetail.variantDetailName' | translate}}</th>\\n                            <th>{{'variantdetail.statisticName' | translate}}</th>\\n                            <th>{{'variantdetail.sortOrder' | translate}}</th>\\n                        </tr>\\n                    </thead>\\n\\n                    <tbody>\\n\\n                        <tr ng-repeat=\\\"variantDetail in vm.variantDetails\\\" >\\n                            <td>{{variantDetail.variantDetailName}}</td>\\n                            <td><input type=\\\"text\\\"  ng-model=\\\"variantDetail.statisticName\\\" /></td>\\n                            <td><input type=\\\"text\\\"  ng-model=\\\"variantDetail.sortOrder\\\" /></td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </div>\\n        </div>\\n    </div>\\n    <div class=\\\"wrapper b-t text-center\\\">\\n        <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.pageSize\\\" max-size=\\\"5\\\" ng-change=\\\"vm.searchTermChange()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.variants.variant', {variantId: variant.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"variant in vm.variants\\\" ng-class=\\\"{'focus m-l-none': variant.id === vm.selectedVariantId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': variant.id === vm.selectedVariantId }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{variant.variantName}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.enableEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveVolumeDiscount()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllInformationValid()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing && !vm.isNewVolumeDiscount\\\"> {{'common.cancel' | translate}} </button>\\n        <span>{{vm.volumeDiscount.name}}</span>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'volumeDiscount.name'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.volumeDiscount.name}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"name\\\" ng-model=\\\"vm.volumeDiscount.name\\\" enter-as-tab />\\n            </div>\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'volumeDiscount.quantityGroup'\\\">\\n            <div ng-if=\\\"!vm.isEditing\\\">{{vm.volumeDiscount.quantityGroup.name}}</div>\\n            <div ng-if=\\\"vm.isEditing\\\">\\n                <ca-singleselect model=\\\"vm.volumeDiscount.quantityGroup\\\" choices=\\\"vm.quantityGroups\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\"/>\\n            </div>\\n        </ca-form-group-row>\\n        <div class=\\\"row\\\">\\n            <div class=\\\"col-xs-12\\\">\\n                <table class=\\\"table table-condensed\\\" ng-if=\\\"!vm.isEditing\\\">\\n                    <thead>\\n                        <tr>\\n                            <th class=\\\"ca-numeric\\\">{{'volumeDiscount.minimumQuantity' | translate}}</th>\\n                            <th class=\\\"ca-numeric\\\">{{'volumeDiscount.discountPercent' | translate}}</th>\\n                        </tr>\\n                    </thead>\\n                    <tbody>\\n                        <tr class=\\\"ca-table-listrow\\\" ng-repeat=\\\"limit in vm.volumeDiscount.limits | orderBy: 'minimumQuantity'\\\">\\n                            <td class=\\\"ca-numeric\\\">{{limit.minimumQuantity| number:2}}</td>\\n                            <td class=\\\"ca-numeric\\\">{{limit.discountPercent| number:2}}</td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n                <table class=\\\"table table-condensed\\\" ng-if=\\\"vm.isEditing\\\">\\n                    <thead>\\n                        <tr>\\n                            <th class=\\\"ca-numeric\\\">{{'volumeDiscount.minimumQuantity' | translate}}</th>\\n                            <th class=\\\"ca-numeric\\\">{{'volumeDiscount.discountPercent' | translate}}</th>\\n                            <th class=\\\"ca-numeric\\\"><button class=\\\"btn btn-xs btn-warning\\\" ng-click=\\\"vm.clearLimits()\\\">{{ 'common.clear' | translate}}</button></th>\\n                        </tr>\\n                    </thead>\\n                    <tbody>\\n                        <tr class=\\\"ca-table-newrow\\\">\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control form-control enterAsTab\\\" ng-model=\\\"vm.newLimit.minimumQuantity\\\" enter-as-tab /></td>\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control enterAsTab\\\" ng-model=\\\"vm.newLimit.discountPercent\\\" enter-as-tab /></td>\\n                            <td class=\\\"ca-numeric\\\"><button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.addLimit(vm.newLimit)\\\">{{ 'common.add' | translate}}</button></td>\\n                        </tr>\\n\\n                        <tr class=\\\"ca-table-editrow\\\" ng-repeat=\\\"limit in vm.volumeDiscount.limits | orderBy: 'minValue'\\\">\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control enterAsTab\\\" ng-model=\\\"limit.minimumQuantity\\\" enter-as-tab /></td>\\n                            <td><input type=\\\"number\\\" class=\\\"ca-table-cell ca-numeric form-control enterAsTab\\\" ng-model=\\\"limit.discountPercent\\\" enter-as-tab /></td>\\n                            <td class=\\\"ca-numeric\\\"><button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.removeLimit(limit)\\\">{{ 'common.remove' | translate}}</button></td>\\n                        </tr>\\n\\n                    </tbody>\\n                </table>\\n\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$state.go('product.volumediscounts.new')\\\">\\n                    {{'common.new' | translate}}\\n                </button>\\n            </span>\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div>\\n\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('product.volumediscounts.volumediscount', {volumeDiscountId: volumeDiscount.id})\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"volumeDiscount in vm.volumeDiscounts\\\" ng-class=\\\"{'focus m-l-none': volumeDiscount.id === vm.selectedPricelistId}\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': volumeDiscount.id === vm.volumeDiscount }\\\">\\n                                <span class=\\\"pull-left text-ellipsis sm-label\\\">{{volumeDiscount.name}}</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .orderhead-color{\\n        color:#7266ba;\\n        font-weight:bolder;\\n        font-size: 17px;\\n    }\\n</style>\\n\\n<div ng-click=\\\"vm.collapseHeader = !vm.collapseHeader\\\" class=\\\"orderhead-color\\\">\\n    <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n        <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"vm.collapseHeader\\\"></i>\\n        <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"!vm.collapseHeader\\\"></i>\\n    </span>\\n    <span class=\\\"orderhead-color\\\" ng-show=\\\"vm.collapseHeader\\\">{{ 'resellerorder.showOrderHead' | translate }}</span>\\n    <span class=\\\"orderhead-color\\\" ng-show=\\\"!vm.collapseHeader\\\">{{ 'resellerorder.hideOrderHead' | translate }}</span>\\n</div>\\n\\n<!-- Collapsed reseller order head -->\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; width:75%;\\\" ng-show=\\\"vm.collapseHeader\\\">\\n    <table class=\\\"table table-condensed\\\">\\n        <tr>\\n            <td>{{ 'resellerorder.orderNumber' | translate }}: {{ vm.resellerOrder.orderNumber }} 44</td>\\n            <td>{{'resellerorder.reseller' | translate}}: {{ vm.resellerOrder.reseller }}</td>\\n            <td>{{'resellerorder.status' | translate}}: <span style=\\\"font-weight: bold;\\\">{{ vm.getStatusTranslation(vm.resellerOrder.status) }}</span></td>\\n            <td>{{'resellerorder.createdDate' | translate}}: <span tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ vm.resellerOrder.createdDate | date:'yyyy-MM-dd HH:mm:ss' }}\\\">{{ vm.resellerOrder.createdDate | date:'yyyy-MM-dd' }}</span></td>\\n        </tr>\\n    </table>\\n</div>\\n\\n<!-- Reseller order head -->\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; width:33%;\\\" ng-hide=\\\"vm.collapseHeader\\\">\\n    <div>{{'resellerorder.orderHead' | translate}}:</div>\\n    <table class=\\\"table table-condensed\\\">\\n        <tbody>\\n            <tr>\\n                <td style=\\\"width:150px;\\\">{{ 'resellerorder.orderNumber' | translate }}</td>\\n                <td>{{ vm.resellerOrder.orderNumber }}</td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.status' | translate}}</td>\\n                <td style=\\\"font-weight: bold;\\\">{{ vm.getStatusTranslation(vm.resellerOrder.status) }}</td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.salelocation' | translate}}</td>\\n                <td>{{ vm.resellerOrder.saleLocation }}</td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.warehouse' | translate}}</td>\\n                <td>{{ vm.resellerOrder.warehouse }}</td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.createdDate' | translate}}</td>\\n                <td tooltip-placement=\\\"top-left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ vm.resellerOrder.createdDate | date:'yyyy-MM-dd HH:mm:ss' }}\\\">{{ vm.resellerOrder.createdDate | date:'yyyy-MM-dd' }}</td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.currency' | translate}}</td>\\n                <td>{{ vm.resellerOrder.currencyCode }}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\\n\\n<!-- Reseller information -->\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; width:33%; margin-left:30px;\\\" ng-hide=\\\"vm.collapseHeader\\\">\\n    <div>{{'resellerorder.reseller' | translate}}:</div>\\n    <div>\\n        <table class=\\\"table table-condensed\\\">\\n            <tbody>\\n                <tr>\\n                    <td style=\\\"width:150px;\\\">{{'resellerorder.reseller' | translate}}</td>\\n                    <td>{{ vm.resellerOrder.reseller }}</td>\\n                </tr>\\n                <tr>\\n                    <td>{{'resellerorder.deliveryTerms' | translate}}</td>\\n                    <td>{{ vm.resellerOrder.deliveryTerms }}</td>\\n                </tr>\\n                <tr>\\n                    <td>{{'resellerorder.paymentTerms' | translate}}</td>\\n                    <td>{{ vm.resellerOrder.paymentTerms }}</td>\\n                </tr>\\n                <tr>\\n                    <td>{{'resellerorder.shippingMethod' | translate}}</td>\\n                    <td>{{ vm.resellerOrder.shippingMethod }}</td>\\n                </tr>\\n                <tr>\\n                    <td>{{'resellerorder.resellerPriceList' | translate}}</td>\\n                    <td>{{ vm.resellerOrder.priceList }}</td>\\n                </tr>\\n                <tr>\\n                    <td>{{'pricelist.salesChannel' | translate}}</td>\\n                    <td>{{ vm.resellerOrder.salesChannel }}</td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n</div>\\n\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; min-width:10%; max-width:20%; margin-left:30px;\\\" ng-hide=\\\"vm.collapseHeader\\\">\\n    <div>{{'resellerorder.deliveryadress' | translate}}:</div>\\n    <div>\\n        <table class=\\\"table table-condensed\\\">\\n            <tbody>\\n                <tr>\\n                    <td>{{vm.formatAddress(vm.resellerOrder.deliveryAddress)}}</td>\\n                    <td>\\n                        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.setOrderDeliveryAddress()\\\" ng-if=\\\"vm.canSetOrderDeliveryAddress()\\\"><i class=\\\"fa fa-cog\\\" aria-hidden=\\\"true\\\"></i></button>\\n                    </td>\\n                </tr>\\n                <tr>\\n                    <td colspan=\\\"2\\\">{{vm.formatCityAndCountry(vm.resellerOrder.deliveryAddress)}}</td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n</div>\\n\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; min-width:10%; max-width:20%; margin-left:30px;\\\" ng-hide=\\\"vm.collapseHeader\\\">\\n    <div>{{'resellerorder.invoiceaddress' | translate}}:</div>\\n    <div>\\n        <table class=\\\"table table-condensed\\\">\\n            <tbody>\\n                <tr>\\n                    <td>{{vm.formatAddress(vm.resellerOrder.invoiceAddress)}}</td>\\n                    <td>\\n                        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.setOrderInvoiceAddress()\\\" ng-if=\\\"vm.canSetOrderInvoiceAddress()\\\"><i class=\\\"fa fa-cog\\\" aria-hidden=\\\"true\\\"></i></button>\\n                    </td>\\n                </tr>\\n                <tr>\\n                    <td colspan=\\\"2\\\">{{vm.formatCityAndCountry(vm.resellerOrder.invoiceAddress)}}</td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .breadcrumbsDiv {\\n        padding-left: 0px;\\n        padding-bottom: 10px;\\n    }\\n    a.breadcrumbsLink {\\n        color:#58666e;\\n        padding: 3px;\\n        padding-left: 0px;\\n    }\\n    a.breadcrumbsLink:hover {\\n        color:#aaa;\\n    }\\n    .breadcrumbsDiv span {\\n        padding: 3px;\\n        padding-left: 0px;\\n    }\\n</style>\\n<div class=\\\"breadcrumbsDiv\\\">\\n    <a class=\\\"breadcrumbsLink\\\" ng-click=\\\"vm.transitionToState('resellerorder.resellerordersearch')\\\">{{ 'resellerorder.resellerorders' | translate }}</a>\\n    <span>&gt;</span>\\n    <span>{{ vm.currentPage.order.orderNumber }}</span>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div style=\\\"padding-bottom: 30px;\\\">\\n    <div style=\\\"margin-bottom: 25px;\\\">\\n        <table style=\\\"width: 1000px;  margin-left:25px; padding-right:1%; float: left;\\\">\\n            <tr class=\\\"b-b\\\">\\n                <th style=\\\"width:400px;padding-left:25px\\\">{{'common.search' | translate}} {{'resellerorder.resellerorder' | translate}}</th>\\n                <th style=\\\"width:50px\\\"></th>\\n                <th style=\\\"width:50px\\\"></th>\\n                <th style=\\\"width:50px\\\"></th>\\n                <th style=\\\"width:50px\\\"></th>\\n                <th style=\\\"width:50px\\\"></th>\\n            </tr>\\n            <tr class=\\\"b-b\\\">\\n                <td>\\n                    <div class=\\\"input-group m-b-xxs list-menu\\\" style=\\\"margin-left:10px; float: left\\\">\\n                    <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                    <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\"\\n                        ng-model=\\\"vm.searchTerm.term\\\"\\n                        ng-model-options=\\\"{debounce: 500}\\\"\\n                        ng-change=\\\"vm.filterAllOrders()\\\"\\n                        placeholder=\\\"{{'common.search' | translate}} ({{ 'resellerorder.orderNumber' | translate }}, {{ 'resellerorder.reseller' | translate }}, {{ 'resellerorder.fromlocation' | translate }}, {{ 'resellerorder.warehouse' | translate }})\\\">\\n                    </div>\\n                </td>\\n                <td style=\\\"width:5px\\\"></td>\\n                <td style=\\\"font-size:12px;\\\">\\n                    <button ng-style=\\\"{'visibility' : vm.isFilterOrderForInvoice ? 'hidden' : 'visible'}\\\" style=\\\"margin-top:-1px; margin-left:6px;  margin-right:6px\\\" ng-click=\\\"vm.createNewOrder()\\\" class=\\\"btn btn-default\\\">\\n                        {{'common.new' | translate}}\\n                    </button>\\n                </td>\\n             \\n                <td style=\\\"width:5px\\\"></td>\\n                <td style=\\\"width:50px\\\">\\n                    <button ng-style=\\\"{'visibility' : vm.isFilterOrderForInvoice ? 'hidden' : 'visible'}\\\" style=\\\"margin-top:-1px; margin-left:-1px;\\\" ng-click=\\\"vm.createNewReturnOrder()\\\" class=\\\"btn btn-default\\\">\\n                    {{'common.new' | translate}} {{'resellerorder.resellerreturnordershort' | translate}}\\n                    </button>\\n                </td>\\n                <td style=\\\"width:50px\\\">\\n                <td>\\n                    <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.readyForSale()\\\" ng-hide=\\\"vm.isFilterOrderForInvoice\\\" ng-disabled=\\\"vm.isProcessing\\\">{{ 'customerinvoice.invoice' | translate }}</button>\\n                    <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.readyForSale()\\\" ng-hide=\\\"!vm.isFilterOrderForInvoice\\\" ng-disabled=\\\"vm.isProcessing\\\">{{ 'common.cancel' | translate }}</button>\\n                    <i class=\\\"fa fa-spinner fa-spin fa-fw\\\" ng-show=\\\"vm.isProcessing\\\"></i>\\n                 </td>\\n            </tr>\\n        </table>\\n    </div>\\n\\n    <table ng-style=\\\"{'visibility' : vm.isFilterOrderForInvoice ? 'hidden' : 'visible'}\\\" style=\\\"width: 95%; margin-top: 20px; margin-right:25px; margin-left:25px; padding-right:1%; float: left;\\\">\\n        <tr class=\\\"b-b\\\">\\n            <th colspan=\\\"3\\\" style=\\\"padding-left:5px; overflow: hidden; white-space: nowrap;\\\">{{'common.filter' | translate}} {{'common.all' | translate}}:</th>\\n            <th style=\\\"width:50px\\\"></th>\\n            <th colspan=\\\"6\\\" style=\\\"padding-left:5px\\\">{{'common.filter' | translate}} {{'resellerorder.orderStatus' | translate}}:</th>\\n            <th style=\\\"width:50px\\\"></th>\\n            <th colspan=\\\"4\\\" style=\\\"padding-left:5px\\\">{{'common.filter' | translate}} {{'order.ordertype' | translate}}:</th>\\n            <th style=\\\"width:48%;padding-left:25px\\\"></th>\\n        </tr>\\n        <tr class=\\\"b-b\\\">\\n            <td style=\\\"width:50px\\\"></td>\\n            <td style=\\\"font-size:12px;\\\">{{'common.all' | translate}}:</td>\\n            <td style=\\\"width:20px;padding-top: 3px;\\\"><input type=\\\"checkbox\\\"  ng-model=\\\"vm.filterAll\\\" ng-change=\\\"vm.filterAllOrders(true)\\\" checked></td>\\n            <td style=\\\"width:50px\\\"></td>\\n            <td style=\\\"width:50px\\\"></td>\\n            <td style=\\\"font-size:12px; white-space: nowrap;\\\">{{'resellerorder.statusCreated' | translate}}:</td>\\n            <td style=\\\"width:20px;padding-top: 3px; white-space: nowrap;\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.filterCreated\\\" ng-change=\\\"vm.filterAllOrders()\\\" checked></td>\\n            <td style=\\\"font-size:12px;\\\">{{'resellerorder.statusOpen' | translate}}:</td>\\n            <td style=\\\"width:20px;padding-top: 3px\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.filterOpen\\\" ng-change=\\\"vm.filterAllOrders()\\\" checked></td>\\n            <td style=\\\"font-size:12px; white-space: nowrap;\\\">{{'resellerorder.statusClosed' | translate}}:</td>\\n            <td style=\\\"width:20px;padding-top: 3px\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.filterClosed\\\" ng-change=\\\"vm.filterAllOrders()\\\" checked></td>\\n            <td style=\\\"width:50px\\\"></td>\\n            <td style=\\\"font-size:12px;\\\">{{'order.order' | translate}}:</td>\\n            <td style=\\\"width:20px;padding-top: 3px\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.filterOrder\\\" ng-change=\\\"vm.filterAllOrders()\\\" checked></td>\\n            <td style=\\\"font-size:12px;\\\">{{'order.returnorder' | translate}}:</td>\\n            <td style=\\\"width:20px;padding-top: 3px\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.filterReturnOrder\\\" ng-change=\\\"vm.filterAllOrders()\\\" checked></td>\\n            <td style=\\\"width:300px; \\\"><ca-reseller-order-scanner-navigation init-collapsed=\\\"false\\\" init-focused=\\\"false\\\" navigate-to-state-name=\\\"'resellerorder.manageorders'\\\"> </ca-reseller-order-scanner-navigation></td>\\n        </tr>\\n    </table>\\n</div>\\n<!-- <div class=\\\"col-lg-12 b-t\\\">&nbsp</div> -->\\n\\n<div class=\\\"wrapper text-center\\\">\\n    <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.filterAllOrders()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n</div>\\n<div class=\\\"col-lg-12\\\" style=\\\"float:right; text-align: right;\\\" ng-hide=\\\"vm.isFilterOrderForInvoice\\\">\\n    <button style=\\\"float:left; margin-left:10px\\\" ng-click=\\\"vm.printAllSelectedResellerOrders()\\\" class=\\\"btn btn-sm btn-primary\\\" ng-disabled=\\\"vm.resellerOrderPrintList.length === 0\\\">{{ 'time.print' | translate }}</button>\\n    <div ng-show=\\\"checkall\\\" style=\\\"float:left; margin-left:14px; margin-top:4px\\\">\\n        <input style=\\\"margin-right:6px\\\" type=\\\"checkbox\\\" ng-model=\\\"checkeverything\\\"> {{ 'common.include' | translate }} {{ 'common.all' | translate }}? (<b>{{ vm.getAllCheckedToPrintList() }}</b> {{ 'common.totalResults' | translate }})\\n    </div>\\n</div>\\n<div class=\\\"col-lg-12\\\" style=\\\"float:right; text-align: right;\\\" ng-hide=\\\"!vm.isFilterOrderForInvoice\\\">\\n    <button style=\\\"float:left; margin-left:10px\\\" ng-click=\\\"vm.generateSales()\\\" class=\\\"btn btn-sm btn-primary\\\" ng-disabled=\\\"vm.resellerOrderSaleList.length === 0 || vm.isProcessing\\\">{{ 'common.confirm' | translate }}</button>\\n    <div ng-show=\\\"checkall\\\" style=\\\"float:left; margin-left:14px; margin-top:4px\\\">\\n        <input style=\\\"margin-right:6px\\\" type=\\\"checkbox\\\" ng-model=\\\"checkeverything\\\"> {{ 'common.include' | translate }} {{ 'common.all' | translate }}? (<b>{{ vm.getAllCheckedToSaleList() }}</b> {{ 'common.totalResults' | translate }})\\n    </div>\\n</div>\\n<div class=\\\"col-lg-12\\\">\\n    <table class=\\\"table table-condensed\\\">\\n        <thead>\\n            <td style=\\\"width:5%; text-align:center;\\\" ><input ng-disabled=\\\"vm.resellerOrders.length === 0\\\" type=\\\"checkbox\\\" style=\\\"margin-top:10px\\\" ng-model=\\\"checkall\\\" tooltip-placement=\\\"left\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{'common.select' | translate}} {{'order.allorders' | translate}}\\\" ng-click=\\\"vm.isFilterOrderForInvoice ? vm.checkAllToSaleList(checkall): vm.checkAllToPrintList(checkall)\\\"></th>\\n            <th style=\\\"padding-left:5px; white-space: nowrap;\\\">{{'resellerorder.orderNumber' | translate}}</th>\\n            <th style=\\\"padding-left:5px; white-space: nowrap;\\\">{{'resellerorder.orderReference' | translate}}</th>\\n            <th style=\\\"padding-right:0px;padding-left:0px;\\\">{{'stocktransaction.transactionType' | translate}}</th>\\n            <th>{{'resellerorder.orderStatus' | translate}}</th>\\n            <th>{{'article.articlecollection' | translate}}</th>\\n            <th>{{'resellerorder.reseller' | translate}}</th>\\n            <th>{{'resellerorder.fromlocation' | translate}}</th>\\n            <th>{{'resellerorder.warehouse' | translate}}</th>\\n            <th uib-tooltip=\\\"{{ 'resellerorder.orderedQuantitySum' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">\\n                {{'resellerorder.orderedQuantitySumShort' | translate}}</th>            \\n            <th uib-tooltip=\\\"{{ 'resellerorder.fulfillableQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">\\n                {{ 'resellerorder.fulfillableQuantityShort' | translate }}\\n            </th>\\n            <th uib-tooltip=\\\"{{ 'resellerorder.fulfilledQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">\\n                {{ 'resellerorder.fulfilledQuantityShort' | translate }}\\n            </th>\\n            <th>{{'resellerorder.invoiced' | translate}}</th>\\n            <th style=\\\"white-space: nowrap;\\\">{{'resellerorder.notinvoiced' | translate}}</th>\\n            <th>{{'order.orderDate' | translate}}</th>\\n            <th></th>\\n        </thead>\\n        <tbody ng-repeat=\\\"order in vm.resellerOrders\\\">\\n            <tr ng-class=\\\"{ caRowSelected: order.id === vm.selectedOrder.id }\\\">\\n                <td style=\\\"width:5%; vertical-align: middle; text-align:center;\\\" ><input \\n                    type=\\\"checkbox\\\" ng-checked=\\\"checkall\\\" ng-click=\\\"vm.isFilterOrderForInvoice? vm.checkToSaleList(order.id) : vm.checkToPrintList(order.id)\\\">\\n                <td style=\\\"padding-left:5px; vertical-align: middle;\\\"><a ng-click=\\\"vm.selectOrder(order)\\\" class=\\\"ca-celllink\\\">{{ order.orderNumber }}</a></td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.orderReference }}</td>\\n                <td style=\\\"padding-right:0px;padding-left:0px; vertical-align: middle;\\\">{{ vm.getOrderType(order.orderType)}}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ vm.getStatusTranslation(order.status) }}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.collectionName }}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.resellerCompanyName }}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.saleLocationName }}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.warehouseName }}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.totalLineItemQuantity}}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.totalLineItemFulfillableQuantity }}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.totalLineItemFulfilledQuantity }}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.totalInvoicedQuantity }}</td>\\n                <td style=\\\"vertical-align: middle;\\\">{{ order.totalReadyToBeInvoicedQuantity }}</td>\\n                <td style=\\\"vertical-align: middle;\\\" tooltip-placement=\\\"bottom\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ order.createdDate | date:'yyyy-MM-dd HH:mm:ss' }}\\\">{{ order.createdDate | date:'yyyy-MM-dd' }}</td>\\n                <td style=\\\"white-space: nowrap; vertical-align: middle;\\\">\\n                    <button class=\\\"btn btn-warning btn-xs\\\" ng-style=\\\"{'visibility' : vm.disableMakeReturnOrder(order) ? 'hidden' : 'visible'}\\\"  ng-click=\\\"vm.createReturnOrderFromOrder(order)\\\">\\n                        <i class=\\\"fa fa-recycle\\\" tooltip-placement=\\\"bottom\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{'common.new' | translate}} {{'resellerorder.resellerreturnordershort' | translate}}\\\" aria-hidden=\\\"true\\\"></i>\\n                    </button>\\n                    <button class=\\\"btn btn-primary btn-xs\\\" ng-click=\\\"vm.printSelectedResellerOrder(order.id)\\\">\\n                        <i class=\\\"fa fa-print\\\" tooltip-placement=\\\"bottom\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'time.print' | translate }}\\\" aria-hidden=\\\"true\\\"></i>\\n                    </button>\\n                    <button class=\\\"btn btn-danger btn-xs\\\" ng-style=\\\"{'visibility' : vm.disableDeleteOrder(order) ? 'hidden' : 'visible'}\\\" ng-click=\\\"vm.deleteResellerOrder(order)\\\">\\n                        <i class=\\\"fa fa-trash\\\" tooltip-placement=\\\"bottom\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.remove' | translate }}\\\" aria-hidden=\\\"true\\\"></i>\\n                    </button>\\n                </td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .breadcrumbsDiv {\\n        padding-left: 0px;\\n        padding-bottom: 10px;\\n    }\\n    a.breadcrumbsLink {\\n        color:#58666e;\\n        padding: 3px;\\n        padding-left: 0px;\\n    }\\n    a.breadcrumbsLink:hover {\\n        color:#aaa;\\n    }\\n    .breadcrumbsDiv span {\\n        padding: 3px;\\n        padding-left: 0px;\\n    }\\n</style>\\n<div class=\\\"breadcrumbsDiv\\\">\\n    <a class=\\\"breadcrumbsLink\\\" ng-click=\\\"vm.transitionToState('resellerorder.resellerordersearch')\\\">Återförsäljarorder</a>\\n    <span>&gt;</span>\\n    <span>{{ vm.currentPage.order.orderNumber }}</span>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-lg-12\\\" ng-show=\\\"!vm.initCollapsed\\\">\\r\\n    <input id=\\\"resellerOrderScannerNavigationField\\\" type=\\\"text\\\" class=\\\"form-control input-sm b-b no-bg text-md\\\" ng-model=\\\"vm.scannerInput\\\" placeholder=\\\"{{'order.scan' | translate}}\\\">\\r\\n</div>\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n\\n    <div ui-view=\\\"\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<!-- Reseller order head -->\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; width:33%;\\\" >\\n    <div>{{'resellerorder.orderHead' | translate}}:</div>\\n    <table class=\\\"table table-condensed\\\">\\n        <tbody>\\n            <tr>\\n                <td>{{'resellerorder.salelocation' | translate}}</td>\\n                <td><ca-singleselect model=\\\"vm.selectedSaleLocation\\\" choices=\\\"vm.stores\\\" order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\" ></ca-singleselect></td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.warehouse' | translate}}</td>\\n                <td><ca-singleselect model=\\\"vm.selectedWarehouse\\\" choices=\\\"vm.warehouses\\\" order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\" ></ca-singleselect></td>\\n            </tr>\\n            <tr>\\n                <td>{{'article.collection' | translate}}</td>\\n                <td><ca-singleselect model=\\\"vm.selectedCollection\\\" choices=\\\"vm.collections\\\" order-by=\\\"'collectionDescription'\\\" item-renderer=\\\"'collectionDescription'\\\" filter-by=\\\"['collectionDescription']\\\" /></td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.orderReference' | translate}}</td>\\n                <td><input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                    type=\\\"text\\\"\\n                    placeholder=\\\"{{ 'resellerorder.externalOrderNumber' | translate }} ({{ 'common.optional' | translate }})\\\"\\n                    ng-model=\\\"vm.resellerOrder.externalOrderNumber\\\" /></td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\\n\\n<!-- Reseller information -->\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; width:33%; margin-left:30px;\\\">\\n    <div>{{'resellerorder.reseller' | translate}}:</div>\\n    <div>\\n        <table class=\\\"table table-condensed\\\">\\n            <tbody>\\n                <tr>\\n                    <td>{{'resellerorder.reseller' | translate}}</td>\\n                    <td><ca-singleselect model=\\\"vm.selectedReseller\\\" choices=\\\"vm.resellers\\\" order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\" ></ca-singleselect></td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div class=\\\"col-lg-12\\\">\\n                            <style>\\n                                div.ca-hover-background:hover {\\n                                    background-color: #f6f6f6;\\n                                }\\n                            </style>\\n                            <div  class=\\\"b-t b-b\\\" style=\\\"margin-left: 0px;margin-right: 0px; margin-bottom: 25px;\\\">\\n                                <button style=\\\"margin-top:-1px; margin-left:4px;\\\" ng-click=\\\"vm.createNewReturnOrder()\\\" class=\\\"btn btn-default\\\">\\n                                    {{'common.new' | translate}} {{'resellerorder.resellerreturnordershort' | translate}}</button>\\n                            </div>\\n                            <div style=\\\"border-bottom: 1px solid darkgray\\\">\\n                                <h3>{{'resellerorder.createresellerorder' | translate}}</h3>\\n\\n                                <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                                    <span class=\\\"input-group-addon input-sm no-border no-bg\\\" style=\\\"text-align: left; width: 100%;\\\">\\n                                        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.createOrderHeader()\\\" ng-disabled=\\\"!vm.canCreateOrderHeader()\\\">{{ 'resellerorder.createOrder' | translate }}</button>\\n                                    </span>\\n                                </div>\\n                            </div>\\n                            <div style=\\\"margin-top:20px;\\\">\\n                                <create-reseller-order-header reseller-order=\\\"vm.resellerOrder\\\"></create-reseller-order-header>\\n\\n                                <div style=\\\"clear:both; height: 1px\\\">&nbsp;</div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\n<style>\\n    .checkbox-size{\\n        transform: scale(1.2);\\n    }\\n    .greyBackground:hover {\\n        background-color:#f3f3f3;\\n    }\\n    .greyBackground td:hover {\\n        background-color: #eaeaea;\\n    }\\n    .right-align {\\n        text-align: right;\\n    }\\n    .fontBold {\\n        font-weight: bold;\\n    }\\n\\n    .btn-container{\\n        display: flex; \\n        flex-direction: row;\\n        justify-content: flex-end;\\n        width:100%;\\n    }\\n    .date-container{\\n        display: flex; \\n        flex-direction: columns;\\n    }\\n    .all-checkbox-container{\\n        display: flex;\\n        flex-direction: row;\\n    }\\n    .all-date-container{\\n        display: flex;\\n        flex-direction: column;\\n    }\\n\\n    .label-date-container{\\n        display: flex;\\n        flex-direction: column;\\n    }\\n    .checkbox-container{\\n        display:flex;\\n        flex-direction: row; \\n    }\\n\\n    .label-container{\\n        margin-right: 10px;\\n    }\\n    .label-checkbox-spacing{\\n        margin-bottom: 10px;\\n        margin-top: 25px;\\n    }\\n\\n</style>\\n<div class=\\\"col-sm-12\\\">\\n    <table class=\\\"table full-width table-hover\\\">\\n        <thead>\\n            <tr>\\n                <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n                <th>{{ 'resellerorder.articleName' | translate }}</th>\\n                <th>{{ 'resellerorder.variant1' | translate }}</th>\\n                <th>{{ 'resellerorder.supplier' | translate }}</th>\\n                <th tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\"\\n                    uib-tooltip=\\\"{{ 'resellerorder.stockQuantity' | translate }}\\\">\\n                    {{ 'resellerorder.stockQuantityShort' | translate }}</th>\\n                <th tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\"\\n                    uib-tooltip=\\\"{{ 'resellerorder.unfulfilledQuantity' | translate }}\\\">\\n                    {{ 'resellerorder.unfulfilledQuantityShort' | translate }}</th>\\n            </tr>\\n        </thead>\\n        <tbody>\\n            <tr>\\n                <td>{{ vm.selectedProduct.displayArticleNumber }}</td>\\n                <td>{{ vm.selectedProduct.articleName }}</td>\\n                <td>{{ vm.selectedProduct.variantDetail1Name }}</td>\\n                <td>{{ vm.selectedProduct.supplier }}</td>\\n                <td>{{ vm.selectedProduct.stockQuantity }}</td>\\n                <td>{{ vm.selectedProduct.unfulfilledQuantity }}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n\\n    <table class=\\\"table-full-width table-hover\\\">\\n        <thead ng-if=\\\"vm.selectedProduct.variants && vm.selectedProduct.variants.length > 0\\\">\\n            <tr style=\\\"margin-bottom: 20px;\\\"> \\n                <th style=\\\"min-width: 100px;\\\">{{ 'resellerorder.orderNumber' | translate }}</th>\\n                <th style=\\\"min-width: 100px;\\\">{{ 'resellerorder.reseller' | translate }}</th>\\n                <th style=\\\"min-width: 100px;\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.resellerPriority' | translate }}\\\">{{ 'resellerorder.resellerPriorityShort' | translate }}</th>\\n                <th style=\\\"min-width: 100px;\\\">Kund</th>\\n                <th style=\\\"min-width: 100px;\\\">Antal</th>\\n                <th style=\\\"min-width: 100px;\\\">{{'order.planneddeliverydate' | translate}}</th>\\n                \\n                \\n            </tr>\\n        </thead>\\n        <tbody ng-if=\\\"!vm.selectedProduct.variants || vm.selectedProduct.variants.length === 0\\\">\\n            <tr class=\\\"greyBackground\\\">\\n                <td colspan=\\\"7\\\" style=\\\"font-style: italic; text-align: center;\\\">{{ 'resellerorder.allRowsMustHaveMinimumAvailableStock' | translate }}</td>\\n            </tr>\\n        </tbody>\\n        <div class=\\\"all-checkbox-container\\\">\\n            <div class=\\\"checkbox-container label-checkbox-spacing\\\" >\\n                <label class=\\\"label-container\\\"style=\\\"font-size: 17px;margin-left:20px\\\"> {{'common.all' | translate}}</label>\\n                <input class=\\\"checkbox-size\\\" type=\\\"checkbox\\\" style=\\\" margin-top: 6px; margin-right: 165px;\\\" ng-model=\\\"vm.IsChecked\\\" ng-init =\\\"vm.IsChecked =false\\\">\\n            </div>\\n           \\n            <div class=\\\"label-date-container\\\" style=\\\"margin-bottom: 40px;\\\">\\n                <label class=\\\"label-container\\\"style=\\\"font-size: 17px;margin-bottom:5px\\\"> {{'resellerorder.deliveryDate' | translate}}</label>\\n                <wj-input-date\\n                        value=\\\"vm.allDeliveryDate\\\"\\n                        format=\\\"yyyy-MM-dd\\\"\\n                        style=\\\"width:300px\\\"\\n                        id=\\\"deliveryDate\\\"\\n                        ng-disabled=\\\"!vm.IsChecked\\\"\\n                        ng-model=\\\"vm.allDeliveryDate\\\"> \\n                </wj-input-date>\\n            </div> \\n        </div>\\n      \\n        <tbody>\\n                <tr ng-repeat=\\\"displayItem in vm.displayItems\\\" class=\\\"greyBackground\\\">\\n                    <td>\\n                        <a ng-click=\\\"vm.goToOrder(variant.orderId)\\\" class=\\\"ca-celllink\\\">{{ displayItem.orderNumber }}</a>\\n                    </td>\\n                    <td>{{ displayItem.resellerName }}</td>\\n                    <td>{{ displayItem.resellerPriority.toUpperCase() }}</td> \\n                    <td>{{ displayItem.tenantName }}</td>                  \\n                    <td>{{ displayItem.quantity }}</td>\\n                    <td> \\n                        <div>\\n                            <wj-input-date\\n                                    value=\\\"displayItem.deliveryDate\\\"\\n                                    format=\\\"yyyy-MM-dd\\\"\\n                                    style=\\\"width:300px\\\"\\n                                    ng-disabled=\\\"vm.IsChecked\\\">\\n                            </wj-input-date>\\n                        </div> \\n                    </td>\\n                </tr>\\n            </tr> \\n        </tbody>\\n    </table>\\n    <div class=\\\"btn-container\\\">\\n        <button class=\\\"btn btn-primary\\\"         \\n            ng-click=\\\"vm.applyDeliveryDate()\\\">\\n            {{ 'common.confirm' | translate }}\\n        </button> \\n    </div>   \\n    <!-- ng-disabled=\\\"!vm.canApplyFulfillment()\\\"\\n    ng-click=\\\"vm.applyFulfillment()\\\">       -->\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .createVariantFulfillmentDialogServiceController-size {\\n        width:90%;\\n    }\\n    .modal-super {\\n        width: 90%;\\n        max-width: 1200px;\\n    }\\n</style>\\n<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">\\n        Bekräfta Leveransdatum\\n        <!-- {{'resellerorder.applyFulfillment' | translate}} -->\\n        <span class=\\\"pull-right\\\">\\n            <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"\\n                ng-click=\\\"vm.closeModal(false)\\\"\\n                uib-tooltip=\\\"{{'common.cancel' | translate}}\\\"\\n                tooltip-placement=\\\"left\\\"\\n                ></i>\\n        </span>\\n        <div style=\\\"height: 1px; clear:both\\\">&nbsp;</div>\\n    </div>\\n    <div class=\\\"body bg-gray\\\">\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <create-resellerorder-delivery-date-variants\\n                selected-product=\\\"vm.fulfillableProduct\\\"\\n                selected-warehouse=\\\"vm.selectedWarehouse\\\"\\n                minimum-available-stock=\\\"vm.minimumAvailableStock\\\"\\n                on-applied-fulfillment=\\\"vm.fulfillmentApplied(itemsToFulfill)\\\">\\n            </create-resellerorder-delivery-date-variants>\\n        </div>\\n   \\n        <div style=\\\"clear:both\\\">&nbsp;</div>\\n<!-- \\n        <div style=\\\"height: 1px; clear:both\\\">&nbsp;</div> --> \\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .createVariantFulfillmentDialogServiceController-size {\\n        width:90%;\\n    }\\n    .modal-super {\\n        width: 90%;\\n        max-width: 1200px;\\n    }\\n</style>\\n<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">\\n        {{'resellerorder.applyFulfillment' | translate}}\\n        <span class=\\\"pull-right\\\">\\n            <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"\\n                ng-click=\\\"vm.closeModal(false)\\\"\\n                uib-tooltip=\\\"{{'common.cancel' | translate}}\\\"\\n                tooltip-placement=\\\"left\\\"\\n                ></i>\\n        </span>\\n        <div style=\\\"height: 1px; clear:both\\\">&nbsp;</div>\\n    </div>\\n    <div class=\\\"body bg-gray\\\">\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <create-resellerorder-fulfillment-variants\\n                selected-product=\\\"vm.fulfillableProduct\\\"\\n                selected-warehouse=\\\"vm.selectedWarehouse\\\"\\n                minimum-available-stock=\\\"vm.minimumAvailableStock\\\"\\n                on-applied-fulfillment=\\\"vm.fulfillmentApplied(itemsToFulfill)\\\">\\n            </create-resellerorder-fulfillment-variants>\\n        </div>\\n\\n        <div style=\\\"clear:both\\\">&nbsp;</div>\\n<!-- \\n        <div style=\\\"height: 1px; clear:both\\\">&nbsp;</div> -->\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .greyBackground:hover {\\n        background-color:#f3f3f3;\\n    }\\n    .greyBackground td:hover {\\n        background-color: #eaeaea;\\n    }\\n    .right-align {\\n        text-align: right;\\n    }\\n    .fontBold {\\n        font-weight: bold;\\n    }\\n    .row-container{\\n        display:flex; \\n        flex-direction: row;\\n        justify-content: space-between;\\n    \\n    }\\n    .options-container{\\n        display:flex;\\n        flex-direction: row; \\n\\n    }\\n\\n    .options-margin{\\n        margin-top: 15px;\\n    }\\n    .confirm-btn-align{\\n        display:flex; \\n        flex-direction: row-reverse;\\n        \\n    }\\n</style>\\n<div>\\n   \\n    <table class=\\\"table full-width table-hover\\\">\\n        <thead>\\n            <tr>\\n                <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n                <th>{{ 'resellerorder.articleName' | translate }}</th>\\n                <th>{{ 'resellerorder.variant1' | translate }}</th>\\n                <th>{{ 'resellerorder.supplier' | translate }}</th>\\n                <th tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\"\\n                    uib-tooltip=\\\"{{ 'resellerorder.stockQuantity' | translate }}\\\">\\n                    {{ 'resellerorder.stockQuantityShort' | translate }}</th>\\n                <th tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\"\\n                    uib-tooltip=\\\"{{ 'resellerorder.unfulfilledQuantity' | translate }}\\\">\\n                    {{ 'resellerorder.unfulfilledQuantityShort' | translate }}</th>\\n            </tr>\\n        </thead>\\n        <tbody>\\n            <tr>\\n                <td>{{ vm.selectedProduct.displayArticleNumber }}</td>\\n                <td>{{ vm.selectedProduct.articleName }}</td>\\n                <td>{{ vm.selectedProduct.variantDetail1Name }}</td>\\n                <td>{{ vm.selectedProduct.supplier }}</td>\\n                <td>{{ vm.selectedProduct.stockQuantity }}</td>\\n                <td>{{ vm.selectedProduct.unfulfilledQuantity }}</td>\\n            </tr>\\n        </tbody>\\n    </table>\\n    \\n    <div class=\\\"options-container\\\">\\n\\n        <table class =\\\"table full-width table-hover\\\">\\n            <thead ng-if=\\\"vm.selectedProduct.variants && vm.selectedProduct.variants.length > 0\\\">\\n                <tr>\\n                    <th style=\\\"min-width: 100px;\\\"></th>  \\n                    <th style=\\\"min-width: 100px;\\\">{{ 'resellerorder.orderNumber' | translate }}</th>\\n                    <th style=\\\"min-width: 100px;\\\">{{ 'resellerorder.reseller' | translate }}</th>\\n                    <th style=\\\"min-width: 100px;\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.resellerPriority' | translate }}\\\">{{ 'resellerorder.resellerPriorityShort' | translate }}</th>\\n                    <th ng-repeat=\\\"variantName in vm.selectedProduct.variantList\\\">\\n                        {{ variantName.variant2DetailName  }}\\n                    </th>   \\n                          \\n                </tr>\\n            </thead>\\n            <tbody ng-if=\\\"!vm.selectedProduct.variants || vm.selectedProduct.variants.length === 0\\\">\\n                <tr class=\\\"greyBackground\\\">\\n                    <td colspan=\\\"7\\\" style=\\\"font-style: italic; text-align: center;\\\">{{ 'resellerorder.allRowsMustHaveMinimumAvailableStock' | translate }}</td>\\n                </tr>\\n            </tbody>\\n            <tbody>\\n                <tr ng-repeat=\\\"variant in vm.selectedProduct.variants\\\" class=\\\"greyBackground \\\">\\n                    <td style=\\\"padding-left:5px;\\\">\\n                        <div class=\\\"row-container\\\"> \\n                            <label style=\\\"padding-right:0px\\\" class=\\\"i-checks m-t-xs\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.keepRemainder' | translate }}\\\">\\n                                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"variant.keepRemainder\\\" />\\n                                <i></i>\\n                            </label>\\n                            <!-- <div style=\\\"height: 1px; clear: both;\\\">&nbsp;</div> -->\\n                            <button ng-click=\\\"vm.clearRowQuantities(variant)\\\" class=\\\"btn btn-default\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.clearRowQuantities' | translate }}\\\"><i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i></button>\\n                            <button ng-click=\\\"vm.resetRowQuantities(variant)\\\" ng-disabled=\\\"!vm.canResetRowQuantities(variant)\\\" class=\\\"btn btn-default\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.resetRowQuantities' | translate }}\\\"><i class=\\\"fa fa-refresh\\\" aria-hidden=\\\"true\\\"></i></button>\\n                        </div>\\n                    </td>\\n                    <td>\\n                        <a ng-click=\\\"vm.goToOrder(variant.orderId)\\\" class=\\\"ca-celllink\\\">{{ variant.orderNumber }}</a>\\n                    </td>\\n                    <td>{{ variant.resellerName }}</td>\\n                    <td>{{ variant.resellerPriority.toUpperCase() }}</td>\\n                    <td ng-repeat=\\\"lineItem in variant.lineItems\\\" class=\\\"right-align\\\"style=\\\"padding-right: 0px\\\">\\n                        <input type=\\\"number\\\" ng-model=\\\"lineItem.fulfillableQuantity\\\" ng-hide=\\\"lineItem.isFake\\\" class=\\\"width-50 fulfillable-quantity-input enterAsTab\\\" enter-as-tab disabled>\\n                        <input type=\\\"number\\\" ng-model=\\\"lineItem.quantity\\\" ng-hide=\\\"lineItem.isFake\\\" class=\\\"width-50 quantity-input enterAsTab\\\" ng-change=\\\"vm.preventInputLessThanZero(lineItem)\\\" enter-as-tab>\\n                        <div style=\\\"height: 1px; clear:both;\\\">&nbsp;</div>\\n                    </td>\\n                  \\n                </tr>\\n                <tr class=\\\"greyBackground\\\">\\n                    <td style=\\\"padding-left:5px;\\\">\\n                        <div class=\\\"row-container\\\"> \\n                            \\n                        </div>\\n                    </td>\\n                    <td colspan=\\\"3\\\" class=\\\"right-align\\\">{{ 'resellerorder.availableStockQuantity' | translate }}:</td>\\n                    <td ng-repeat=\\\"variantName in vm.selectedProduct.variantNames\\\" class=\\\"right-align\\\">\\n                        <input type=\\\"number\\\" class=\\\"fulfillable-quantity-input clean-look-input\\\" disabled ng-value=\\\"\\\">\\n                        <input type=\\\"number\\\" class=\\\"fulfillable-quantity-input clean-look-input\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.stockQuantity' | translate }}\\\" disabled ng-value=\\\"vm.getStockQuantity(variantName)\\\">\\n                    </td>\\n                    <td colspan=\\\"3\\\">&nbsp;</td>\\n                </tr>\\n                <tr class=\\\"greyBackground\\\">\\n                    <td style=\\\"padding-left:5px;\\\">\\n                        <div class=\\\"row-container\\\"> \\n                            \\n                        </div>\\n                    </td>\\n                    <td colspan=\\\"3\\\" class=\\\"right-align\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.orderedQuantitySum' | translate }}\\\">{{ 'resellerorder.orderedQuantitySumShort' | translate }}:</td>\\n                    <td ng-repeat=\\\"variantName in vm.selectedProduct.variantNames\\\" class=\\\"right-align\\\">\\n                        <span class=\\\"width-50 fulfillable-quantity-input clean-look-input\\\" style=\\\"padding-right:15px\\\">{{ vm.getFulfillableQuantitySum(variantName) }}</span>\\n                        <span class=\\\"width-50 fulfillable-quantity-input clean-look-input\\\" style=\\\"padding-right:15px\\\">{{ vm.getQuantitySum(variantName) }}</span>\\n                    </td>\\n                    <td colspan=\\\"3\\\">&nbsp;</td>\\n                </tr>\\n                <tr class=\\\"greyBackground\\\">\\n                    <td style=\\\"padding-left:5px;\\\">\\n                        <div class=\\\"row-container\\\"> \\n                            \\n                        </div>\\n                    </td>\\n                    <td colspan=\\\"3\\\" class=\\\"right-align fontBold\\\">{{ 'resellerorder.stockQuantityAfterFulfillment' | translate }}:</td>\\n                    <td ng-repeat=\\\"variantName in vm.selectedProduct.variantNames\\\" class=\\\"right-align fontBold\\\">\\n                        <input type=\\\"number\\\" class=\\\"fulfillable-quantity-input clean-look-input\\\" disabled>\\n                        <span\\n                            class=\\\"fulfillable-quantity-input clean-look-input\\\"\\n                            style=\\\"padding-right:15px\\\"\\n                            ng-class=\\\"(vm.getDifference(variantName) < 0) ? 'red-difference' : ''\\\">\\n                            {{ vm.formatDifference(vm.getDifference(variantName)) }}</span>\\n                    </td>\\n                </tr>\\n            </tbody>\\n        </table> \\n    </div>\\n<div class=\\\"confirm-btn-align\\\" colspan=\\\"3\\\" style=\\\"padding-left:5px; text-align: right;\\\">\\n    <button class=\\\"btn btn-default\\\"\\n        ng-show=\\\"!vm.canApplyFulfillment()\\\"\\n        ng-disabled=\\\"!vm.canApplyFulfillment()\\\"\\n        ng-click=\\\"vm.applyFulfillment()\\\"\\n        uib-tooltip=\\\"{{ vm.getApplyFulfillmentTooltipText() }}\\\"\\n        tooltip-append-to-body=\\\"true\\\">\\n        {{ 'common.confirm' | translate }}\\n    </button>\\n    <button class=\\\"btn btn-success\\\"\\n        ng-show=\\\"vm.canApplyFulfillment()\\\"\\n        ng-click=\\\"vm.applyFulfillment()\\\">\\n        {{ 'common.confirm' | translate }}\\n    </button>\\n</div>                   \\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n\\n    .fulfillable-quantity-input {\\n        margin: 0;\\n        width: 50%;\\n        float: left;\\n    }\\n\\n    .quantity-input {\\n        margin: 0;\\n        width: 50%;\\n        float: left;\\n    }\\n\\n    .deselect-warehouse-btn {\\n        float: right;\\n    }\\n\\n    .red-difference {\\n        color: red;\\n    }\\n\\n    .right-align {\\n        text-align: right;\\n    }\\n\\n    .right-align input {\\n        text-align: right;\\n        padding-right: 0px;\\n    }\\n\\n    input.clean-look-input {\\n        background-color: initial;\\n        color: initial;\\n        border: none;\\n    }\\n</style>\\n<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default max-width-half\\\">\\n                <div class=\\\"panel-body fulfillmentContainer\\\">\\n                    <div style=\\\"border-bottom: 1px solid darkgray;\\\">\\n                        <h3>{{'resellerorder.createfulfillment' | translate}}</h3>\\n                    </div>\\n\\n                    <div>\\n                        <div class=\\\"col-sm-6\\\" style=\\\"margin-top:20px;\\\">\\n                            <ca-form-group-row label=\\\"'resellerorder.warehouse'\\\">\\n                                <ca-singleselect model=\\\"vm.selectedWarehouse\\\" mandatory=\\\"true\\\" choices=\\\"vm.warehouses\\\"\\n                                    order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\"></ca-singleselect>\\n                            </ca-form-group-row>\\n                        </div>\\n                        <div class=\\\"col-sm-6\\\" style=\\\"margin-top:20px;\\\">\\n                            <ca-form-group-row label=\\\"'resellerorder.minimumAvailableStock'\\\">\\n                                <input type=\\\"number\\\" ng-model=\\\"vm.minimumAvailableStock\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.minimumAvailableStock' | translate }}\\\"\\n                                    class=\\\"form-control input-sm\\\">\\n                            </ca-form-group-row>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.fulfillableProducts && vm.fulfillableProducts.length > 0\\\">\\n                            <span class=\\\"pull-left\\\" style=\\\"width:90%;\\\">\\n                                <input class=\\\"form-control small-width\\\"\\n                                    type=\\\"text\\\"\\n                                    placeholder=\\\"{{ 'common.filter' | translate }}\\\"\\n                                    ng-model-options=\\\"{debounce: 300}\\\"\\n                                    ng-change=\\\"vm.filterFulfillableProducts()\\\"\\n                                    ng-model=\\\"vm.fulfillableProductsFilter\\\"\\n                                />\\n                            </span>\\n                            <span class=\\\"pull-right\\\" style=\\\"width:9%;\\\">\\n                                <ca-singleselect model=\\\"vm.selectedPageSize\\\" choices=\\\"vm.pageSizes\\\" mandatory=\\\"true\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'val'\\\"/>\\n                            </span>\\n                            <div style=\\\"height: 1px; clear: both;\\\">&nbsp;</div>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.filteredFulfillableProducts && vm.filteredFulfillableProducts.length > 0\\\" style=\\\"margin-top:20px;\\\">\\n                            <table class=\\\"table full-width table-full-width\\\">\\n                                <thead>\\n                                    <tr>\\n                                        <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n                                        <th>{{ 'resellerorder.articleName' | translate }}</th>\\n                                        <th>{{ 'resellerorder.variant1' | translate }}</th>\\n                                        <th>{{ 'resellerorder.supplier' | translate }}</th>\\n                                        <th tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\"\\n                                            uib-tooltip=\\\"{{ 'resellerorder.stockQuantity' | translate }}\\\">\\n                                            {{ 'resellerorder.stockQuantityShort' | translate }}</th>\\n                                        <th tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\"\\n                                            uib-tooltip=\\\"{{ 'resellerorder.unfulfilledQuantity' | translate }}\\\">\\n                                            {{ 'resellerorder.unfulfilledQuantityShort' | translate }}</th>\\n                                        <th>&nbsp;</th>\\n                                    </tr>\\n                                </thead>\\n                                <tbody ng-repeat=\\\"fulfillableProduct in vm.filteredFulfillableProducts\\\">\\n                                    <tr>\\n                                        <td>\\n                                            <a ng-click=\\\"vm.goToProduct(fulfillableProduct.articleId)\\\" class=\\\"ca-celllink\\\">{{ fulfillableProduct.displayArticleNumber }}</a>\\n                                        </td>\\n                                        <td>{{ fulfillableProduct.articleName }}</td>\\n                                        <td>{{ fulfillableProduct.variantDetail1Name }}</td>\\n                                        <td>{{ fulfillableProduct.supplier }}</td>\\n                                        <td>{{ fulfillableProduct.stockQuantity }}</td>\\n                                        <td>{{ fulfillableProduct.unfulfilledQuantity }}</td>\\n                                        <td>\\n                                            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.showCreateVariantDeliveryDatePopup(fulfillableProduct)\\\" style=\\\"margin-right: 10px;\\\">Leveransdatum</button>\\n                                            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.showCreateVariantFulfillmentPopup(fulfillableProduct)\\\">{{'resellerorder.createfulfillment' | translate}}</button>\\n                                        </td>\\n                                    </tr>\\n                                </tbody>\\n                            </table>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n\\n    .fulfillable-quantity-input {\\n        margin: 0;\\n        width: 50%;\\n        float: left;\\n    }\\n\\n    .quantity-input {\\n        margin: 0;\\n        width: 50%;\\n        float: left;\\n    }\\n\\n    .deselect-warehouse-btn {\\n        float: right;\\n    }\\n\\n    .red-difference {\\n        color: red;\\n    }\\n\\n    .right-align {\\n        text-align: right;\\n    }\\n\\n    .right-align input {\\n        text-align: right;\\n        padding-right: 0px;\\n    }\\n\\n    input.clean-look-input {\\n        background-color: initial;\\n        color: initial;\\n        border: none;\\n    }\\n</style>\\n<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default max-width-half\\\">\\n                <div class=\\\"panel-body fulfillmentContainer\\\">\\n                    <div style=\\\"border-bottom: 1px solid darkgray;\\\">\\n                        <h3>{{'resellerorder.manageOrderFulfillments' | translate}}</h3>\\n                    </div>\\n\\n                    <div>\\n                        <ca-reseller-order-scanner-navigation init-collapsed=\\\"!vm.usingScannerNavigation\\\" init-focused=\\\"true\\\" navigate-to-state-name=\\\"'resellerorder.manageorders'\\\"> </ca-reseller-order-scanner-navigation>\\n                    </div>\\n\\n                    <div>\\n                        <div class=\\\"col-sm-6\\\" style=\\\"margin-top:20px; width:500px\\\">\\n                            <ca-form-group-row label=\\\"'resellerorder.warehouse'\\\">\\n                                <ca-singleselect model=\\\"vm.selectedFulfilledOrdersWarehouse\\\" mandatory=\\\"true\\\"\\n                                    choices=\\\"vm.warehouses\\\" order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\">\\n                                </ca-singleselect>\\n                            </ca-form-group-row>\\n                        </div>\\n                        <div style=\\\"float:left\\\">\\n                            <table style=\\\"float:left;width: 600px;\\\">\\n                                <tr>\\n                                    <th colspan=\\\"8\\\">\\n                                        {{'productimport.filter' | translate}}:\\n                                    </th>\\n                                </tr>\\n                                <tr>\\n                                    <td style=\\\"width: 75px\\\">{{'resellerorder.pickableQuantityShort' | translate}}:</td>\\n                                    <td style=\\\"width: 75px\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.openCheck\\\" ng-change=\\\"vm.loadFulfilledOrders()\\\" checked></td>\\n                                    <td style=\\\"width: 75px;\\\">{{'resellerorder.pickedQuantityShort' | translate}}:</td>\\n                                    <td style=\\\"width: 75px\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.closedCheck\\\" ng-change=\\\"vm.loadFulfilledOrders()\\\" checked></td>\\n                                    <td style=\\\"width: 75px\\\">{{'resellerorder.printOrderPickingListPdf' | translate}} {{'resellerorder.hasBeenPrinted' | translate}}:</td>\\n                                    <td style=\\\"width: 75px\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.filterPickPrinted\\\" ng-change=\\\"vm.loadFulfilledOrders()\\\"></td>\\n                                    <td style=\\\"width: 75px;\\\">{{'resellerorder.printOrderDeliveryNotePdf' | translate}} {{'resellerorder.hasBeenPrinted' | translate}}:</td>\\n                                    <td style=\\\"width: 75px\\\"><input type=\\\"checkbox\\\" ng-model=\\\"vm.filterDeliveryPrinted\\\" ng-change=\\\"vm.loadFulfilledOrders()\\\"></td>\\n                                </tr>\\n                            </table>\\n                            <div style=\\\"float:left; margin-top:30px; margin-right:6px\\\">\\n                                {{'resellerorder.createdDate' | translate}}:\\n                            </div>\\n                            <div style=\\\"float:left;width:60px;margin-top:22px\\\">\\n                                <ca-singleselect style=\\\"float:left;width:60px\\\" model=\\\"vm.selectedDateMonth\\\" choices=\\\"vm.monthDates\\\" mandatory=\\\"true\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'val'\\\"/>\\n                            </div>\\n                            <div style=\\\"float:left; margin-top:30px; margin-left:6px\\\">\\n                                {{'purchaseorderanalysis.monthsBack' | translate}}:\\n                            </div>\\n                        </div>\\n                        <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.fulfilledOrders && vm.fulfilledOrders.length > 0\\\">\\n                            <span class=\\\"pull-left\\\" style=\\\"width:80%;\\\">\\n                                <input class=\\\"form-control small-width\\\"\\n                                    type=\\\"text\\\"\\n                                    placeholder=\\\"{{ 'common.filter' | translate }}\\\"\\n                                    ng-model-options=\\\"{debounce: 300}\\\"\\n                                    ng-change=\\\"vm.filterFulfilledOrders()\\\"\\n                                    ng-model=\\\"vm.fulfilledOrdersFilter\\\"\\n                                />\\n                            </span>\\n                            <span class=\\\"pull-right\\\" style=\\\"width:9%;\\\">\\n                                <ca-singleselect model=\\\"vm.selectedPageSize\\\" choices=\\\"vm.pageSizes\\\" mandatory=\\\"true\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'val'\\\"/>\\n                            </span>\\n                            <div style=\\\"height: 1px; clear: both;\\\">&nbsp;</div>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.filteredFulfilledOrders && vm.filteredFulfilledOrders.length > 0\\\"\\n                            style=\\\"margin-top:20px;\\\">\\n                            <table class=\\\"table\\\">\\n                                <thead>\\n                                    <tr>\\n                                        <th ng-click=\\\"vm.toggleExpandAll()\\\"\\n                                            uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\"\\n                                            tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                            <span>\\n                                                <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i> <i\\n                                                    class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                                            </span>\\n                                        </th>\\n                                        <th>{{ 'resellerorder.orderNumber' | translate }}</th>\\n                                        <th>{{ 'resellerorder.reseller' | translate }}</th>\\n                                        <th tooltip-append-to-body=\\\"true\\\"\\n                                            uib-tooltip=\\\"{{ 'resellerorder.resellerPriority' | translate }}\\\" tooltip>\\n                                            {{ 'resellerorder.resellerPriorityShort' | translate }}</th>\\n                                        <th>{{ 'resellerorder.createdDate' | translate }}</th>\\n                                        <th><button ng-click=\\\"vm.printAllResellerOrderPickingLists()\\\"\\n                                            class=\\\"btn btn-default\\\">{{ 'common.printAll' | translate }}</th>\\n                                        <th>{{ 'resellerorder.deliveryDate' | translate }}</th>\\n                                    </tr>\\n                                </thead>\\n                                <tbody ng-repeat=\\\"order in vm.filteredFulfilledOrders\\\">\\n                                    <tr>\\n                                        <td ng-click=\\\"order.showOrderVariants = !order.showOrderVariants\\\">\\n                                            <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                                                <i class=\\\"fa fa-fw fa-angle-right\\\"\\n                                                    ng-show=\\\"!order.showOrderVariants\\\"></i>\\n                                                <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\"\\n                                                    ng-show=\\\"order.showOrderVariants\\\"></i>\\n                                            </span>\\n                                        </td>\\n                                        <td>\\n                                            <a ng-click=\\\"vm.goToOrder(order.id)\\\" class=\\\"ca-celllink\\\">{{ order.orderNumber }}</a>\\n                                        </td>\\n                                        <td ng-click=\\\"order.showOrderVariants = !order.showOrderVariants\\\">\\n                                            {{ order.resellerName }}\\n                                        </td>\\n                                        <td ng-click=\\\"order.showOrderVariants = !order.showOrderVariants\\\">\\n                                            {{ order.resellerPriority.toUpperCase() }}\\n                                        </td>\\n                                        <td ng-click=\\\"order.showOrderVariants = !order.showOrderVariants\\\">\\n                                            {{ order.createdDate | date: 'yyyy-MM-dd' }}\\n                                        </td>\\n                                        <td>\\n                                            <button ng-click=\\\"vm.printResellerOrderPickingList(order.id)\\\"\\n                                                class=\\\"btn btn-sm btn-default\\\">\\n                                                {{ 'resellerorder.printPickingListPdf' | translate }}\\n\\n                                                <span ng-show=\\\"vm.hasBeenPrinted(order, 'ResellerOrderPickingList')\\\">\\n                                                    <i class=\\\"fa fa-check-circle\\\" style=\\\"padding-left:6px; vertical-align: center;\\\" aria-hidden=\\\"true\\\"\\n                                                        uib-tooltip=\\\"{{ vm.getLatestPrint(order, 'ResellerOrderPickingList') }}\\\"\\n                                                        tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" >\\n                                                    </i>\\n                                                </span>\\n                                            </button>\\n                                            \\n                                            <button style=\\\"margin-left: 8px\\\" ng-show=\\\"vm.canPrintDeliveryNote(order)\\\" ng-click=\\\"vm.getResellerOrderDeliveryNotePdf(order.id)\\\"\\n                                                class=\\\"btn btn-sm btn-success\\\">{{ 'resellerorder.printDeliveryNotePdf' | translate }}\\n                                                <span ng-show=\\\"vm.hasBeenPrinted(order, 'ResellerOrderDeliveryNote')\\\">\\n                                                    <i class=\\\"fa fa-check-circle\\\" style=\\\"padding-left:6px; vertical-align: center;\\\" aria-hidden=\\\"true\\\"\\n                                                        uib-tooltip=\\\"{{ vm.getLatestPrint(order, 'ResellerOrderDeliveryNote') }}\\\"\\n                                                        tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" >\\n                                                    </i>\\n                                                </span>\\n                                            </button>\\n                                            <span uib-tooltip=\\\"{{'resellerorder.nothingHasBeenPickedOnThisOrderYet' | translate}}\\\" tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\">\\n                                                <button style=\\\"margin-left: 8px\\\" ng-disabled=\\\"!vm.canPrintDeliveryNote(order)\\\" ng-show=\\\"!vm.canPrintDeliveryNote(order)\\\" class=\\\"btn btn-sm btn-default\\\">\\n                                                    {{ 'resellerorder.printDeliveryNotePdf' | translate }}</button>\\n                                                </span>\\n                                        </td>\\n                                        <td ng-click=\\\"order.showOrderVariants = !order.showOrderVariants\\\">\\n                                            {{order.plannedDeliveryDate | date: 'yyyy-MM-dd'}}\\n                                        </td>\\n                                    </tr>\\n                                    <tr ng-show=\\\"order.showOrderVariants\\\">\\n                                        <td>&nbsp;</td>\\n                                        <td colspan=\\\"5\\\">\\n                                            <table class=\\\"table\\\">\\n                                                <thead>\\n                                                    <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n                                                    <th>{{ 'resellerorder.articleName' | translate }}</th>\\n                                                    <th>{{ 'resellerorder.variant1' | translate }}</th>\\n                                                    <th>{{ 'resellerorder.variant2' | translate }}</th>\\n                                                    <th>{{ 'resellerorder.createdDate' | translate }}</th>\\n                                                    <th uib-tooltip=\\\"{{ 'resellerorder.fulfilledQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                                        {{ 'resellerorder.fulfilledQuantityShort' | translate }}\\n                                                    </th>\\n                                                    <th uib-tooltip=\\\"{{ 'resellerorder.pickedQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                                        {{ 'resellerorder.pickedQuantityShort' | translate }}\\n                                                    </th>\\n                                                    <th uib-tooltip=\\\"{{ 'resellerorder.pickableQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                                        {{ 'resellerorder.pickableQuantityShort' | translate }}\\n                                                    </th>\\n                                                    <th>\\n                                                        <button ng-click=\\\"vm.confirmPickAll(order)\\\"\\n                                                                ng-show=\\\"vm.canPickAll(order) && order.fulfillmentLineItems.length > 1\\\"\\n                                                                uib-tooltip=\\\"{{ 'resellerorder.confirmAllPicks' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                                                class=\\\"btn btn-sm btn-default\\\">{{ 'resellerorder.confirmAllPicksShort' | translate }}</button>\\n                                                    </th>\\n                                                    <th>\\n                                                        <label  class=\\\"i-checks m-t-xs\\\"\\n                                                                uib-tooltip=\\\"{{ 'resellerorder.toggleAllCloseOrderRowAfterPick' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                                                ng-show=\\\"vm.canPickAll(order) && order.fulfillmentLineItems.length > 1\\\">\\n                                                            <input  type=\\\"checkbox\\\" namef=\\\"a\\\"\\n                                                                    ng-model=\\\"order.closeAllPickings\\\"\\n                                                                    ng-change=\\\"vm.toggleClosePicking(order)\\\" />\\n                                                            <i></i>\\n                                                        </label>\\n                                                    </th>\\n                                                </thead>\\n                                                <tbody ng-repeat=\\\"lineItem in order.fulfillmentLineItems\\\">\\n                                                    <tr>\\n                                                        <td>\\n                                                            <a ng-click=\\\"vm.goToProduct(lineItem.articleId)\\\" class=\\\"ca-celllink\\\" ng-if=\\\"order.fulfillmentLineItems[$index - 1].displayArticleNumber !== lineItem.displayArticleNumber\\\">{{ lineItem.displayArticleNumber }}</a>\\n                                                        </td>\\n                                                        <td>\\n                                                            <span ng-if=\\\"order.fulfillmentLineItems[$index - 1].articleName !== lineItem.articleName\\\">{{ lineItem.articleName }}</span>\\n                                                        </td>\\n                                                        <td>{{ lineItem.variantDetail1Name }}</td>\\n                                                        <td>{{ lineItem.variantDetail2Name }}</td>\\n                                                        <td uib-tooltip=\\\"{{ lineItem.fulfillmentDateCreated | date: 'yyyy-MM-dd hh:mm:dd' }}\\\"\\n                                                            tooltip-append-to-body=\\\"true\\\"\\n                                                            tooltip-placement=\\\"top-left\\\"\\n                                                            >{{ lineItem.fulfillmentDateCreated | date: 'yyyy-MM-dd' }}</td>\\n                                                        <td>{{ lineItem.quantity }}</td>\\n                                                        <td>{{ lineItem.pickedQuantity }}</td>\\n                                                        <td>\\n                                                            <input type=\\\"number\\\" min=\\\"0\\\"\\n                                                                ng-show=\\\"vm.canPick(lineItem)\\\"\\n                                                                ng-model=\\\"lineItem.pickableQuantity\\\">\\n                                                            <span ng-show=\\\"!vm.canPick(lineItem)\\\">{{ lineItem.pickableQuantity }}</span>\\n                                                        </td>\\n                                                        <td>\\n                                                            <button ng-click=\\\"vm.confirmPicking(lineItem)\\\"\\n                                                                    ng-show=\\\"vm.canPick(lineItem)\\\"\\n                                                                    uib-tooltip=\\\"{{ 'resellerorder.confirmPick' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                                                    class=\\\"btn btn-sm btn-default\\\">{{ 'resellerorder.confirmPickShort' | translate }}</button>\\n                                                        </td>\\n                                                        <td>\\n                                                            <label  class=\\\"i-checks m-t-xs\\\"\\n                                                                    uib-tooltip=\\\"{{ 'resellerorder.closeOrderRowAfterPick' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                                                    ng-show=\\\"vm.canPick(lineItem)\\\">\\n                                                                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"lineItem.closePicking\\\" />\\n                                                                <i></i>\\n                                                            </label>\\n                                                        </td>\\n                                                    </tr>\\n                                                </tbody>\\n                                            </table>\\n                                        </td>\\n                                    </tr>\\n                                </tbody>\\n                            </table>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n\\n    .fulfillable-quantity-input {\\n        margin: 0;\\n        width: 50%;\\n        float: left;\\n    }\\n\\n    .quantity-input {\\n        margin: 0;\\n        width: 50%;\\n        float: left;\\n    }\\n\\n    .deselect-warehouse-btn {\\n        float: right;\\n    }\\n\\n    .red-difference {\\n        color: red;\\n    }\\n\\n    .right-align {\\n        text-align: right;\\n    }\\n\\n    .right-align input {\\n        text-align: right;\\n        padding-right: 0px;\\n    }\\n\\n    input.clean-look-input {\\n        background-color: initial;\\n        color: initial;\\n        border: none;\\n    }\\n</style>\\n<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default max-width-half\\\">\\n                <div class=\\\"panel-body fulfillmentContainer\\\">\\n                    <div style=\\\"border-bottom: 1px solid darkgray;\\\">\\n                        <h3>{{'resellerorder.manageProductFulfillments' | translate}}</h3>\\n                    </div>\\n\\n                    <div>\\n                        <ca-reseller-order-scanner-navigation init-collapsed=\\\"!vm.usingScannerNavigation\\\" init-focused=\\\"true\\\" navigate-to-state-name=\\\"'resellerorder.manageproducts'\\\"> </ca-reseller-order-scanner-navigation>\\n                    </div>\\n\\n                    <div>\\n                        <div class=\\\"col-sm-6\\\" style=\\\"margin-top:20px;\\\">\\n                            <ca-form-group-row label=\\\"'resellerorder.warehouse'\\\">\\n                                <ca-singleselect model=\\\"vm.selectedFulfilledProductsWarehouse\\\" mandatory=\\\"true\\\"\\n                                    choices=\\\"vm.warehouses\\\" order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\">\\n                                </ca-singleselect>\\n                            </ca-form-group-row>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.fulfilledProducts && vm.fulfilledProducts.length > 0\\\">\\n                            <span class=\\\"pull-left\\\" style=\\\"width:90%;\\\">\\n                                <input class=\\\"form-control small-width\\\"\\n                                    type=\\\"text\\\"\\n                                    placeholder=\\\"{{ 'common.filter' | translate }}\\\"\\n                                    ng-model-options=\\\"{debounce: 300}\\\"\\n                                    ng-change=\\\"vm.filterFulfilledProducts()\\\"\\n                                    ng-model=\\\"vm.fulfilledProductsFilter\\\"\\n                                />\\n                            </span>\\n                            <span class=\\\"pull-right\\\" style=\\\"width:9%;\\\">\\n                                <ca-singleselect model=\\\"vm.selectedPageSize\\\" choices=\\\"vm.pageSizes\\\" mandatory=\\\"true\\\" order-by-desc=\\\"'id'\\\" item-renderer=\\\"'val'\\\"/>\\n                            </span>\\n                            <div style=\\\"height: 1px; clear: both;\\\">&nbsp;</div>\\n                        </div>\\n\\n                        <div class=\\\"col-sm-12\\\" ng-show=\\\"vm.filteredFulfilledProducts && vm.filteredFulfilledProducts.length > 0\\\"\\n                            style=\\\"margin-top:20px;\\\">\\n                            <table class=\\\"table\\\">\\n                                <thead>\\n                                    <tr>\\n                                        <th ng-click=\\\"vm.toggleExpandAllProducts()\\\"\\n                                            uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\"\\n                                            tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                            <span>\\n                                                <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i> <i\\n                                                    class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                                            </span>\\n                                        </th>\\n                                        <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n                                        <th>{{ 'resellerorder.articleName' | translate }}</th>\\n                                        <th><button ng-click=\\\"vm.printAllResellerOrderPickingLists()\\\"\\n                                            class=\\\"btn btn-default\\\">{{ 'common.printAll' | translate }}</th>\\n                                    </tr>\\n                                </thead>\\n                                <tbody ng-repeat=\\\"product in vm.filteredFulfilledProducts\\\">\\n                                    <tr>\\n                                        <td ng-click=\\\"product.showOrders = !product.showOrders\\\">\\n                                            <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                                                <i class=\\\"fa fa-fw fa-angle-right\\\"\\n                                                    ng-show=\\\"!product.showOrders\\\"></i>\\n                                                <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\"\\n                                                    ng-show=\\\"product.showOrders\\\"></i>\\n                                            </span>\\n                                        </td>\\n                                        <td>\\n                                            <a ng-click=\\\"vm.goToProduct(product.id)\\\" class=\\\"ca-celllink\\\">{{ product.displayArticleNumber }}</a>\\n                                        </td>\\n                                        <td ng-click=\\\"product.showOrders = !product.showOrders\\\">\\n                                            {{ product.articleName }}</td>\\n                                        <td>\\n                                            <button ng-click=\\\"vm.printResellerOrderPickingList(product.id)\\\"\\n                                                class=\\\"btn btn-default\\\">{{ 'resellerorder.printPickingListPdf' | translate }}</button>\\n                                        </td>\\n                                    </tr>\\n                                    <tr ng-show=\\\"product.showOrders\\\">\\n                                        <td colspan=\\\"4\\\">\\n                                            <table class=\\\"table\\\">\\n                                                <thead>\\n                                                    <tr>\\n                                                        <th ng-click=\\\"vm.toggleExpandAllOrders(product)\\\"\\n                                                            uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\"\\n                                                            tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                                            <span>\\n                                                                <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i> <i\\n                                                                    class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                                                            </span>\\n                                                        </th>\\n                                                        <th>{{ 'resellerorder.orderNumber' | translate }}</th>\\n                                                        <th>{{ 'resellerorder.reseller' | translate }}</th>\\n                                                        <th tooltip-append-to-body=\\\"true\\\"\\n                                                            uib-tooltip=\\\"{{ 'resellerorder.resellerPriority' | translate }}\\\" tooltip>\\n                                                            {{ 'resellerorder.resellerPriorityShort' | translate }}</th>\\n                                                        <th>{{ 'resellerorder.createdDate' | translate }}</th>\\n                                                        <th uib-tooltip=\\\"{{ 'resellerorder.fulfilledQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                                            {{ 'resellerorder.fulfilledQuantityShort' | translate }}\\n                                                        </th>\\n                                                        <th>&nbsp;</th>\\n                                                    </tr>\\n                                                </thead>\\n                                                <tbody ng-repeat=\\\"order in product.orders\\\">\\n                                                    <tr>\\n                                                        <td ng-click=\\\"order.showOrderRows = !order.showOrderRows\\\">\\n                                                            <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                                                                <i class=\\\"fa fa-fw fa-angle-right\\\"\\n                                                                    ng-show=\\\"!order.showOrderRows\\\"></i>\\n                                                                <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\"\\n                                                                    ng-show=\\\"order.showOrderRows\\\"></i>\\n                                                            </span>\\n                                                        </td>\\n                                                        <td>\\n                                                            <a ng-click=\\\"vm.goToOrder(order.id)\\\" class=\\\"ca-celllink\\\">{{ order.orderNumber }}</a>\\n                                                        </td>\\n                                                        <td>{{ order.resellerName }}</td>\\n                                                        <td>{{ order.resellerPriority }}</td>\\n                                                        <td uib-tooltip=\\\"{{ order.dateCreated | date: 'yyyy-MM-dd hh:mm:dd' }}\\\"\\n                                                            tooltip-append-to-body=\\\"true\\\"\\n                                                            >{{ order.dateCreated | date: 'yyyy-MM-dd' }}</td>\\n                                                        <td>{{ order.totalLineItemFulfilledQuantity }}</td>\\n                                                        <td>\\n                                                            <span ng-show=\\\"vm.hasBeenPrinted(order)\\\">\\n                                                                <i class=\\\"fa fa-check-circle\\\" aria-hidden=\\\"true\\\"\\n                                                                    uib-tooltip=\\\"{{ 'resellerorder.hasBeenPrinted' | translate }}: {{ vm.getLatestPrint(order) }}\\\"\\n                                                                    tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" \\n                                                                    ></i>\\n                                                            </span>\\n                                                        </td>\\n                                                    </tr>\\n                                                    <tr ng-show=\\\"order.showOrderRows\\\">\\n                                                        <td>&nbsp;</td>\\n                                                        <td colspan=\\\"6\\\"><!-- Fulfillment lineitems -->\\n                                                            <table class=\\\"table\\\">\\n                                                                <thead>\\n                                                                    <tr>\\n                                                                        <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n                                                                        <th>{{ 'resellerorder.articleName' | translate }}</th>\\n                                                                        <th>{{ 'resellerorder.variant1' | translate }}</th>\\n                                                                        <th>{{ 'resellerorder.variant2' | translate }}</th>\\n                                                                        <th uib-tooltip=\\\"{{ 'resellerorder.fulfilledQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                                                            {{ 'resellerorder.fulfilledQuantityShort' | translate }}\\n                                                                        </th>\\n                                                                        <th uib-tooltip=\\\"{{ 'resellerorder.pickedQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                                                            {{ 'resellerorder.pickedQuantityShort' | translate }}\\n                                                                        </th>\\n                                                                        <th uib-tooltip=\\\"{{ 'resellerorder.pickableQuantity' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">\\n                                                                            {{ 'resellerorder.pickableQuantityShort' | translate }}\\n                                                                        </th>\\n                                                                        <th>\\n                                                                            <button ng-click=\\\"vm.confirmPickAll(order)\\\"\\n                                                                                    ng-show=\\\"vm.canPickAll(order) && order.fulfillmentLineItems.length > 1\\\"\\n                                                                                    uib-tooltip=\\\"{{ 'resellerorder.confirmAllPicks' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                                                                    class=\\\"btn btn-default\\\">{{ 'resellerorder.confirmAllPicksShort' | translate }}</button>\\n                                                                        </th>\\n                                                                        <th>\\n                                                                            <label  class=\\\"i-checks m-t-xs\\\"\\n                                                                                    uib-tooltip=\\\"{{ 'resellerorder.toggleAllCloseOrderRowAfterPick' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                                                                    ng-show=\\\"vm.canPickAll(order) && order.fulfillmentLineItems.length > 1\\\">\\n                                                                                <input  type=\\\"checkbox\\\" namef=\\\"a\\\"\\n                                                                                        ng-model=\\\"order.closeAllPickings\\\"\\n                                                                                        ng-change=\\\"vm.toggleClosePicking(order)\\\" />\\n                                                                                <i></i>\\n                                                                            </label>\\n                                                                        </th>\\n                                                                    </tr>\\n                                                                </thead>\\n                                                                <tbody ng-repeat=\\\"lineItem in order.fulfillmentLineItems\\\">\\n                                                                    <tr>\\n                                                                        <td>\\n                                                                            <span ng-if=\\\"$index === 0\\\"><a ng-click=\\\"vm.goToProduct(lineItem.articleId)\\\" class=\\\"ca-celllink\\\" ng-if=\\\"$index === 0\\\">{{ product.displayArticleNumber }}</a></span>\\n                                                                        </td>\\n                                                                        <td>\\n                                                                            <span ng-if=\\\"$index === 0\\\">{{ product.articleName }}</span>\\n                                                                        </td>\\n                                                                        <td>{{ lineItem.variantDetail1Name }}</td>\\n                                                                        <td>{{ lineItem.variantDetail2Name }}</td>\\n                                                                        <td>{{ lineItem.quantity }}</td>\\n                                                                        <td>{{ lineItem.pickedQuantity }}</td>\\n                                                                        <td>\\n                                                                            <input type=\\\"number\\\" min=\\\"0\\\"\\n                                                                                ng-show=\\\"vm.canPick(lineItem)\\\"\\n                                                                                ng-model=\\\"lineItem.pickableQuantity\\\">\\n                                                                            <span ng-show=\\\"!vm.canPick(lineItem)\\\">{{ lineItem.pickableQuantity }}</span>\\n                                                                        </td>\\n                                                                        <td>\\n                                                                            <button ng-click=\\\"vm.confirmPicking(lineItem)\\\"\\n                                                                                    ng-show=\\\"vm.canPick(lineItem)\\\"\\n                                                                                    uib-tooltip=\\\"{{ 'resellerorder.confirmPick' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                                                                    class=\\\"btn btn-default\\\">{{ 'resellerorder.confirmPickShort' | translate }}</button>\\n                                                                        </td>\\n                                                                        <td>\\n                                                                            <label  class=\\\"i-checks m-t-xs\\\"\\n                                                                                    uib-tooltip=\\\"{{ 'resellerorder.closeOrderRowAfterPick' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                                                                    ng-show=\\\"vm.canPick(lineItem)\\\">\\n                                                                                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"lineItem.closePicking\\\" />\\n                                                                                <i></i>\\n                                                                            </label>\\n                                                                        </td>\\n                                                                    </tr>\\n                                                                </tbody>\\n                                                            </table>\\n                                                        </td>\\n                                                    </tr>\\n                                                </tbody>\\n                                            </table>\\n                                        </td>\\n                                    </tr>\\n                                </tbody>\\n                            </table>\\n                        </div>\\n\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-sm-12\\\">\\n    <div class=\\\"col-sm-8\\\">\\n        <ca-form-group-row label=\\\"'resellerorder.addproduct'\\\">\\n            <ca-reseller-order-product-search-multi-select\\n                order-id=\\\"vm.resellerOrder.id\\\"\\n                select-same-twice-allowed=\\\"false\\\"\\n                articles-to-exclude=\\\"vm.excludedArticles\\\"\\n                on-articles-retrieved=\\\"vm.receiveArticles(articles)\\\"\\n                disabled=\\\"!vm.canModifyLineItems()\\\" />\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\\n<div class=\\\"col-lg-12\\\">\\n    <!-- Filtering/search section -->\\n    <ul class=\\\"nav nav-tabs\\\" ng-show=\\\"vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0\\\">\\n        <li ng-class=\\\"{'active' : vm.tabSelection.quantity}\\\"><a ng-click=\\\"vm.changeToTab('quantity')\\\">{{'resellerorder.registerQuantity' | translate}}</a></li>\\n        <!-- <li ng-class=\\\"{'active' : vm.tabSelection.amount}\\\"><a ng-click=\\\"vm.changeToTab('amount')\\\">{{'resellerorder.registerPrice' | translate}}</a></li> -->\\n        <li ng-class=\\\"{'active' : vm.tabSelection.overview}\\\"><a ng-click=\\\"vm.changeToTab('overview')\\\">{{'resellerorder.verticalOverview' | translate}}</a></li>\\n    </ul>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0 && vm.tabSelection.quantity\\\">\\n        <create-reseller-order-articles-quantity reseller-order=\\\"vm.resellerOrder\\\" on-line-item-changed=\\\"vm.saveLineItem(lineItem)\\\" on-variant-changed=\\\"vm.saveVariant(variant)\\\"></create-reseller-order-articles-quantity>\\n    </div>\\n\\n    <!-- <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0 && vm.tabSelection.amount\\\">\\n        <create-reseller-order-articles-amount reseller-order=\\\"vm.resellerOrder\\\" on-line-item-changed=\\\"vm.saveLineItem(lineItem)\\\"></create-reseller-order-articles-amount>\\n    </div> -->\\n    \\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0 && vm.tabSelection.overview\\\">\\n        <create-reseller-order-articles-overview reseller-order=\\\"vm.resellerOrder\\\" on-line-item-changed=\\\"vm.saveLineItem(lineItem)\\\"></create-reseller-order-articles-overview>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n    .table-initial-width {\\n        width: initial;\\n    }\\n    .lineItemTable thead tr th, .lineItemTable tbody tr td {\\n        padding: 3px;\\n    }\\n    .lineItemTable thead tr th:first-child {\\n        padding-right: 10px;\\n    }\\n    .lineItemTable tbody tr td input {\\n        padding-right: 2px;\\n    }\\n    .max-width {\\n        max-width: 30px;\\n    }\\n    .small-width {\\n        max-width: 100px;\\n    }\\n    .right-aligned-header {\\n        text-align: right;\\n    }\\n    .grey-td {\\n        background-color: #ccc;\\n    }\\n    .grey-td input {\\n        background-color: #fff;\\n    }\\n    .table-td-min-width thead th {\\n        min-width: 100px;\\n        padding-right: 5px;\\n    }\\n</style>\\n<table class=\\\"table table-full-width table-hover\\\">\\n    <thead>\\n        <tr>\\n            <th ng-click=\\\"vm.toggleExpandAll()\\\" uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\" tooltip-append-to-body=\\\"true\\\"><span>+ / -</span></th>\\n            <th>{{ 'resellerorder.articleNumber' | translate }}</th>\\n            <th>{{ 'resellerorder.articleName' | translate }}</th>\\n            <th>{{ 'resellerorder.grossPriceSum' | translate }}</th>\\n        </tr>\\n    </thead>\\n    <tbody ng-repeat=\\\"lineItemArticle in vm.lineItemsGroupedByArticle\\\">\\n        <tr ng-click=\\\"lineItemArticle.article.showRows = !lineItemArticle.article.showRows\\\">\\n            <td>\\n                <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.showArticleVariantRows' | translate}}\\\"></i>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.hideArticleVariantRows' | translate}}\\\"></i>\\n                </span>\\n            </td>\\n            <td>\\n                {{ lineItemArticle.article.displayArticleNumber }}\\n            </td>\\n            <td>\\n                {{ lineItemArticle.article.articleName }}\\n            </td>\\n            <td>\\n                <span tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.price' | translate }} * {{ 'resellerorder.quantity' | translate }}\\\">{{ vm.getProductGrossPriceSum(lineItemArticle) }}</span>\\n            </td>\\n            <td class=\\\"right-aligned-header\\\">\\n                <button ng-click=\\\"vm.removeArticleFromOrder(lineItemArticle)\\\" ng-if=\\\"vm.canDeleteArticleFromOrder(lineItemArticle.lineItemsGroupedOnVariant1)\\\" class=\\\"btn btn-sm btn-primary\\\"><i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i></button>\\n            </td>\\n        </tr>\\n        <tr ng-show=\\\"lineItemArticle.article.showRows\\\">\\n            <td colspan=\\\"5\\\">\\n                <table class=\\\"table-initial-width lineItemTable table-td-min-width\\\">\\n                    <thead>\\n                        <th><strong>{{ 'resellerorder.variant' | translate }}</strong></th>\\n                        <th ng-repeat=\\\"variant2 in vm.getVariant2s(lineItemArticle.lineItemsGroupedOnVariant1[0].lineItems)\\\">{{ variant2 }}</th>\\n                        <th>{{ 'resellerorder.averagePrice' | translate }}</th>\\n                    </thead>\\n                    <tbody>\\n                        <tr ng-repeat=\\\"variant1 in lineItemArticle.lineItemsGroupedOnVariant1\\\">\\n                            <td>{{ variant1.variantDetail1Name }}</td>\\n                            <td ng-repeat=\\\"lineItem in variant1.lineItems\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\" type=\\\"number\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.grossPricePerPiece' | translate }}\\\" min=\\\"0\\\" step=\\\"1\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.saveLineItem(lineItem)\\\"\\n                                    ng-model=\\\"lineItem.amount\\\" /></td>\\n                            <td>{{ vm.getVariantPriceAverage(variant1) }}</td>\\n                            <!-- <td class=\\\"grey-td right-align\\\" style=\\\"width: 100px;\\\" ng-if=\\\"vm.canUpdateWholeRow(variant1)\\\">\\n                                <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width\\\" type=\\\"number\\\"\\n                                    placeholder=\\\"&lt;--\\\" min=\\\"0\\\" step=\\\"1\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.updateWholeRow(variant1, variant1.wholeRowAmount)\\\"\\n                                    ng-model=\\\"variant1.wholeRowAmount\\\" />\\n                            </td> -->\\n                            <td class=\\\"right-align\\\" ng-if=\\\"vm.canClearRow(variant1)\\\" style=\\\"padding-right:0;\\\">\\n                                <button ng-click=\\\"vm.confirmClearRow(variant1)\\\" class=\\\"btn btn-sm btn-primary\\\"><i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i></button>\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </td>\\n        </tr>\\n    </tbody>\\n</table>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n    .table-initial-width {\\n        width: initial;\\n    }\\n    .padding-bottom td:last-child {\\n        padding-bottom: 10px;\\n    }\\n    .max-width {\\n        max-width: 30px;\\n    }\\n    .small-width {\\n        max-width: 100px;\\n    }\\n    td.right-align {\\n        text-align: right;\\n        padding-left:5px;\\n        padding-right:5px;\\n    }\\n    .right-align input {\\n        float:right;\\n        text-align: right;\\n        padding-right: 0px;\\n    }\\n    .center-aligned-header {\\n        text-align: center;\\n    }\\n    .table-td-min-width thead th {\\n        min-width: 100px;\\n        padding-right: 5px;\\n    }\\n</style>\\n<table class=\\\"table table-full-width table-hover\\\">\\n    <thead>\\n        <tr>\\n            <th ng-click=\\\"vm.toggleExpandAll()\\\"\\n                uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\"\\n                tooltip-append-to-body=\\\"true\\\"\\n                tooltip-placement=\\\"top-left\\\">\\n                <span>\\n                    <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i> <i class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                </span>\\n            </th>\\n            <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n            <th>{{ 'resellerorder.articleName' | translate }}</th>\\n            <th uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPiece' | translate }}\\\" tooltip-append-to-body=\\\"true\\\">{{ 'resellerorder.grossPricePerPieceShort' | translate }}</th>\\n            <th>{{ 'resellerorder.grossPriceSum' | translate }}</th>\\n            <th>{{ 'resellerorder.totalQuantitySum' | translate }}</th>\\n        </tr>\\n    </thead>\\n    <tbody ng-repeat=\\\"lineItemArticle in vm.lineItemsGroupedByArticle\\\">\\n        <tr ng-click=\\\"lineItemArticle.article.showRows = !lineItemArticle.article.showRows\\\">\\n            <td>\\n                <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.showArticleVariantRows' | translate}}\\\"></i>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.hideArticleVariantRows' | translate}}\\\"></i>\\n                </span>\\n            </td>\\n            <td>\\n                <a ng-click=\\\"vm.goToProduct(lineItemArticle.article.id)\\\" class=\\\"ca-celllink\\\">{{ lineItemArticle.article.displayArticleNumber }}</a>\\n            </td>\\n            <td>\\n                {{ lineItemArticle.article.articleName }}\\n            </td>\\n            <td>{{ vm.getProductGrossPrice(lineItemArticle).toFixed(2) }}</td>\\n            <td>\\n                <span tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.price' | translate }} * {{ 'resellerorder.quantity' | translate }}\\\">{{ vm.getProductGrossPriceSum(lineItemArticle).toFixed(2) }}</span>\\n            </td>\\n            <td>{{ vm.getProductQuantitySum(lineItemArticle) }}</td>\\n            <td class=\\\"right-aligned-header\\\">\\n                <button class=\\\"btn btn-sm btn-primary\\\"\\n                    ng-click=\\\"vm.removeArticleFromOrder(lineItemArticle)\\\"\\n                    ng-if=\\\"vm.canDeleteArticleFromOrder(lineItemArticle.lineItemsGroupedOnVariant1)\\\"\\n                    uib-tooltip=\\\"{{ 'resellerorder.removeProduct' | translate }}\\\"\\n                    tooltip-append-to-body=\\\"true\\\"\\n                    tooltip-placement=\\\"top\\\">\\n                    <i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i>\\n                </button>\\n            </td>\\n        </tr>\\n        <tr ng-show=\\\"lineItemArticle.article.showRows\\\">\\n            <td>&nbsp;</td>\\n            <td colspan=\\\"6\\\">\\n                <table class=\\\"table-initial-width table-td-min-width\\\">\\n                    <thead>\\n                        <th>{{ 'resellerorder.variant1' | translate }}</th>\\n                        <th>{{ 'resellerorder.variant2' | translate }}</th>\\n                        <th class=\\\"right-aligned-header\\\">{{ 'resellerorder.grossPricePerPiece' | translate }}</th>\\n                        <th class=\\\"right-aligned-header\\\">{{ 'resellerorder.discountPercent' | translate }}</th>\\n                        <th class=\\\"right-aligned-header\\\" uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPieceWithDiscount' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">{{ 'resellerorder.grossPricePerPieceWithDiscountShort' | translate }}</th>\\n                        <th class=\\\"right-aligned-header\\\">{{ 'resellerorder.quantityShort' | translate }}</th>\\n                    </thead>\\n                    <tbody ng-repeat=\\\"lineItem in lineItemArticle.lineItems\\\">\\n                        <tr>\\n                            <td>{{ lineItem.variantDetail1Name }}</td>\\n                            <td>{{ lineItem.variantDetail2Name }}</td>\\n                            <td class=\\\"right-align\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\"\\n                                    type=\\\"number\\\" min=\\\"0\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.grossPricePerPiece' | translate }}\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.saveLineItem(lineItem)\\\"\\n                                    ng-model=\\\"lineItem.amount\\\" />\\n                            </td>\\n                            <td class=\\\"right-align\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\"\\n                                    type=\\\"number\\\" min=\\\"0\\\" max=\\\"100\\\" step=\\\"1\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.discountPercent' | translate }}\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.saveLineItem(lineItem)\\\"\\n                                    ng-model=\\\"lineItem.discountPercent\\\"\\n                                    percent-input\\n                                />\\n                            </td>\\n                            <td class=\\\"right-align\\\">\\n                                <span>\\n                                    {{ vm.getFinalAmount(lineItem).toFixed(2) }}\\n                                </span>\\n                            </td>\\n                            <td class=\\\"right-align\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\"\\n                                    type=\\\"number\\\" min=\\\"0\\\" step=\\\"1\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.quantity' | translate }}\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.saveLineItem(lineItem)\\\"\\n                                    ng-model=\\\"lineItem.quantity\\\" />\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                    <tbody>\\n                        <tr style=\\\"border-top:1px solid black;\\\">\\n                            <td>&nbsp;</td>\\n                            <td>&nbsp;</td>\\n                            <td>&nbsp;</td>\\n                            <td>&nbsp;</td>\\n                            <td>&nbsp;</td>\\n                            <td class=\\\"right-align\\\">\\n                                <input type=\\\"number\\\" class=\\\"form-control small-width clean-look-input\\\" disabled ng-value=\\\"vm.getProductQuantitySum(lineItemArticle)\\\">\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </td>\\n        </tr>\\n    </tbody>\\n    <tbody>\\n        <tr>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td style=\\\"font-weight: bold;\\\">{{ vm.getTotalGrossPriceSum().toFixed(2) }}</td>\\n            <td style=\\\"font-weight: bold;\\\">{{ vm.getTotalQuantitySum() }}</td>\\n            <td>&nbsp;</td>\\n        </tr>\\n    </tbody>\\n</table>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n    .table-initial-width {\\n        width: initial;\\n    }\\n    .lineItemTable thead tr th, .lineItemTable tbody tr td {\\n        padding: 3px;\\n    }\\n    .lineItemTable thead tr th:first-child {\\n        padding-right: 10px;\\n    }\\n    .lineItemTable tbody tr td input {\\n        padding-right: 2px;\\n    }\\n    .max-width {\\n        max-width: 30px;\\n    }\\n    .small-width {\\n        max-width: 100px;\\n    }\\n    .right-aligned-header {\\n        text-align: right;\\n    }\\n    .grey-td {\\n        background-color: #ccc;\\n    }\\n    .grey-td input {\\n        background-color: #fff;\\n    }\\n    .table-td-min-width thead th {\\n        min-width: 100px;\\n        padding-right: 5px;\\n    }\\n</style>\\n<table class=\\\"table table-full-width table-hover\\\">\\n    <thead>\\n        <tr>\\n            <th ng-click=\\\"vm.toggleExpandAll()\\\"\\n                uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\"\\n                tooltip-append-to-body=\\\"true\\\"\\n                tooltip-placement=\\\"top-left\\\">\\n                <span>\\n                    <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i> <i class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                </span>\\n            </th>\\n            <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n            <th>{{ 'resellerorder.articleName' | translate }}</th>\\n            <th>{{ 'resellerorder.totalQuantitySum' | translate }}</th>\\n            <th>{{ 'resellerorder.deliveryDate' | translate }}</th>\\n            <th>&nbsp;</th>\\n        </tr>\\n    </thead>\\n    <tbody ng-repeat=\\\"lineItemArticle in vm.lineItemsGroupedByArticle\\\">\\n        <tr ng-click=\\\"lineItemArticle.article.showRows = !lineItemArticle.article.showRows\\\">\\n            <td>\\n                <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.showArticleVariantRows' | translate}}\\\"></i>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.hideArticleVariantRows' | translate}}\\\"></i>\\n                </span>\\n            </td>\\n            <td>\\n                <a ng-click=\\\"vm.goToProduct(lineItemArticle.article.id)\\\" class=\\\"ca-celllink\\\">{{ lineItemArticle.article.displayArticleNumber }}</a>\\n            </td>\\n            <td>\\n                {{ lineItemArticle.article.articleName }}\\n            </td>\\n            <td>\\n                {{ vm.getProductQuantitySum(lineItemArticle) }}\\n            </td>\\n            <td>\\n                <wj-input-date\\n                    value=\\\"lineItemArticle.article.plannedDeliveryDate\\\"\\n                    format=\\\"yyyy-MM-dd\\\"\\n                    style=\\\"max-width:200px\\\"\\n                    ng-disabled=\\\"!vm.canModifyLineItemDeliveryDate(lineItemArticle)\\\"\\n                    value-changed=\\\"vm.deliveryDateChanged(lineItemArticle)\\\">\\n                </wj-input-date>\\n            </td>\\n            <td class=\\\"right-aligned-header\\\">\\n                <button class=\\\"btn btn-sm btn-primary\\\"\\n                    ng-click=\\\"vm.removeArticleFromOrder(lineItemArticle)\\\"\\n                    ng-if=\\\"vm.canDeleteArticleFromOrder(lineItemArticle.lineItemsGroupedOnVariant1)\\\"\\n                    uib-tooltip=\\\"{{ 'resellerorder.removeProduct' | translate }}\\\"\\n                    tooltip-append-to-body=\\\"true\\\"\\n                    tooltip-placement=\\\"top\\\">\\n                    <i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i>\\n                </button>\\n            </td>\\n        </tr>\\n        <tr ng-show=\\\"lineItemArticle.article.showRows\\\">\\n            <td>&nbsp;</td>\\n            <td colspan=\\\"5\\\" style=\\\"padding-right:15px;\\\">\\n                <table class=\\\"table-initial-width lineItemTable table-td-min-width\\\">\\n                    <thead>\\n                        <th><strong>{{ 'resellerorder.variant' | translate }}</strong></th>\\n                        <th>{{ 'resellerorder.grossPricePerPieceShort' | translate }}</th>\\n                        <th>{{ 'resellerorder.discountPercent' | translate }}</th>\\n                        <th uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPieceWithDiscount' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">{{ 'resellerorder.grossPricePerPieceWithDiscountShort' | translate }}</th>\\n                        <th ng-repeat=\\\"variant2 in vm.getVariant2s(lineItemArticle.lineItemsGroupedOnVariant1[0].lineItems)\\\">{{ variant2 }}</th>\\n                        <th>{{ 'resellerorder.quantitySum' | translate }}</th>\\n                        <th colspan=\\\"2\\\">&nbsp;</th>\\n                    </thead>\\n                    <tbody>\\n                        <tr ng-repeat=\\\"variant1 in lineItemArticle.lineItemsGroupedOnVariant1\\\" >\\n                            <td>{{ variant1.variantDetail1Name }}</td>\\n                            <td>\\n                                <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width\\\" type=\\\"number\\\"\\n                                    uib-tooltip=\\\"{{ 'resellerorder.setWholeRowAmount' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                    placeholder=\\\"{{ variant1.initialProductGrossPrice.toFixed(2) }}\\\" min=\\\"0\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 200}\\\"\\n                                    ng-change=\\\"vm.setWholeRowPrice(lineItemArticle, variant1)\\\"\\n                                    ng-model=\\\"variant1.wholeRowPrice\\\" /></td>\\n                            </td>\\n                            <td>\\n                                <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width\\\"\\n                                    uib-tooltip=\\\"{{ 'resellerorder.setWholeRowDiscountPercent' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                    type=\\\"number\\\" min=\\\"0\\\" max=\\\"100\\\" step=\\\"1\\\"\\n                                    placeholder=\\\"0%\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 200}\\\"\\n                                    ng-change=\\\"vm.setWholeRowDiscountPercent(lineItemArticle, variant1)\\\"\\n                                    ng-model=\\\"variant1.wholeRowDiscountPercent\\\"\\n                                    percent-input\\n                                />\\n                            </td>\\n                            <td>\\n                                <span uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPieceWithDiscountCalculation' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">\\n                                    {{ vm.getFinalAmount(lineItemArticle, variant1).toFixed(2) }}\\n                                </span>\\n                            </td>\\n                            <td ng-repeat=\\\"lineItem in variant1.lineItems\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\" type=\\\"number\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.quantity' | translate }}\\\" min=\\\"0\\\" step=\\\"1\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 200}\\\"\\n                                    ng-change=\\\"vm.saveVariant(variant1)\\\"\\n                                    ng-model=\\\"lineItem.quantity\\\" /></td>\\n                            <td>{{ vm.getVariantQuantitySum(variant1) }}</td>\\n                            <td class=\\\"right-align\\\" ng-if=\\\"vm.canClearRow(variant1)\\\" style=\\\"padding-right:0;\\\">\\n                                <button ng-click=\\\"vm.confirmClearRow(variant1)\\\"\\n                                    class=\\\"btn btn-sm btn-primary\\\"\\n                                    uib-tooltip=\\\"{{ 'resellerorder.clearRowQuantities' | translate }}\\\"\\n                                    tooltip-append-to-body=\\\"true\\\"\\n                                    tooltip-placement=\\\"top\\\">\\n                                    <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i>\\n                                </button>\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </td>\\n        </tr>\\n    </tbody>\\n    <tbody>\\n        <tr>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td style=\\\"font-weight: bold;\\\">{{ vm.getTotalQuantitySum() }}</td>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n        </tr>\\n    </tbody>\\n</table>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-11\\\">\\n            <ui-select multiple=\\\"\\\" class=\\\"editable-input\\\" ng-model=\\\"vm.articlesToAdd\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.disabled\\\">\\n                <ui-select-match placeholder=\\\"{{'order.addarticle' | translate}}\\\">\\n                    <span>{{::$item.displayName}}</span>\\n                </ui-select-match>\\n                <ui-select-choices repeat=\\\"article in vm.searchResultArticles track by article.id\\\" refresh=\\\"vm.refreshArticles($select.search)\\\" refresh-delay=\\\"200\\\">\\n                    <span>{{::article.displayName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n        <div class=\\\"col-lg-1\\\">\\n            <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.addArticles()\\\" ng-disabled=\\\"vm.disabled\\\">+</button>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div  class=\\\"b-t b-b\\\" style=\\\"margin-left: 16px;margin-right: 16px; margin-bottom: 25px;\\\">\\n                        <button style=\\\"margin-top:-1px; margin-left:4px;  margin-right:6px\\\" ng-click=\\\"vm.createNewOrder()\\\" class=\\\"btn btn-default\\\">\\n                            {{'common.new' | translate}}</button>\\n                        <button style=\\\"margin-top:-1px; margin-left:-1px;\\\" ng-click=\\\"vm.createNewReturnOrder()\\\" class=\\\"btn btn-default\\\">\\n                            {{'common.new' | translate}} {{'resellerorder.resellerreturnordershort' | translate}}</button>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <resellerorder-breadcrumbs current-page=\\\"{ link: 'resellerorder.view', order: vm.resellerOrder }\\\"></resellerorder-breadcrumbs>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <style>\\n                            div.ca-hover-background:hover {\\n                                background-color: #f6f6f6;\\n                            }\\n                        </style>\\n                        <div style=\\\"border-bottom: 1px solid darkgray\\\">\\n                            <h3>{{'common.order' | translate}}: \\n                                <span ng-show=\\\"vm.isEditingOrderNumber\\\">\\n                                    <input ng-model=\\\"vm.editedOrderNumber\\\" type=\\\"text\\\" placeholder=\\\"{{vm.resellerOrder.orderNumber}}\\\">\\n                                        <button tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.save' | translate  }} {{ 'resellerorder.orderNumber' | translate }}\\\"\\n                                            class=\\\"btn btn-default\\\" ng-click=\\\"vm.tryToSaveNewOrderNumber()\\\"><i class=\\\"fa fa-floppy-o\\\" style=\\\"font-size:28; text-align: center;\\\"></i></button>\\n                                </span>\\n                                <span ng-show=\\\"!vm.isEditingOrderNumber\\\">{{vm.resellerOrder.orderNumber}}\\n                                    <button tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.edit' | translate  }} {{ 'resellerorder.orderNumber' | translate }}\\\"\\n                                        class=\\\"btn btn-default\\\" ng-click=\\\"vm.editOrderNumber()\\\"><i class=\\\"fa fa-pencil\\\" style=\\\"font-size:28; text-align: center;\\\"></i></button>\\n                                </span>\\n                            </h3>\\n                        </div>\\n\\n                        <div class=\\\"input-group m-b-xxs list-menu\\\" ng-if=\\\"vm.canCancelOrder() || vm.canConfirmOrder()\\\" style=\\\"margin-top:3px;\\\">\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\" style=\\\"text-align: left; width:30%;\\\">\\n                                <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.cancelOrder()\\\" ng-disabled=\\\"vm.canCancelOrder()\\\">{{ 'resellerorder.cancelOrder' | translate }}</button>\\n                                <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.printOrder()\\\" ng-disabled=\\\"!vm.canPrintOrder()\\\">\\n                                    <i class=\\\"fa fa-file-pdf-o fa-lg\\\" aria-hidden=\\\"true\\\" tooltip-placement=\\\"bottom\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.printOrderPdf' | translate }}\\\"></i>\\n                                </button>\\n                                <button ng-click=\\\"vm.getResellerOrderCsv()\\\" class=\\\"btn btn-sm btn-default\\\">\\n                                    <i class=\\\"fa fa-file-excel-o fa-lg\\\" aria-hidden=\\\"true\\\" tooltip-placement=\\\"bottom\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{'resellerorder.printOrderCsv' | translate}}\\\"></i>\\n                                </button>\\n                            </span>\\n                        </div>\\n\\n                        <div>\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"  style=\\\"text-align: left; width:30%; color:grey;\\\">\\n                                {{ vm.synchronizationStatus }} \\n                                <i class=\\\"fa fa-spinner fa-spin fa-fw\\\" ng-show=\\\"vm.isSaving\\\"></i> \\n                            </span>\\n                        </div>\\n\\n                        <div style=\\\"margin-top:20px;\\\">\\n                            <readonly-reseller-order-header reseller-order=\\\"vm.resellerOrder\\\" init-collapsed=\\\"true\\\"></readonly-reseller-order-header>\\n\\n                            <div style=\\\"clear:both; height: 1px\\\">&nbsp;</div>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\" style=\\\"margin-top:0px; margin-bottom: 10px;\\\">\\n                            <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.setWholeOrderDeliveryDate()\\\" ng-disabled=\\\"!vm.canSetWholeOrderDeliveryDate()\\\">{{ 'resellerorder.setWholeOrderDeliveryDate' | translate }}</button>\\n                            <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.setWholeOrderDiscountPercent()\\\" ng-disabled=\\\"!vm.canSetWholeOrderDiscountPercent()\\\">{{ 'resellerorder.setWholeOrderDiscountPercent' | translate }}</button>\\n                        </div>\\n\\n                        <div style=\\\"margin-top:5px;\\\">\\n                            <create-reseller-order-add-line-items reseller-order=\\\"vm.resellerOrder\\\" on-line-item-changed=\\\"vm.saveLineItem(lineItem)\\\" on-variant-changed=\\\"vm.saveVariant(variant)\\\"></create-reseller-order-add-line-items>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div style=\\\"float:left; max-width: 33%;\\\">\\n                        <span ng-if=\\\"vm.showSearchToggle()\\\" ng-disabled=\\\"!vm.selectedOrder || !vm.selectedOrder.id\\\" ng-click=\\\"vm.toggleSearchFields()\\\" class=\\\"hidden-folded pull-right text-muted ng-scope\\\">\\n                            <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"!vm.showSearchFields\\\"> {{'resellerorder.showSearchFields' | translate}}</span>\\n                            <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"vm.showSearchFields\\\"></i><span class=\\\"ca-font\\\" ng-show=\\\"vm.showSearchFields\\\"> {{'resellerorder.hideSearchFields' | translate}}</span>        \\n                        </span>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\" style=\\\"clear:both; height: 1px;\\\">&nbsp;</div>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showSearchFields\\\">\\n                        <ca-reseller-order-search search-term=\\\"vm.searchTerm\\\" on-reseller-order-selected=\\\"vm.transitionToState(order)\\\"></ca-reseller-order-search>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\" ng-if=\\\"vm.selectedOrder && vm.selectedOrder.id\\\">\\n                        <div>&nbsp;</div>\\n                        <!-- Panel for showing selected order goes here -->\\n                        <ca-reseller-order order-id=\\\"vm.selectedOrder.id\\\"> </ca-reseller-order>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div  class=\\\"b-t b-b\\\" style=\\\"margin-left: 16px;margin-right: 16px; margin-bottom: 25px;\\\">\\n    <button style=\\\"margin-top:-1px; margin-left:4px;  margin-right:6px\\\" ng-click=\\\"vm.createNewOrder()\\\" class=\\\"btn btn-default\\\">\\n        {{'common.new' | translate}}</button>\\n    <button style=\\\"margin-top:-1px; margin-left:-1px;\\\" ng-click=\\\"vm.createNewReturnOrder()\\\" class=\\\"btn btn-default\\\">\\n        {{'common.new' | translate}} {{'resellerorder.resellerreturnordershort' | translate}}\\n    </button>\\n</div>\\n<div class=\\\"col-lg-12\\\">    \\n\\n    <resellerorder-breadcrumbs current-page=\\\"{ link: 'resellerorder.view', order: vm.resellerOrder }\\\"></resellerorder-breadcrumbs>\\n\\n    <style>\\n        div.ca-hover-background:hover {\\n            background-color: #f6f6f6;\\n        }\\n    </style>\\n    <div style=\\\"border-bottom: 1px solid darkgray\\\">\\n        <h3>\\n            <span ng-show=\\\"vm.resellerOrder.orderType === 'ResellerReturnOrder'\\\">{{'customerorder.typeReturnOrder' | translate}}:</span>\\n            <span ng-show=\\\"vm.resellerOrder.orderType !== 'ResellerReturnOrder'\\\">{{'common.order' | translate}}:</span>\\n            <span ng-show=\\\"vm.isEditingOrderNumber\\\">\\n                <input ng-model=\\\"vm.editedOrderNumber\\\" type=\\\"text\\\" placeholder=\\\"{{vm.resellerOrder.orderNumber}}\\\">\\n                    <button  tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.save' | translate  }} {{ 'resellerorder.orderNumber' | translate }}\\\"\\n                        class=\\\"btn btn-default\\\" ng-click=\\\"vm.tryToSaveNewOrderNumber()\\\"><i class=\\\"fa fa-floppy-o\\\" style=\\\"font-size:28; text-align: center;\\\"></i></button>\\n            </span>\\n            <span ng-show=\\\"!vm.isEditingOrderNumber\\\">{{vm.resellerOrder.orderNumber}}\\n                <button tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.edit' | translate  }} {{ 'resellerorder.orderNumber' | translate }}\\\" \\n                    class=\\\"btn btn-default\\\" ng-click=\\\"vm.editOrderNumber()\\\"><i class=\\\"fa fa-pencil\\\" style=\\\"font-size:28; text-align: center;\\\"></i></button>\\n            </span>\\n        </h3>\\n    </div>\\n        <div> \\n            <button ng-click=\\\"vm.getResellerOrderPdf()\\\" class=\\\"btn btn-sm btn-default\\\">\\n                {{'resellerorder.printOrderPdf' | translate}}\\n            </button>\\n            <button ng-click=\\\"vm.getResellerOrderCsv()\\\" class=\\\"btn btn-sm btn-default\\\">\\n                {{'resellerorder.printOrderCsv' | translate}}\\n            </button>\\n            \\n            <button ng-click=\\\"vm.getResellerOrderDeliveryNotePdf()\\\" class=\\\"btn btn-sm btn-default\\\" ng-if=\\\"vm.DeliveryNoteAvailable()\\\">\\n                {{'resellerorder.printDeliveryNotePdf' | translate}}\\n            </button>\\n            <!-- <button ng-click=\\\"vm.getResellerOrderPickingList()\\\" class=\\\"btn btn-sm btn-default\\\">\\n                {{'resellerorder.printOrderPickingListPdf' | translate}}\\n            </button>\\n            <button ng-click=\\\"vm.getResellerOrderDeliveryOrderPdf()\\\" class=\\\"btn btn-sm btn-default\\\">\\n                {{'resellerorder.printOrderDeliveryOrderPdf' | translate}}\\n            </button>\\n            <button ng-click=\\\"vm.getResellerOrderInvoicePdf()\\\" class=\\\"btn btn-sm btn-default\\\">\\n                {{'resellerorder.printOrderInvoicePdf' | translate}}\\n            </button> -->\\n        </div>\\n\\n    <div style=\\\"margin-top:20px;\\\">\\n        <readonly-reseller-order-header reseller-order=\\\"vm.resellerOrder\\\"></readonly-reseller-order-header>\\n\\n        <div style=\\\"clear:both; height: 1px\\\">&nbsp;</div>\\n    </div>\\n\\n    <!-- Filtering/search section -->\\n    <ul class=\\\"nav nav-tabs\\\">\\n        <li ng-class=\\\"{'active' : vm.tabSelection.lineItems}\\\"><a ng-click=\\\"vm.changeToOrderRowsTab()\\\">{{'resellerorder.orderproducts' | translate}}</a></li>\\n        <li ng-class=\\\"{'active' : vm.tabSelection.fulfillments}\\\" ng-if=\\\"vm.resellerOrder.deliveries && vm.resellerOrder.deliveries.length > 0\\\"><a ng-click=\\\"vm.changeToFulfillmentsTab()\\\">{{'resellerorder.deliveries' | translate}}</a></li>\\n    </ul>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.lineItems\\\">\\n        <!-- Reseller order rows -->\\n        <ca-reseller-order-rows\\n            ng-show=\\\"vm.resellerOrder.lineItems.length > 0\\\"\\n            reseller-order=\\\"vm.resellerOrder\\\"\\n            product-number-to-expand=\\\"vm.productNumberToExpand\\\"\\n        ></ca-reseller-order-rows>\\n    </div>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.fulfillments\\\">\\n        <!-- Reseller order deliveries -->\\n        <ca-reseller-order-deliveries\\n            reseller-order=\\\"vm.resellerOrder\\\"\\n        ></ca-reseller-order-deliveries>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .center-aligned-header {\\n        text-align: center;\\n    }\\n    .table-td-min-width thead th {\\n        min-width: 100px;\\n        padding-right: 5px;\\n    }\\n</style>\\n<div>\\n    <table class=\\\"table table-condensed caHoverTable\\\">\\n        <thead>\\n            <th ng-click=\\\"vm.toggleExpandAll()\\\"\\n                uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\"\\n                tooltip-append-to-body=\\\"true\\\"\\n                tooltip-placement=\\\"top-left\\\">\\n                <span>\\n                    <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i> <i class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                </span>\\n            </th>\\n            <th>{{'resellerorder.alternativeArticleNumber' | translate}}</th>\\n            <th>{{'resellerorder.articleName' | translate}}</th>\\n            <th uib-tooltip=\\\"{{'resellerorder.fulfillmentdates' | translate}}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">{{ 'time.date' | translate }}</th>\\n            <th>{{'resellerorder.totalfulfillablequantity' | translate}}</th>\\n            <th uib-tooltip=\\\"{{'resellerorder.fulfillableQuantity' | translate}}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">{{'resellerorder.fulfillableQuantityShort' | translate}}</th>\\n            <th uib-tooltip=\\\"{{'resellerorder.fulfilledQuantity' | translate}}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">{{'resellerorder.fulfilledQuantityShort' | translate}}</th>\\n            <th uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPiece' | translate }}\\\" tooltip-append-to-body=\\\"true\\\">{{'resellerorder.grossPricePerPieceShort' | translate}}</th>\\n            <th uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPieceWithDiscount' | translate }}\\\" tooltip-append-to-body=\\\"true\\\">{{'resellerorder.grossPricePerPieceWithDiscountShort' | translate}}</th>\\n            <th>{{'resellerorder.totalamount' | translate}}</th>\\n        </thead>\\n        <tbody ng-repeat=\\\"row in vm.articleGroupedItemLines\\\">\\n            <tr class=\\\"caHoverRow\\\" ng-click=\\\"row.showRows = !row.showRows\\\">\\n                <td>\\n                    <span class=\\\"hidden-folded pull-right text-muted ng-scope\\\">\\n                        <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!row.showRows\\\" uib-tooltip=\\\"{{'resellerorder.showDeliveryRows' | translate}}\\\"></i>\\n                        <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"row.showRows\\\" uib-tooltip=\\\"{{'resellerorder.hideDeliveryRows' | translate}}\\\"></i>\\n                    </span>\\n                </td>\\n                <td>\\n                    <a ng-click=\\\"vm.goToProduct(lineItem.articleId)\\\" class=\\\"ca-celllink\\\">{{ row.DisplayArticleNumber }}</a>\\n                </td>\\n                <td> {{ row.ArticleName }} </td>\\n                <td> {{ row.FulfillmentDateRange }} </td>\\n                <td> {{ row.TotalFulfillableQuantity }} </td>\\n                <td> {{ row.LeftToBeFulfilledQuantity }} </td>\\n                <td> {{ row.FulfilledQuantity }} </td>\\n                <td> {{ row.AveragePricePerPiece.toFixed(2) }} </td>\\n                <td> {{ row.AveragePriceMinusDiscountPerPiece.toFixed(2) }} </td>\\n                <td> {{ row.TotalAmount.toFixed(2) }} </td>\\n            </tr>\\n\\n            <tr ng-show=\\\"row.showRows\\\">\\n                <td colspan=\\\"10\\\">\\n                    <!-- Delivery Rows -->\\n                    <table class=\\\"table table-condensed caHoverTable table-td-min-width\\\">\\n                        <thead>\\n                            <th>{{'resellerorder.article' | translate}}</th>\\n                            <th> Färg </th>\\n                            <th> Storlek </th>\\n                            <th>{{'resellerorder.fulfillmentdates' | translate}}</th>\\n                            <th>{{'resellerorder.totalfulfillablequantity' | translate}}</th>\\n                            <th uib-tooltip=\\\"{{'resellerorder.fulfillableQuantity' | translate}}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">{{'resellerorder.fulfillableQuantityShort' | translate}}</th>\\n                            <th uib-tooltip=\\\"{{'resellerorder.fulfilledQuantity' | translate}}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\">{{'resellerorder.fulfilledQuantityShort' | translate}}</th>\\n                            <th>{{'resellerorder.priceperpiece' | translate}}</th>\\n                            <th>{{'resellerorder.discountPercent' | translate}}</th>\\n                            <th>{{'resellerorder.totalamount' | translate}}</th>\\n                        </thead>\\n                        <tbody ng-repeat=\\\"lineItem in row.LineItems\\\">\\n                            <tr class=\\\"caHoverRow-light\\\">\\n                                <td> {{ lineItem.displayArticleNumber }} </td>\\n                                <td> {{ lineItem.variantDetail1Name }} </td>\\n                                <td> {{ lineItem.variantDetail2Name }} </td>\\n                                <td> {{ vm.getArticleFulfillmentDateRangeString([lineItem]) }} </td>\\n                                <td> {{ lineItem.quantity }} </td>\\n                                <td> {{ lineItem.quantity - lineItem.fulfilledQuantity }} </td>\\n                                <td> {{ lineItem.fulfilledQuantity }} </td>\\n                                <td> {{ lineItem.amount.toFixed(2) }} </td>\\n                                <td> {{ (lineItem.discountPercent * 100) + '%' }} </td>\\n                                <td> {{ ((lineItem.amount - lineItem.discountAmountPerItem) * lineItem.quantity).toFixed(2) }} </td>\\n                            </tr>\\n                        </tbody>\\n                        <tbody>\\n                            <tr class=\\\"boldCellText\\\">\\n                                <td colspan=\\\"4\\\">&nbsp;</td>\\n                                <td>{{ vm.getTotalFulfillableQuantity(row.LineItems) }}</td>\\n                                <td>{{ vm.getLeftToBeFulfilledQuantity(row.LineItems) }}</td>\\n                                <td>{{ vm.getFulfilledQuantity(row.LineItems) }}</td>\\n                                <td>&nbsp;</td>\\n                                <td>&nbsp;</td>\\n                                <td> {{ vm.getTotalAmount(row.LineItems).toFixed(2) }} </td>\\n                            </tr>\\n                        </tbody>\\n                    </table>\\n                </td>\\n            </tr>\\n        </tbody>\\n\\n        <tbody>\\n            <tr class=\\\"boldCellText\\\">\\n                <td colspan=\\\"4\\\">&nbsp;</td>\\n                <td>{{ vm.getOrderTotalFulfillableQuantity() }}</td>\\n                <td>{{ vm.getOrderLeftToBeFulfilledQuantity() }}</td>\\n                <td>{{ vm.getOrderFulfilledQuantity() }}</td>\\n                <td>&nbsp;</td>\\n                <td>&nbsp;</td>\\n                <td>{{ vm.getOrderTotalAmount().toFixed(2) }}</td>\\n            </tr>\\n        </tbody>\\n\\n    </table>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <!-- Panel for showing selected order goes here -->\\n                    <ca-reseller-order order-id=\\\"vm.selectedOrder.id\\\" product-number-to-expand=\\\"vm.productNumberToExpand\\\"> </ca-reseller-order>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<!-- Reseller order head -->\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; width:33%;\\\" >\\n    <div>{{'resellerorder.orderHead' | translate}}:</div>\\n    <table class=\\\"table table-condensed\\\">\\n        <tbody>\\n            <tr>\\n                <td>{{'resellerorder.salelocation' | translate}}</td>\\n                <td><ca-singleselect model=\\\"vm.selectedSaleLocation\\\" choices=\\\"vm.stores\\\" order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\" ></ca-singleselect></td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.warehouse' | translate}}</td>\\n                <td><ca-singleselect model=\\\"vm.selectedWarehouse\\\" choices=\\\"vm.warehouses\\\" order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\" ></ca-singleselect></td>\\n            </tr>\\n            <tr>\\n                <td>{{'article.collection' | translate}}</td>\\n                <td><ca-singleselect model=\\\"vm.selectedCollection\\\" choices=\\\"vm.collections\\\" order-by=\\\"'collectionDescription'\\\" item-renderer=\\\"'collectionDescription'\\\" filter-by=\\\"['collectionDescription']\\\" /></td>\\n            </tr>\\n            <tr>\\n                <td>{{'resellerorder.orderReference' | translate}}</td>\\n                <td><input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                    type=\\\"text\\\"\\n                    placeholder=\\\"{{ 'resellerorder.externalOrderNumber' | translate }} ({{ 'common.optional' | translate }})\\\"\\n                    ng-model=\\\"vm.resellerOrder.externalOrderNumber\\\" /></td>\\n            </tr>\\n        </tbody>\\n    </table>\\n</div>\\n\\n<!-- Reseller information -->\\n<div class=\\\"ca-hover-background\\\" style=\\\"float:left; width:33%; margin-left:30px;\\\">\\n    <div>{{'resellerorder.reseller' | translate}}:</div>\\n    <div>\\n        <table class=\\\"table table-condensed\\\">\\n            <tbody>\\n                <tr>\\n                    <td>{{'resellerorder.reseller' | translate}}</td>\\n                    <td><ca-singleselect model=\\\"vm.selectedReseller\\\" choices=\\\"vm.resellers\\\" order-by=\\\"'displayName'\\\" item-renderer=\\\"['displayName']\\\" ></ca-singleselect></td>\\n                </tr>\\n            </tbody>\\n        </table>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div class=\\\"col-lg-12\\\">\\n                            <style>\\n                                div.ca-hover-background:hover {\\n                                    background-color: #f6f6f6;\\n                                }\\n                            </style>\\n                            <div  class=\\\"b-t b-b\\\" style=\\\"margin-left: 0px;margin-right: 0px; margin-bottom: 25px;\\\">\\n                                <button style=\\\"margin-top:-1px; margin-left:4px;  margin-right:6px\\\" ng-click=\\\"vm.createNewOrder()\\\" class=\\\"btn btn-default\\\">\\n                                    {{'common.new' | translate}}</button>\\n                            </div>\\n                            <div style=\\\"border-bottom: 1px solid darkgray\\\">\\n                                <h3>{{'resellerorder.createOrder' | translate}} </h3>\\n\\n                                <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                                    <span class=\\\"input-group-addon input-sm no-border no-bg\\\" style=\\\"text-align: left; width: 100%;\\\">\\n                                        <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.createOrderHeader()\\\" ng-disabled=\\\"!vm.canCreateOrderHeader()\\\">{{ 'resellerorder.createOrder' | translate }}</button>\\n                                    </span>\\n                                </div>\\n                            </div>\\n                            <div style=\\\"margin-top:20px;\\\">\\n                                <create-reseller-return-order-header reseller-order=\\\"vm.resellerOrder\\\"></create-reseller-return-order-header>\\n\\n                                <div style=\\\"clear:both; height: 1px\\\">&nbsp;</div>\\n                            </div>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"col-sm-12\\\">\\n    <div class=\\\"col-sm-8\\\">\\n        <ca-form-group-row label=\\\"'resellerorder.addproduct'\\\">\\n            <ca-reseller-return-order-product-search-multi-select\\n                order-id=\\\"vm.resellerOrder.id\\\"\\n                select-same-twice-allowed=\\\"false\\\"\\n                articles-to-exclude=\\\"vm.excludedArticles\\\"\\n                on-articles-retrieved=\\\"vm.receiveArticles(articles)\\\"\\n                disabled=\\\"!vm.canModifyLineItems()\\\" />\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\\n<div class=\\\"col-lg-12\\\">\\n    <!-- Filtering/search section -->\\n    <ul class=\\\"nav nav-tabs\\\" ng-show=\\\"vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0\\\">\\n        <li ng-class=\\\"{'active' : vm.tabSelection.quantity}\\\"><a ng-click=\\\"vm.changeToTab('quantity')\\\">{{'resellerorder.registerQuantity' | translate}}</a></li>\\n        <!-- <li ng-class=\\\"{'active' : vm.tabSelection.amount}\\\"><a ng-click=\\\"vm.changeToTab('amount')\\\">{{'resellerorder.registerPrice' | translate}}</a></li> -->\\n        <li ng-class=\\\"{'active' : vm.tabSelection.overview}\\\"><a ng-click=\\\"vm.changeToTab('overview')\\\">{{'resellerorder.verticalOverview' | translate}}</a></li>\\n    </ul>\\n\\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0 && vm.tabSelection.quantity\\\">\\n        <create-reseller-return-order-articles-quantity reseller-order=\\\"vm.resellerOrder\\\" on-line-item-changed=\\\"vm.saveLineItem(lineItem)\\\" on-variant-changed=\\\"vm.saveVariant(variant)\\\"></create-reseller-order-articles-quantity>\\n    </div>\\n\\n    <!-- <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0 && vm.tabSelection.amount\\\">\\n        <create-reseller-order-articles-amount reseller-order=\\\"vm.resellerOrder\\\" on-line-item-changed=\\\"vm.saveLineItem(lineItem)\\\"></create-reseller-order-articles-amount>\\n    </div> -->\\n    \\n    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.resellerOrder.lineItems && vm.resellerOrder.lineItems.length > 0 && vm.tabSelection.overview\\\">\\n        <create-reseller-return-order-articles-overview reseller-order=\\\"vm.resellerOrder\\\" on-line-item-changed=\\\"vm.saveLineItem(lineItem)\\\"></create-reseller-order-articles-overview>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n    .table-initial-width {\\n        width: initial;\\n    }\\n    .lineItemTable thead tr th, .lineItemTable tbody tr td {\\n        padding: 3px;\\n    }\\n    .lineItemTable thead tr th:first-child {\\n        padding-right: 10px;\\n    }\\n    .lineItemTable tbody tr td input {\\n        padding-right: 2px;\\n    }\\n    .max-width {\\n        max-width: 30px;\\n    }\\n    .small-width {\\n        max-width: 100px;\\n    }\\n    .right-aligned-header {\\n        text-align: right;\\n    }\\n    .grey-td {\\n        background-color: #ccc;\\n    }\\n    .grey-td input {\\n        background-color: #fff;\\n    }\\n    .table-td-min-width thead th {\\n        min-width: 100px;\\n        padding-right: 5px;\\n    }\\n</style>\\n<table class=\\\"table table-full-width table-hover\\\">\\n    <thead>\\n        <tr>\\n            <th ng-click=\\\"vm.toggleExpandAll()\\\" uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\" tooltip-append-to-body=\\\"true\\\"><span>+ / -</span></th>\\n            <th>{{ 'resellerorder.articleNumber' | translate }}</th>\\n            <th>{{ 'resellerorder.articleName' | translate }}</th>\\n            <th>{{ 'resellerorder.grossPriceSum' | translate }}</th>\\n        </tr>\\n    </thead>\\n    <tbody ng-repeat=\\\"lineItemArticle in vm.lineItemsGroupedByArticle\\\">\\n        <tr ng-click=\\\"lineItemArticle.article.showRows = !lineItemArticle.article.showRows\\\">\\n            <td>\\n                <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.showArticleVariantRows' | translate}}\\\"></i>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.hideArticleVariantRows' | translate}}\\\"></i>\\n                </span>\\n            </td>\\n            <td>\\n                {{ lineItemArticle.article.displayArticleNumber }}\\n            </td>\\n            <td>\\n                {{ lineItemArticle.article.articleName }}\\n            </td>\\n            <td>\\n                <span tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.price' | translate }} * {{ 'resellerorder.quantity' | translate }}\\\">{{ vm.getProductGrossPriceSum(lineItemArticle) }}</span>\\n            </td>\\n            <td class=\\\"right-aligned-header\\\">\\n                <button ng-click=\\\"vm.removeArticleFromOrder(lineItemArticle)\\\" ng-if=\\\"vm.canDeleteArticleFromOrder(lineItemArticle.lineItemsGroupedOnVariant1)\\\" class=\\\"btn btn-sm btn-primary\\\"><i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i></button>\\n            </td>\\n        </tr>\\n        <tr ng-show=\\\"lineItemArticle.article.showRows\\\">\\n            <td colspan=\\\"5\\\">\\n                <table class=\\\"table-initial-width lineItemTable table-td-min-width\\\">\\n                    <thead>\\n                        <th><strong>{{ 'resellerorder.variant' | translate }}</strong></th>\\n                        <th ng-repeat=\\\"variant2 in vm.getVariant2s(lineItemArticle.lineItemsGroupedOnVariant1[0].lineItems)\\\">{{ variant2 }}</th>\\n                        <th>{{ 'resellerorder.averagePrice' | translate }}</th>\\n                    </thead>\\n                    <tbody>\\n                        <tr ng-repeat=\\\"variant1 in lineItemArticle.lineItemsGroupedOnVariant1\\\">\\n                            <td>{{ variant1.variantDetail1Name }}</td>\\n                            <td ng-repeat=\\\"lineItem in variant1.lineItems\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\" type=\\\"number\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.grossPricePerPiece' | translate }}\\\" min=\\\"0\\\" step=\\\"1\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.saveLineItem(lineItem)\\\"\\n                                    ng-model=\\\"lineItem.amount\\\" /></td>\\n                            <td>{{ vm.getVariantPriceAverage(variant1) }}</td>\\n                            <!-- <td class=\\\"grey-td right-align\\\" style=\\\"width: 100px;\\\" ng-if=\\\"vm.canUpdateWholeRow(variant1)\\\">\\n                                <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width\\\" type=\\\"number\\\"\\n                                    placeholder=\\\"&lt;--\\\" min=\\\"0\\\" step=\\\"1\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.updateWholeRow(variant1, variant1.wholeRowAmount)\\\"\\n                                    ng-model=\\\"variant1.wholeRowAmount\\\" />\\n                            </td> -->\\n                            <td class=\\\"right-align\\\" ng-if=\\\"vm.canClearRow(variant1)\\\" style=\\\"padding-right:0;\\\">\\n                                <button ng-click=\\\"vm.confirmClearRow(variant1)\\\" class=\\\"btn btn-sm btn-primary\\\"><i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i></button>\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </td>\\n        </tr>\\n    </tbody>\\n</table>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n    .table-initial-width {\\n        width: initial;\\n    }\\n    .padding-bottom td:last-child {\\n        padding-bottom: 10px;\\n    }\\n    .max-width {\\n        max-width: 30px;\\n    }\\n    .small-width {\\n        max-width: 100px;\\n    }\\n    td.right-align {\\n        text-align: right;\\n        padding-left:5px;\\n        padding-right:5px;\\n    }\\n    .right-align input {\\n        float:right;\\n        text-align: right;\\n        padding-right: 0px;\\n    }\\n    .center-aligned-header {\\n        text-align: center;\\n    }\\n    .table-td-min-width thead th {\\n        min-width: 100px;\\n        padding-right: 5px;\\n    }\\n</style>\\n<table class=\\\"table table-full-width table-hover\\\">\\n    <thead>\\n        <tr>\\n            <th ng-click=\\\"vm.toggleExpandAll()\\\"\\n                uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\"\\n                tooltip-append-to-body=\\\"true\\\"\\n                tooltip-placement=\\\"top-left\\\">\\n                <span>\\n                    <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i> <i class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                </span>\\n            </th>\\n            <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n            <th>{{ 'resellerorder.articleName' | translate }}</th>\\n            <th uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPiece' | translate }}\\\" tooltip-append-to-body=\\\"true\\\">{{ 'resellerorder.grossPricePerPieceShort' | translate }}</th>\\n            <th>{{ 'resellerorder.grossPriceSum' | translate }}</th>\\n            <th>{{ 'resellerorder.totalQuantitySum' | translate }}</th>\\n        </tr>\\n    </thead>\\n    <tbody ng-repeat=\\\"lineItemArticle in vm.lineItemsGroupedByArticle\\\">\\n        <tr ng-click=\\\"lineItemArticle.article.showRows = !lineItemArticle.article.showRows\\\">\\n            <td>\\n                <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.showArticleVariantRows' | translate}}\\\"></i>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.hideArticleVariantRows' | translate}}\\\"></i>\\n                </span>\\n            </td>\\n            <td>\\n                <a ng-click=\\\"vm.goToProduct(lineItemArticle.article.id)\\\" class=\\\"ca-celllink\\\">{{ lineItemArticle.article.displayArticleNumber }}</a>\\n            </td>\\n            <td>\\n                {{ lineItemArticle.article.articleName }}\\n            </td>\\n            <td>{{ vm.getProductGrossPrice(lineItemArticle).toFixed(2) }}</td>\\n            <td>\\n                <span tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.price' | translate }} * {{ 'resellerorder.quantity' | translate }}\\\">{{ vm.getProductGrossPriceSum(lineItemArticle).toFixed(2) }}</span>\\n            </td>\\n            <td>{{ vm.getProductQuantitySum(lineItemArticle) }}</td>\\n            <td class=\\\"right-aligned-header\\\">\\n                <button class=\\\"btn btn-sm btn-primary\\\"\\n                    ng-click=\\\"vm.removeArticleFromOrder(lineItemArticle)\\\"\\n                    ng-if=\\\"vm.canDeleteArticleFromOrder(lineItemArticle.lineItemsGroupedOnVariant1)\\\"\\n                    uib-tooltip=\\\"{{ 'resellerorder.removeProduct' | translate }}\\\"\\n                    tooltip-append-to-body=\\\"true\\\"\\n                    tooltip-placement=\\\"top\\\">\\n                    <i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i>\\n                </button>\\n            </td>\\n        </tr>\\n        <tr ng-show=\\\"lineItemArticle.article.showRows\\\">\\n            <td>&nbsp;</td>\\n            <td colspan=\\\"6\\\">\\n                <table class=\\\"table-initial-width table-td-min-width\\\">\\n                    <thead>\\n                        <th>{{ 'resellerorder.variant1' | translate }}</th>\\n                        <th>{{ 'resellerorder.variant2' | translate }}</th>\\n                        <th class=\\\"right-aligned-header\\\">{{ 'resellerorder.grossPricePerPiece' | translate }}</th>\\n                        <th class=\\\"right-aligned-header\\\">{{ 'resellerorder.discountPercent' | translate }}</th>\\n                        <th class=\\\"right-aligned-header\\\" uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPieceWithDiscount' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">{{ 'resellerorder.grossPricePerPieceWithDiscountShort' | translate }}</th>\\n                        <th class=\\\"right-aligned-header\\\">{{ 'resellerorder.quantityShort' | translate }}</th>\\n                    </thead>\\n                    <tbody ng-repeat=\\\"lineItem in lineItemArticle.lineItems\\\">\\n                        <tr>\\n                            <td>{{ lineItem.variantDetail1Name }}</td>\\n                            <td>{{ lineItem.variantDetail2Name }}</td>\\n                            <td class=\\\"right-align\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\"\\n                                    type=\\\"number\\\" min=\\\"0\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.grossPricePerPiece' | translate }}\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.saveLineItem(lineItem)\\\"\\n                                    ng-model=\\\"lineItem.amount\\\" />\\n                            </td>\\n                            <td class=\\\"right-align\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\"\\n                                    type=\\\"number\\\" min=\\\"0\\\" max=\\\"100\\\" step=\\\"1\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.discountPercent' | translate }}\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.saveLineItem(lineItem)\\\"\\n                                    ng-model=\\\"lineItem.discountPercent\\\"\\n                                    percent-input\\n                                />\\n                            </td>\\n                            <td class=\\\"right-align\\\">\\n                                <span>\\n                                    {{ vm.getFinalAmount(lineItem).toFixed(2) }}\\n                                </span>\\n                            </td>\\n                            <td class=\\\"right-align\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\"\\n                                    type=\\\"number\\\" min=\\\"0\\\" step=\\\"1\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.quantity' | translate }}\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                                    ng-change=\\\"vm.saveLineItem(lineItem)\\\"\\n                                    ng-model=\\\"lineItem.quantity\\\" />\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                    <tbody>\\n                        <tr style=\\\"border-top:1px solid black;\\\">\\n                            <td>&nbsp;</td>\\n                            <td>&nbsp;</td>\\n                            <td>&nbsp;</td>\\n                            <td>&nbsp;</td>\\n                            <td>&nbsp;</td>\\n                            <td class=\\\"right-align\\\">\\n                                <input type=\\\"number\\\" class=\\\"form-control small-width clean-look-input\\\" disabled ng-value=\\\"vm.getProductQuantitySum(lineItemArticle)\\\">\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </td>\\n        </tr>\\n    </tbody>\\n    <tbody>\\n        <tr>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td style=\\\"font-weight: bold;\\\">{{ vm.getTotalGrossPriceSum().toFixed(2) }}</td>\\n            <td style=\\\"font-weight: bold;\\\">{{ vm.getTotalQuantitySum() }}</td>\\n            <td>&nbsp;</td>\\n        </tr>\\n    </tbody>\\n</table>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table-full-width {\\n        width: 100%;\\n    }\\n    .table-initial-width {\\n        width: initial;\\n    }\\n    .lineItemTable thead tr th, .lineItemTable tbody tr td {\\n        padding: 3px;\\n    }\\n    .lineItemTable thead tr th:first-child {\\n        padding-right: 10px;\\n    }\\n    .lineItemTable tbody tr td input {\\n        padding-right: 2px;\\n    }\\n    .max-width {\\n        max-width: 30px;\\n    }\\n    .small-width {\\n        max-width: 100px;\\n    }\\n    .right-aligned-header {\\n        text-align: right;\\n    }\\n    .grey-td {\\n        background-color: #ccc;\\n    }\\n    .grey-td input {\\n        background-color: #fff;\\n    }\\n    .table-td-min-width thead th {\\n        min-width: 100px;\\n        padding-right: 5px;\\n    }\\n</style>\\n<table class=\\\"table table-full-width table-hover\\\">\\n    <thead>\\n        <tr>\\n            <th ng-click=\\\"vm.toggleExpandAll()\\\"\\n                uib-tooltip=\\\"{{ 'resellerorder.expandAll' | translate }} / {{ 'resellerorder.contractAll' | translate }}\\\"\\n                tooltip-append-to-body=\\\"true\\\"\\n                tooltip-placement=\\\"top-left\\\">\\n                <span>\\n                    <i class=\\\"fa fa-plus-square-o\\\" aria-hidden=\\\"true\\\"></i> <i class=\\\"fa fa-minus-square-o\\\" aria-hidden=\\\"true\\\"></i>\\n                </span>\\n            </th>\\n            <th>{{ 'resellerorder.alternativeArticleNumber' | translate }}</th>\\n            <th>{{ 'resellerorder.articleName' | translate }}</th>\\n            <th>{{ 'resellerorder.totalQuantitySum' | translate }}</th>\\n            <th>{{ 'resellerorder.deliveryDate' | translate }}</th>\\n            <th>&nbsp;</th>\\n        </tr>\\n    </thead>\\n    <tbody ng-repeat=\\\"lineItemArticle in vm.lineItemsGroupedByArticle\\\">\\n        <tr ng-click=\\\"lineItemArticle.article.showRows = !lineItemArticle.article.showRows\\\">\\n            <td>\\n                <span class=\\\"hidden-folded pull-left text-muted ng-scope\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\" ng-show=\\\"!lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.showArticleVariantRows' | translate}}\\\"></i>\\n                    <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"lineItemArticle.article.showRows\\\"\\n                        uib-tooltip=\\\"{{'resellerorder.hideArticleVariantRows' | translate}}\\\"></i>\\n                </span>\\n            </td>\\n            <td>\\n                <a ng-click=\\\"vm.goToProduct(lineItemArticle.article.id)\\\" class=\\\"ca-celllink\\\">{{ lineItemArticle.article.displayArticleNumber }}</a>\\n            </td>\\n            <td>\\n                {{ lineItemArticle.article.articleName }}\\n            </td>\\n            <td>\\n                {{ vm.getProductQuantitySum(lineItemArticle) }}\\n            </td>\\n            <td>\\n                <wj-input-date\\n                    value=\\\"lineItemArticle.article.plannedDeliveryDate\\\"\\n                    format=\\\"yyyy-MM-dd\\\"\\n                    style=\\\"max-width:200px\\\"\\n                    ng-disabled=\\\"!vm.canModifyLineItemDeliveryDate(lineItemArticle)\\\"\\n                    value-changed=\\\"vm.deliveryDateChanged(lineItemArticle)\\\">\\n                </wj-input-date>\\n            </td>\\n            <td class=\\\"right-aligned-header\\\">\\n                <button class=\\\"btn btn-sm btn-danger\\\"\\n                    ng-click=\\\"vm.removeArticleFromOrder(lineItemArticle)\\\"\\n                    ng-if=\\\"vm.canDeleteArticleFromOrder(lineItemArticle.lineItemsGroupedOnVariant1)\\\"\\n                    uib-tooltip=\\\"{{ 'resellerorder.removeProduct' | translate }}\\\"\\n                    tooltip-append-to-body=\\\"true\\\"\\n                    tooltip-placement=\\\"top\\\">\\n                    <i class=\\\"fa fa-trash\\\" aria-hidden=\\\"true\\\"></i>\\n                </button>\\n            </td>\\n        </tr>\\n        <tr ng-show=\\\"lineItemArticle.article.showRows\\\">\\n            <td>&nbsp;</td>\\n            <td colspan=\\\"5\\\" style=\\\"padding-right:15px;\\\">\\n                <table class=\\\"table-initial-width lineItemTable table-td-min-width\\\">\\n                    <thead>\\n                        <th><strong>{{ 'resellerorder.variant' | translate }}</strong></th>\\n                        <th>{{ 'resellerorder.grossPricePerPieceShort' | translate }}</th>\\n                        <th>{{ 'resellerorder.discountPercent' | translate }}</th>\\n                        <th uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPieceWithDiscount' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">{{ 'resellerorder.grossPricePerPieceWithDiscountShort' | translate }}</th>\\n                        <th ng-repeat=\\\"variant2 in vm.getVariant2s(lineItemArticle.lineItemsGroupedOnVariant1[0].lineItems)\\\">{{ variant2 }}</th>\\n                        <th>{{ 'resellerorder.quantitySum' | translate }}</th>\\n                        <th colspan=\\\"2\\\">&nbsp;</th>\\n                    </thead>\\n                    <tbody>\\n                        <tr ng-repeat=\\\"variant1 in lineItemArticle.lineItemsGroupedOnVariant1\\\" >\\n                            <td>{{ variant1.variantDetail1Name }}</td>\\n                            <td>\\n                                <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width\\\" type=\\\"number\\\"\\n                                    uib-tooltip=\\\"{{ 'resellerorder.setWholeRowAmount' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                    placeholder=\\\"{{ variant1.initialProductGrossPrice.toFixed(2) }}\\\" min=\\\"0\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 200}\\\"\\n                                    ng-change=\\\"vm.setWholeRowPrice(lineItemArticle, variant1)\\\"\\n                                    ng-model=\\\"variant1.wholeRowPrice\\\" /></td>\\n                            </td>\\n                            <td>\\n                                <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width\\\"\\n                                    uib-tooltip=\\\"{{ 'resellerorder.setWholeRowDiscountPercent' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\"\\n                                    type=\\\"number\\\" min=\\\"0\\\" max=\\\"100\\\" step=\\\"1\\\"\\n                                    placeholder=\\\"0%\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 200}\\\"\\n                                    ng-change=\\\"vm.setWholeRowDiscountPercent(lineItemArticle, variant1)\\\"\\n                                    ng-model=\\\"variant1.wholeRowDiscountPercent\\\"\\n                                    percent-input\\n                                />\\n                            </td>\\n                            <td>\\n                                <span uib-tooltip=\\\"{{ 'resellerorder.grossPricePerPieceWithDiscountCalculation' | translate }}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top\\\">\\n                                    {{ vm.getFinalAmount(lineItemArticle, variant1).toFixed(2) }}\\n                                </span>\\n                            </td>\\n                            <td ng-repeat=\\\"lineItem in variant1.lineItems\\\">\\n                                <input enter-as-tab class=\\\"editable-input form-control ng-pristine ng-valid ng-touched small-width enterAsTab\\\" type=\\\"number\\\"\\n                                    placeholder=\\\"{{ 'resellerorder.quantity' | translate }}\\\" min=\\\"0\\\" step=\\\"1\\\"\\n                                    ng-disabled=\\\"!vm.canModifyLineItem(lineItem)\\\"\\n                                    ng-model-options=\\\"{debounce: 200}\\\"\\n                                    ng-change=\\\"vm.saveVariant(variant1)\\\"\\n                                    ng-model=\\\"lineItem.quantity\\\" /></td>\\n                            <td>{{ vm.getVariantQuantitySum(variant1) }}</td>\\n                            <td class=\\\"right-align\\\" ng-if=\\\"vm.canClearRow(variant1)\\\" style=\\\"padding-right:0;\\\">\\n                                <button ng-click=\\\"vm.confirmClearRow(variant1)\\\"\\n                                    class=\\\"btn btn-sm btn-primary\\\"\\n                                    uib-tooltip=\\\"{{ 'resellerorder.clearRowQuantities' | translate }}\\\"\\n                                    tooltip-append-to-body=\\\"true\\\"\\n                                    tooltip-placement=\\\"top\\\">\\n                                    <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i>\\n                                </button>\\n                            </td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </td>\\n        </tr>\\n    </tbody>\\n    <tbody>\\n        <tr>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n            <td style=\\\"font-weight: bold;\\\">{{ vm.getTotalQuantitySum() }}</td>\\n            <td>&nbsp;</td>\\n            <td>&nbsp;</td>\\n        </tr>\\n    </tbody>\\n</table>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-11\\\">\\n            <ui-select multiple=\\\"\\\" class=\\\"editable-input\\\" ng-model=\\\"vm.articlesToAdd\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"vm.disabled\\\">\\n                <ui-select-match placeholder=\\\"{{'order.addarticle' | translate}}\\\">\\n                    <span>{{::$item.displayName}}</span>\\n                </ui-select-match>\\n                <ui-select-choices repeat=\\\"article in vm.searchResultArticles track by article.id\\\" refresh=\\\"vm.refreshArticles($select.search)\\\" refresh-delay=\\\"200\\\">\\n                    <span>{{::article.displayName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n        <div class=\\\"col-lg-1\\\">\\n            <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.addArticles()\\\" ng-disabled=\\\"vm.disabled\\\">+</button>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div  class=\\\"b-t b-b\\\" style=\\\"margin-left: 16px;margin-right: 16px; margin-bottom: 25px;\\\">\\n                        <button style=\\\"margin-top:-1px; margin-left:4px;  margin-right:6px\\\" ng-click=\\\"vm.createNewOrder()\\\" class=\\\"btn btn-default\\\">\\n                            {{'common.new' | translate}}</button>\\n                        <button style=\\\"margin-top:-1px; margin-left:-1px;\\\" ng-click=\\\"vm.createNewReturnOrder()\\\" class=\\\"btn btn-default\\\">\\n                            {{'common.new' | translate}} {{'resellerorder.resellerreturnordershort' | translate}}</button>\\n                    </div>\\n                    \\n                    <div class=\\\"col-lg-12\\\">\\n                        <reseller-returnorder-breadcrumbs current-page=\\\"{ link: 'resellerorder.view', order: vm.resellerOrder }\\\"></resellerorder-returnorder-breadcrumbs>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <style>\\n                            div.ca-hover-background:hover {\\n                                background-color: #f6f6f6;\\n                            }\\n                        </style>\\n                        <div style=\\\"border-bottom: 1px solid darkgray\\\">\\n                            <h3>{{'customerorder.typeReturnOrder' | translate}}: \\n                                <span ng-show=\\\"vm.isEditingOrderNumber\\\">\\n                                    <input ng-model=\\\"vm.editedOrderNumber\\\" type=\\\"text\\\" placeholder=\\\"{{vm.resellerOrder.orderNumber}}\\\">\\n                                        <button tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.save' | translate  }} {{ 'resellerorder.orderNumber' | translate }}\\\"\\n                                            class=\\\"btn btn-default\\\" ng-click=\\\"vm.tryToSaveNewOrderNumber()\\\"><i class=\\\"fa fa-floppy-o\\\" style=\\\"font-size:28; text-align: center;\\\"></i></button>\\n                                </span>\\n                                <span ng-show=\\\"!vm.isEditingOrderNumber\\\">{{vm.resellerOrder.orderNumber}}\\n                                    <button tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'common.edit' | translate  }} {{ 'resellerorder.orderNumber' | translate }}\\\"\\n                                        class=\\\"btn btn-default\\\" ng-click=\\\"vm.editOrderNumber()\\\"><i class=\\\"fa fa-pencil\\\" style=\\\"font-size:28; text-align: center;\\\"></i></button>\\n                                </span>\\n                            </h3>\\n                        </div>\\n\\n                        <div class=\\\"input-group m-b-xxs list-menu\\\" ng-if=\\\"vm.canCancelOrder() || vm.canConfirmOrder()\\\" style=\\\"margin-top:3px;\\\">\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\" style=\\\"text-align: left; width:30%;\\\">\\n                                <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.invoiceConfirmation()\\\" ng-disabled=\\\"!vm.canCreateInvoice()\\\">Fakturera</button>\\n                                <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.cancelOrder()\\\" ng-disabled=\\\"vm.canCancelOrder()\\\">{{ 'resellerorder.cancelOrder' | translate }}</button>\\n                                <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.printOrder()\\\" ng-disabled=\\\"!vm.canPrintOrder()\\\">\\n                                    <i class=\\\"fa fa-file-pdf-o fa-lg\\\" aria-hidden=\\\"true\\\" tooltip-placement=\\\"bottom\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'resellerorder.printOrderPdf' | translate }}\\\"></i>\\n                                </button>\\n                            </span>\\n                        </div>\\n\\n                        <div>\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"  style=\\\"text-align: left; width:30%; color:grey;\\\">\\n                                {{ vm.synchronizationStatus }} \\n                                <i class=\\\"fa fa-spinner fa-spin fa-fw\\\" ng-show=\\\"vm.isSaving\\\"></i> \\n                            </span>\\n                        </div>\\n\\n                        <div style=\\\"margin-top:20px;\\\">\\n                            <readonly-reseller-order-header reseller-order=\\\"vm.resellerOrder\\\" init-collapsed=\\\"true\\\"></readonly-reseller-order-header>\\n\\n                            <div style=\\\"clear:both; height: 1px\\\">&nbsp;</div>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\" style=\\\"margin-top:0px; margin-bottom: 10px;\\\">\\n                            <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.setWholeOrderDeliveryDate()\\\" ng-disabled=\\\"!vm.canSetWholeOrderDeliveryDate()\\\">{{ 'resellerorder.setWholeOrderDeliveryDate' | translate }}</button>\\n                            <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.setWholeOrderDiscountPercent()\\\" ng-disabled=\\\"!vm.canSetWholeOrderDiscountPercent()\\\">{{ 'resellerorder.setWholeOrderDiscountPercent' | translate }}</button>\\n                        </div>\\n\\n                        <div style=\\\"margin-top:5px;\\\">\\n                            <create-reseller-return-order-add-line-items reseller-order=\\\"vm.resellerOrder\\\" on-line-item-changed=\\\"vm.saveLineItem(lineItem)\\\" on-variant-changed=\\\"vm.saveVariant(variant)\\\"></create-reseller-return-order-add-line-items>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n    <div ui-view=\\\"wideColumnView\\\"></div>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .redText { color:red; }\\n    .salesTotalTable thead th { text-align: right; }\\n    .salesTotalTable thead th.lalign { text-align: left; }\\n    .salesTotalTable tbody tr td { text-align: right; }\\n    .salesTotalTable tbody tr td.lalign { text-align: left; }\\n    .salesTotalTable tbody tr td tbody td { text-align: right; }\\n    .salesTotalTable tbody tr td tbody td.lalign { text-align: left; }\\n    .salesTotalTable tbody tr td tbody td.sumBorder { border-top:1px solid black; }\\n    .noBottomBorder { border-top: none; }\\n    .salesTotalTable td.noTopBorder { border-top: none; }\\n</style>\\n<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"panel panel-default\\\">\\n            <div class=\\\"panel-heading font-bold\\\">\\n                <span ng-click=\\\"vm.showFilterDialog()\\\" style=\\\"height: 100%; float:left;\\\">\\n                    <i class=\\\"fa fa-cog fa-2\\\" aria-hidden=\\\"true\\\" style=\\\"height: 100%;\\\"></i>\\n                </span>\\n                <span style=\\\"margin-left:20px\\\">\\n                    <label>{{ 'salestotal.periodStart' | translate }}: </label>\\n                    {{ vm.periodStartDate | date: 'yyyy-MM-dd' }}\\n                </span>\\n                <span style=\\\"margin-left:20px\\\">\\n                    <label>{{ 'salestotal.periodEnd' | translate }}: </label>\\n                    {{ vm.periodEndDate | date: 'yyyy-MM-dd' }}\\n                </span>\\n                <span style=\\\"margin-left:20px\\\">\\n                    <label>{{ 'salestotal.store' | translate }}: </label>\\n                    {{ vm.selectedLocation && vm.selectedLocation.locationName.length > 0 ? vm.selectedLocation.locationName : '(' + ('location.location' | translate) + ')' }}\\n                </span>\\n                <span style=\\\"margin-left:20px\\\">\\n                    <label>{{ vm.includeApproved === false ? 'salestotal.hideApproved' : 'salestotal.showApproved' | translate }}</label>\\n                </span>\\n                <span style=\\\"margin-left:20px\\\">\\n                    <label>{{ vm.includeForProcessing === false ? 'salestotal.hideForProcessing' : 'salestotal.showForProcessing' | translate }}</label>\\n                </span>\\n                <div style=\\\"clear:both; height:0px;\\\">&nbsp;</div>\\n            </div>\\n            <div class=\\\"panel-body\\\">\\n                <div class=\\\"col-sm-12 col-md-12 col-lg-12\\\">\\n                    <div class=\\\"wrapper b-t text-center\\\" style=\\\"width: 80%\\\">\\n                        <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.pageSize\\\" max-size=\\\"10\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n                    </div>\\n\\n                    <table class=\\\"table salesTotalTable\\\" style=\\\"width: 80%\\\">\\n                        <thead>\\n                            <tr>\\n                                <th style=\\\"position: sticky; top: 0px; background-color:white;\\\">&nbsp;</th>\\n                                <th class=\\\"lalign\\\" style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.id' | translate }}</th>\\n                                <th class=\\\"lalign\\\" style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.periodStart' | translate }}</th>\\n                                <th class=\\\"lalign\\\" style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.periodEnd' | translate }}</th>\\n                                <th class=\\\"lalign\\\" style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.store' | translate }}</th>\\n                                <th class=\\\"lalign\\\" style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.registerNumber' | translate }}</th>\\n                                <th style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.totalReceiptCount' | translate }}</th>\\n                                <th style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.sumSalesTotal' | translate }}</th>\\n                                <th style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.diffSalesTotal' | translate }}</th>\\n                                <th style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.sumReceipts' | translate }}</th>\\n                                <th style=\\\"position: sticky; top: 0px; background-color:white;\\\">{{ 'salestotal.diffReceipts' | translate }}</th>\\n                                <th style=\\\"position: sticky; top: 0px; background-color:white;\\\">&nbsp;</th>\\n                            </tr>\\n                        </thead>\\n                        <tbody ng-if=\\\"vm.salesTotals === undefined || vm.salesTotals.length === 0\\\"><tr><td colspan=\\\"12\\\" style=\\\"text-align: center;\\\">{{ 'salestotal.noRows' | translate }}</td></tr></tbody>\\n                        <tbody ng-repeat=\\\"salesTotal in vm.salesTotals\\\">\\n                            <tr>\\n                                <td ng-click=\\\"vm.toggleRows(salesTotal)\\\">\\n                                    <span style=\\\"width: 100%;\\\" uib-tooltip=\\\"{{ salesTotal.showRows === true ? 'common.close' : 'common.open' | translate }}\\\">\\n                                        {{ salesTotal.showRows === true ? '&#9661;' : '&#9655;' }}\\n                                    </span>\\n                                </td>\\n                                <td class=\\\"lalign\\\" style=\\\"font-weight: bold;\\\">{{ salesTotal.externalId }}</td>\\n                                <td class=\\\"lalign\\\">{{ salesTotal.periodStart | date:'yyyy-MM-dd HH:mm' }}</td>\\n                                <td class=\\\"lalign\\\">{{ salesTotal.periodEnd | date:'yyyy-MM-dd HH:mm' }}</td>\\n                                <td class=\\\"lalign\\\">{{ salesTotal.location }}</td>\\n                                <td class=\\\"lalign\\\">{{ salesTotal.posId !== '0' ? salesTotal.posId : '&nbsp;' }}</td>\\n                                <td ng-class=\\\"{ redText: salesTotal.numberOfSales !== vm.getSalesNumberSum(salesTotal.saleTotals) }\\\">\\n                                    <span tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'salestotal.totalSalesTotalCount' | translate }}: {{ salesTotal.numberOfSales }} / {{ 'salestotal.totalReceiptCount' | translate }}: {{ vm.getSalesNumberSum(salesTotal.saleTotals) }}\\\">\\n                                        {{ salesTotal.numberOfSales }} / {{ vm.getSalesNumberSum(salesTotal.saleTotals) }}\\n                                    </span>\\n                                </td>\\n                                <td ng-class=\\\"{ redText: vm.roundToTwo(vm.abs(vm.totalSaleDiff(salesTotal))) !== '0.00' }\\\">\\n                                    {{ vm.roundToTwo(vm.abs(vm.totalSaleDiff(salesTotal))) }}\\n                                </td>\\n                                <td ng-class=\\\"{ redText: vm.roundToTwo(vm.abs((vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) - (vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals)))) !== '0.00' }\\\">\\n                                    {{ vm.roundToTwo(vm.abs((vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) - (vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals)))) }}\\n                                </td>\\n                                <td ng-class=\\\"{ redText: vm.roundToTwo(vm.abs(vm.totalCalculatedDiff(salesTotal))) !== '0.00' }\\\">\\n                                    {{ vm.roundToTwo(vm.abs(vm.totalCalculatedDiff(salesTotal))) }}\\n                                </td>\\n                                <td ng-class=\\\"{ redText: vm.roundToTwo(vm.abs(vm.getCalculatedPaymentSum(salesTotal.paymentTotals) - vm.getPeriodPaymentSum(salesTotal.paymentTotals))) !== '0.00' }\\\">\\n                                    {{ vm.roundToTwo(vm.abs(vm.getCalculatedPaymentSum(salesTotal.paymentTotals) - vm.getPeriodPaymentSum(salesTotal.paymentTotals))) }}\\n                                </td>\\n                                <td>\\n                                    <span ng-show=\\\"!vm.showConfirmButton(salesTotal)\\\">{{ vm.getStatusString(salesTotal.status) }}</span>\\n                                    <ca-confirm-button ng-show=\\\"vm.showConfirmButton(salesTotal)\\\" confirm-title=\\\"'salestotal.approve'\\\" ng-if=\\\"vm.viewApprovedButton()\\\" on-confirm-pressed=\\\"vm.approveSalesTotal(salesTotal)\\\"></ca-confirm-button>\\n                                </td>\\n                            </tr>\\n                            \\n                            <tr ng-hide=\\\"salesTotal.showRows === false\\\">\\n                                <td class=\\\"noTopBorder\\\">&nbsp;</td>\\n                                <td colspan=\\\"12\\\" class=\\\"noTopBorder\\\">\\n                                    <!-- Withdrawals and deposits -->\\n                                    <table class=\\\"table\\\" ng-show=\\\"vm.roundToTwo(salesTotal.withdrawalAmount) !== '0.00' || vm.roundToTwo(salesTotal.depositAmount) !== '0.00'\\\" style=\\\"width:30%;\\\">\\n                                        <thead>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\" colspan=\\\"4\\\">{{ 'salestotal.withdrawalsAndDeposits' | translate }}:</th>\\n                                            </tr>\\n                                        </thead>\\n                                        <tbody>\\n                                            <tr>\\n                                                <td>{{ 'salestotal.withdrawals' | translate }}:</td>\\n                                                <td>{{ vm.roundToTwo(salesTotal.withdrawalAmount) }}</td>\\n                                                <td>{{ 'salestotal.deposits' | translate }}:</td>\\n                                                <td>{{ vm.roundToTwo(salesTotal.depositAmount) }}</td>\\n                                            </tr>\\n                                        </tbody>\\n                                    </table>\\n\\n                                    <!-- Gross amount -->\\n                                    <table class=\\\"table\\\">\\n                                        <thead>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\" colspan=\\\"5\\\">{{ 'salestotal.salesExclVat' | translate }}:</th>\\n                                            </tr>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\">{{ 'salestotal.vatLevel' | translate }}</th>\\n                                                <th>&nbsp;</th>\\n                                                <th>{{ 'salestotal.sumSalesTotal' | translate }}</th>\\n                                                <th>{{ 'salestotal.sumReceipts' | translate }}</th>\\n                                                <th>{{ 'salestotal.differens' | translate }}</th>\\n                                            </tr>\\n                                        </thead>\\n                                        <tbody>\\n                                            <tr ng-repeat=\\\"saleTotal in salesTotal.saleTotals\\\">\\n                                                <td class=\\\"lalign\\\">{{ saleTotal.vatRate }}%</td>\\n                                                <td>&nbsp;</td>\\n                                                <td>{{ vm.roundToTwo( vm.getNetAmount(salesTotal, saleTotal) ) }}</td>\\n                                                <td>{{ vm.roundToTwo(saleTotal.calculatedNetAmount) }}</td>\\n                                                <td ng-class=\\\"{ redText: vm.roundToTwo(vm.getNetAmount(salesTotal, saleTotal) - saleTotal.calculatedNetAmount) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(vm.getNetAmount(salesTotal, saleTotal) - saleTotal.calculatedNetAmount) }}\\n                                                </td>\\n                                            </tr>\\n                                            <tr>\\n                                                <td>&nbsp;</td>\\n                                                <td>&nbsp;</td>\\n                                                <td class=\\\"sumBorder\\\">{{ vm.roundToTwo(vm.getSaleNetAmountSum(salesTotal)) }}</td>\\n                                                <td class=\\\"sumBorder\\\">{{ vm.roundToTwo(vm.getCalculatedNetAmountSum(salesTotal.saleTotals)) }}</td>\\n                                                <td class=\\\"sumBorder\\\" ng-class=\\\"{ redText: vm.roundToTwo(vm.getSaleNetAmountSum(salesTotal) - vm.getCalculatedNetAmountSum(salesTotal.saleTotals)) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(vm.getSaleNetAmountSum(salesTotal) - vm.getCalculatedNetAmountSum(salesTotal.saleTotals)) }}\\n                                                </td>\\n                                            </tr>\\n                                        </tbody>\\n                                    </table>\\n\\n                                    <!-- Vat amount -->\\n                                    <table class=\\\"table\\\">\\n                                        <thead>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\" colspan=\\\"5\\\">{{ 'salestotal.vat' | translate }}:</th>\\n                                            </tr>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\">{{ 'salestotal.vatLevel' | translate }}</th>\\n                                                <th>&nbsp;</th>\\n                                                <th>{{ 'salestotal.sumSalesTotal' | translate }}</th>\\n                                                <th>{{ 'salestotal.sumReceipts' | translate }}</th>\\n                                                <th>{{ 'salestotal.differens' | translate }}</th>\\n                                            </tr>\\n                                        </thead>\\n                                        <tbody>\\n                                            <tr ng-repeat=\\\"saleTotal in salesTotal.saleTotals\\\">\\n                                                <td class=\\\"lalign\\\">{{ saleTotal.vatRate }}%</td>\\n                                                <td>&nbsp;</td>\\n                                                <td>{{ vm.roundToTwo(saleTotal.vatAmount - saleTotal.negativeVatAmount) }}</td>\\n                                                <td>{{ vm.roundToTwo(saleTotal.calculatedVatAmount) }}</td>\\n                                                <td ng-class=\\\"{ redText: vm.roundToTwo((saleTotal.vatAmount - saleTotal.negativeVatAmount) - saleTotal.calculatedVatAmount) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo((saleTotal.vatAmount - saleTotal.negativeVatAmount) - saleTotal.calculatedVatAmount) }}\\n                                                </td>\\n                                            </tr>\\n                                            <tr>\\n                                                <td>&nbsp;</td>\\n                                                <td>&nbsp;</td>\\n                                                <td class=\\\"sumBorder\\\">{{ vm.roundToTwo(vm.getSaleVatAmountSum(salesTotal.saleTotals)) }}</td>\\n                                                <td class=\\\"sumBorder\\\">{{ vm.roundToTwo(vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) }}</td>\\n                                                <td class=\\\"sumBorder\\\" ng-class=\\\"{ redText: vm.roundToTwo(vm.getSaleVatAmountSum(salesTotal.saleTotals) - vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(vm.getSaleVatAmountSum(salesTotal.saleTotals) - vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) }}\\n                                                </td>\\n                                            </tr>\\n                                        </tbody>\\n                                    </table>\\n                                    \\n                                    <!-- Net amount -->\\n                                    <table class=\\\"table\\\">\\n                                        <thead>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\" colspan=\\\"5\\\">{{ 'salestotal.totalInclVat' | translate }}:</th>\\n                                            </tr>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\">{{ 'salestotal.vatLevel' | translate }}</th>\\n                                                <th>&nbsp;</th>\\n                                                <th>{{ 'salestotal.sumSalesTotal' | translate }}</th>\\n                                                <th>{{ 'salestotal.sumReceipts' | translate }}</th>\\n                                                <th>{{ 'salestotal.differens' | translate }}</th>\\n                                            </tr>\\n                                        </thead>\\n                                        <tbody>\\n                                            <tr ng-repeat=\\\"saleTotal in salesTotal.saleTotals\\\">\\n                                                <td class=\\\"lalign\\\">{{ saleTotal.vatRate }}%</td>\\n                                                <td>&nbsp;</td>\\n                                                <td>{{ vm.roundToTwo(( vm.getNetAmount(salesTotal, saleTotal) ) + (saleTotal.vatAmount - saleTotal.negativeVatAmount)) }}</td>\\n                                                <td>{{ vm.roundToTwo(saleTotal.calculatedNetAmount + saleTotal.calculatedVatAmount) }}</td>\\n                                                <td ng-class=\\\"{ redText: vm.roundToTwo(( vm.getNetAmount(salesTotal, saleTotal)) + (saleTotal.vatAmount - saleTotal.negativeVatAmount) - (saleTotal.calculatedNetAmount + saleTotal.calculatedVatAmount)) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(( vm.getNetAmount(salesTotal, saleTotal)) + (saleTotal.vatAmount - saleTotal.negativeVatAmount) - (saleTotal.calculatedNetAmount + saleTotal.calculatedVatAmount)) }}\\n                                                </td>\\n                                            </tr>\\n                                            <tr>\\n                                                <td>&nbsp;</td>\\n                                                <td>&nbsp;</td>\\n                                                <td class=\\\"sumBorder\\\">{{ vm.roundToTwo(vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals)) }}</td>\\n                                                <td class=\\\"sumBorder\\\">{{ vm.roundToTwo(vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) }}</td>\\n                                                <td class=\\\"sumBorder\\\" ng-class=\\\"{ redText: vm.roundToTwo((vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals)) - (vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals))) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo((vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals)) - (vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals))) }}\\n                                                </td>\\n                                            </tr>\\n                                        </tbody>\\n                                    </table>\\n\\n                                    <div style=\\\"height:20px;\\\">&nbsp;</div>\\n\\n                                    <!-- Payments -->\\n                                    <table class=\\\"table\\\">\\n                                        <thead>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\" colspan=\\\"5\\\">{{ 'salestotal.payments' | translate }}:</th>\\n                                            </tr>\\n                                            <tr>\\n                                                <th class=\\\"lalign\\\">{{ 'salestotal.currency' | translate }}</th>\\n                                                <th class=\\\"lalign\\\">{{ 'salestotal.paymentType' | translate }}</th>\\n                                                <th>{{ 'salestotal.sumSalesTotal' | translate }}</th>\\n                                                <th>{{ 'salestotal.sumReceipts' | translate }}</th>\\n                                                <th>{{ 'salestotal.differens' | translate }}</th>\\n                                            </tr>\\n                                        </thead>\\n                                        <tbody>\\n                                            <tr ng-repeat=\\\"paymentTotal in salesTotal.paymentTotals\\\">\\n                                                <td class=\\\"lalign\\\">{{ paymentTotal.currencyCode }}</td>\\n                                                <td class=\\\"lalign\\\">{{ paymentTotal.paymentTransactionTypeName }}</td>\\n                                                <td>{{ vm.roundToTwo(paymentTotal.amount - paymentTotal.negativeAmount) }}</td>\\n                                                <td>{{ vm.roundToTwo(paymentTotal.calculatedAmount) }}</td>\\n                                                <td>\\n                                                    <span ng-class=\\\"{ redText: vm.roundToTwo((paymentTotal.amount - paymentTotal.negativeAmount) - paymentTotal.calculatedAmount) !== '0.00' }\\\">\\n                                                        {{ vm.roundToTwo((paymentTotal.amount - paymentTotal.negativeAmount) - paymentTotal.calculatedAmount) }}\\n                                                    </span>\\n                                                </td>\\n                                            </tr>\\n                                            <tr>\\n                                                <td>&nbsp;</td>\\n                                                <td>&nbsp;</td>\\n                                                <td class=\\\"sumBorder\\\">{{ vm.roundToTwo(vm.getPeriodPaymentSum(salesTotal.paymentTotals)) }}</td>\\n                                                <td class=\\\"sumBorder\\\">{{ vm.roundToTwo(vm.getCalculatedPaymentSum(salesTotal.paymentTotals)) }}</td>\\n                                                <td class=\\\"sumBorder\\\" ng-class=\\\"{ redText: vm.roundToTwo(vm.getPeriodPaymentSum(salesTotal.paymentTotals) - vm.getCalculatedPaymentSum(salesTotal.paymentTotals)) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(vm.getPeriodPaymentSum(salesTotal.paymentTotals) - vm.getCalculatedPaymentSum(salesTotal.paymentTotals)) }}\\n                                                </td>\\n                                            </tr>\\n                                        </tbody>\\n                                    </table>\\n\\n                                    <!-- Summary, shows same comparison as in header -->\\n                                    <table class=\\\"table\\\" style=\\\"width:50%\\\" ng-show=\\\"vm.showTotalDiffTable(salesTotal)\\\">\\n                                        <thead>\\n                                            <tr>\\n                                                <th>&nbsp;</th>\\n                                                <th>{{ 'salestotal.sumSalesTotal' | translate }}</th>\\n                                                <th>{{ 'salestotal.sumReceipts' | translate }}</th>\\n                                                <th>{{ 'salestotal.differens' | translate }}</th>\\n                                            </tr>\\n                                        </thead>\\n                                        <tbody>\\n                                            <tr>\\n                                                <td style=\\\"font-weight:bold;\\\">{{ 'salestotal.totalInclVat' | translate }}</td>\\n                                                <td>{{ vm.roundToTwo(vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals)) }}</td>\\n                                                <td>{{ vm.roundToTwo(vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) }}</td>\\n                                                <td ng-class=\\\"{ redText: vm.roundToTwo((vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) - (vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals))) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(vm.abs((vm.getCalculatedNetAmountSum(salesTotal.saleTotals) + vm.getCalculatedVatAmountSum(salesTotal.saleTotals)) - (vm.getSaleNetAmountSum(salesTotal) + vm.getSaleVatAmountSum(salesTotal.saleTotals)))) }}\\n                                                </td> \\n                                            </tr>\\n                                            <tr>\\n                                                <td style=\\\"font-weight:bold;\\\">{{ 'salestotal.payments' | translate }}</td>\\n                                                <td>{{ vm.roundToTwo(vm.getPeriodPaymentSum(salesTotal.paymentTotals)) }}</td>\\n                                                <td>{{ vm.roundToTwo(vm.getCalculatedPaymentSum(salesTotal.paymentTotals)) }}</td>\\n                                                <td ng-class=\\\"{ redText: vm.roundToTwo(vm.getCalculatedPaymentSum(salesTotal.paymentTotals) - vm.getPeriodPaymentSum(salesTotal.paymentTotals)) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(vm.abs(vm.getCalculatedPaymentSum(salesTotal.paymentTotals) - vm.getPeriodPaymentSum(salesTotal.paymentTotals))) }}\\n                                                </td>\\n                                            </tr>\\n                                            <tr>\\n                                                <td>&nbsp;</td>\\n                                                <td class=\\\"sumBorder\\\" ng-class=\\\"{ redText: vm.roundToTwo(vm.totalSaleDiff(salesTotal)) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(vm.abs(vm.totalSaleDiff(salesTotal))) }}\\n                                                </td>\\n                                                <td class=\\\"sumBorder\\\" ng-class=\\\"{ redText: vm.roundToTwo(vm.totalCalculatedDiff(salesTotal)) !== '0.00' }\\\">\\n                                                    {{ vm.roundToTwo(vm.abs(vm.totalCalculatedDiff(salesTotal))) }}\\n                                                </td>\\n                                                <td>&nbsp;</td>\\n                                            </tr>\\n                                        </tbody>\\n                                    </table>\\n                                </td>\\n                            </tr>\\n                        </tbody>\\n                    </table>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"table\\\">\\n    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.rowData.length !== 0\\\" style=\\\"font-weight: bold; background-color:#fff\\\">\\n        {{'common.totalNumberOfRows' | translate}}: {{vm.rowData.length}}\\n    </div>\\n    <table class=\\\"table stockHistoryTable\\\" style=\\\"background-color: #fff;\\\">\\n        <thead>\\n            <tr>\\n                <th ng-repeat=\\\"col in vm.transGrid.columns\\\">{{col.name}}</th>\\n                <th>Total</th>\\n            </tr>\\n        </thead>\\n        <tbody ng-repeat=\\\"row in vm.displayedRows\\\">\\n            <tr>\\n                <td ng-repeat=\\\"col in row.columns\\\">\\n                    <a ng-if=\\\"col.id === 'referenceDescription' && vm.showLink(row.referenceType)\\\" class='ca-celllink' ng-click=\\\"vm.goToReference($event, row)\\\">{{row[col.id]}}</a>\\n                    <span ng-show=\\\"col.id !== 'referenceDescription' || !vm.showLink(row.referenceType)\\\">{{row[col.id]}}</span>\\n                </td>\\n                <td>\\n                    {{ row.sum }}\\n                </td>\\n            </tr>\\n            <tr ng-if=\\\"row.comment && row.comment.length > 0\\\">\\n                <td colspan=\\\"{{row.columns.length + 1}}\\\" style=\\\"padding: 0px 15px 15px 30px;\\\">\\n                    <span>{{'stocktransaction.comment' | translate}}:</span>\\n                    <span>{{row.comment}}</span>\\n                </td>\\n            </tr>\\n        </tbody>\\n    </table>\\n    <div class=\\\"col-lg-12 text-center\\\" style=\\\"max-width: 1178px; margin-bottom: 20px;\\\">\\n        <div uib-pagination boundary-links=\\\"true\\\"\\n             total-items=\\\"vm.rowData.length\\\"\\n             items-per-page=\\\"vm.elementsPerPage\\\"\\n             max-size=\\\"10\\\"\\n             ng-change=\\\"vm.pageChanged()\\\"\\n             ng-model=\\\"vm.currentPage\\\"\\n             class=\\\"pagination-sm\\\"\\n             previous-text=\\\"&lsaquo;\\\"\\n             next-text=\\\"&rsaquo;\\\"\\n             first-text=\\\"&laquo;\\\"\\n             last-text=\\\"&raquo;\\\">\\n        </div>\\n    </div>\\n    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">{{vm.article.articleNumber}} {{vm.article.articleName}} </div>\\n    <div class=\\\"body bg-gray\\\">\\n        <label class=\\\"col-lg-12 control-label\\\"> <span class=\\\"h3\\\"> {{vm.articleVariant.variantDetail1.variantDetailName}} </span> </label></div>\\n\\n        <ca-article-stocks-history \\n            article-id=\\\"vm.articleId\\\" \\n            location-id=\\\"vm.locationId\\\" \\n            article-variant-id=\\\"vm.articleVariantId\\\" \\n            navigated=\\\"vm.close()\\\">\\n\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>\\n            \\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.openLabelsModal()\\\">\\n                {{'article.getlabels' | translate}}\\n            </button>\\n            <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('product.articles.article')\\\"> \\n                {{'article.articles' | translate}} \\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.modelinventorysearch.modelinventory')\\\">\\n                {{'stock.inventorymodel' | translate}}\\n            </button>\\n            <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.orderingpointssearch.orderingpoints')\\\"  ng-disabled=\\\"!vm.mayReadStockLogistics\\\"> \\n                {{'stock.orderingpoints' | translate}} \\n            </button>\\n        </span>\\n        <div>&nbsp;</div>\\n        <span>{{vm.selectedArticle.alternativeArticleNumber}} {{vm.selectedArticle.articleName}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <style>\\n                .column-container {\\n                display: flex;\\n                flex-direction: column;\\n                justify-content: space-between;\\n                }\\n                .color-container {\\n                display: flex;\\n                flex-direction: column;\\n                justify-content: space-between;\\n                }\\n                .flex-container {\\n                display: flex; \\n                flex-direction: row; \\n                justify-content: space-between;\\n                }\\n                .is-Current-color {\\n                    height: 15px;\\n                    width: 15px;\\n                    background-color: dodgerblue;\\n                    border-radius: 50%;\\n                    display: inline-block;\\n                }\\n                .not-Current-color {\\n                    height: 15px;\\n                    width: 15px;\\n                    background-color: red;\\n                    border-radius: 50%;\\n                    display: inline-block;\\n                }\\n                .iscurrent-color{\\n                    color: dodgerblue;\\n                }\\n                .not-iscurrent-color{\\n                    color: red;\\n                }\\n            </style>\\n            <div class=\\\"flex-container\\\">\\n                <div class=\\\"column-container\\\">\\n                    <div>\\n                        <span style=\\\"display:inline-block; height: 100%; vertical-align: middle;\\\">{{'common.filter' | translate}}:</span>\\n                    </div>\\n                    <div> \\n                        <span style=\\\"display:inline-block;\\\"><ui-select ng-model=\\\"vm.selectedFilter.location\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab style=\\\"max-width: 250px;\\\">\\n                            <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\n                            <ui-select-choices repeat=\\\"location in vm.locationFilter | filter:{'locationName': $select.search}\\\">\\n                                <span>{{location.locationName}}</span>\\n                            </ui-select-choices>\\n                        </ui-select></span>\\n                        <span style=\\\"display:inline-block;\\\"><ui-select ng-model=\\\"vm.selectedFilter.variant\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab style=\\\"max-width: 250px;\\\">\\n                            <ui-select-match placeholder=\\\"\\\">{{$select.selected.variantDetailName}}</ui-select-match>\\n                            <ui-select-choices repeat=\\\"variant in vm.variantFilters | filter:{'variantDetailName': $select.search}\\\">\\n                                <span>{{variant.variantDetailName}}</span>\\n                            </ui-select-choices>\\n                        </ui-select></span>\\n                    </div>\\n                </div>\\n\\n\\n                <div class=\\\"color-container\\\">\\n                    <div>\\n                       <span  style=\\\"margin-right: 18px;\\\">{{'stock.current' | translate}}:</span> \\n                       <span class=\\\"is-Current-color\\\"></span>\\n                    </div>\\n                    <div class=\\\"flex-conatiner\\\" style=\\\"margin-bottom : 10px;\\\" >\\n                        <span style=\\\"margin-right: 5px;\\\">{{'stock.notCurrent' | translate}}:</span> \\n                        <span class=\\\"not-Current-color\\\"></span>\\n                    </div>\\n                \\n                </div>\\n            </div>\\n            <style>\\n                tr.productstockrow:hover {\\n                    cursor: pointer;\\n                }\\n                table.stockVariantTable tbody { border-top: none; }\\n                table.stockVariantTable tbody tr { border-top: none; }\\n                table.stockVariantTable tbody:nth-child(even) { background: #f0f3f4; }\\n                table.stockVariantTable tbody:nth-child(even) .trArticleStocksHistory { background: #fff; }\\n                table.stockVariantTable tbody:nth-child(odd) { background: transparent; }\\n                table.stockVariantTable tbody:last-child { background: #f0f3f4; font-weight: bold; }\\n                table.stockVariantTable tbody:last-child tr { background: #f0f3f4; font-weight: bold; border-top: 2px solid #58666e; }\\n            </style>\\n            \\n            <div ng-hide=\\\"true\\\"> <!-- Remove 'ng-hide=\\\"true\\\"' when we're ready to show reserved quantity -->\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.shouldDisplayDetails\\\" />\\n                    <i></i>\\n                    {{'stock.displaydetails' | translate}}\\n                </label>\\n            </div>\\n\\n            <div class=\\\"table-responsive\\\">\\n                <span ng-if=\\\"vm.shouldDisplayDetails\\\">\\n                    <div>\\n                        <span>{{'stock.ordered' | translate}}:</span> \\n                        <i class=\\\"fa fa-inbox text-m\\\"></i>\\n                    </div>\\n                    <div class=\\\"flex-conatiner\\\" style=\\\"margin-bottom : 10px;\\\" >\\n                        <span\\\">{{'stock.reserved' | translate}}:</span> \\n                        <i class=\\\"fa fa-lock text-m\\\"></i>\\n                    </div>\\n                </span>\\n            <table class=\\\"table table-condensed stockVariantTable\\\">\\n                <thead>\\n                    <tr>\\n                        <th>&nbsp;</th>\\n                        <th>{{'location.location' | translate}}</th>\\n                        <th>{{'article.variant' | translate}}</th>\\n                        <th ng-repeat=\\\"col in vm.variantsGrid.columns\\\">{{col.name | translate}}</th>\\n                        <th>{{'stock.sumQuantity' | translate}}</th>\\n                    </tr>\\n                </thead>\\n                <tbody ng-repeat=\\\"row in vm.rowData | filter: vm.filterRowData\\\">\\n                    <tr class=\\\"productstockrow\\\">\\n                        <td ng-click=\\\"vm.setSelectedLocationAndVariant1(row)\\\">\\n                            <span class=\\\"hidden-folded pull-right text-muted ng-scope\\\">\\n                                <i class=\\\"fa fa-fw fa-angle-right\\\" ng-hide=\\\"row.showHistory\\\"></i>\\n                                <i class=\\\"fa fa-fw fa-angle-down ng-hide\\\" ng-show=\\\"row.showHistory\\\"></i>\\n                            </span>\\n                        </td>\\n\\n                        <td>\\n                            {{row.locationName}}\\n                        </td>\\n\\n                        <td>\\n                            {{row.variantDetails1Name}}\\n                        </td>\\n\\n                        <td ng-repeat=\\\"col in vm.variantsGrid.columns\\\">\\n                            <span class=\\\"text-ellipsis\\\" ng-class=\\\"{'iscurrent-color': vm.shouldHaveIsCurrentColor(row), 'not-iscurrent-color' : vm.shouldNotHaveIsCurrentStyle(row)}\\\">\\n                                <span>\\n                                    {{(row[col.id].quantity !== undefined) ? row[col.id].quantity : 0}} \\n                                </span>\\n                                <span ng-if=\\\"vm.shouldDisplayDetails\\\">\\n                                    (\\n                                </span>\\n                                <span ng-if=\\\"vm.shouldDisplayDetails\\\">\\n                                    <i class=\\\"fa fa-inbox text-m\\\"></i>: {{(row[col.id].orderedQuantity !== undefined) ? row[col.id].orderedQuantity : 0}}\\n                                </span>\\n                                <span ng-if=\\\"vm.shouldDisplayDetails\\\">\\n                                    <i class=\\\"fa fa-lock text-m\\\"></i>: {{(row[col.id].reservedQuantity !== undefined) ? row[col.id].reservedQuantity : 0}}\\n                                </span>\\n                                <span ng-if=\\\"vm.shouldDisplayDetails\\\">\\n                                    )\\n                                </span>\\n                            </span>\\n                        </td>\\n\\n                        <td>\\n                            {{row.sum}}\\n                        </td>\\n\\n                    </tr>\\n                    <tr ng-show=\\\"vm.shouldShowDetails(row)\\\" class=\\\"trArticleStocksHistory\\\">\\n                        <td>&nbsp;</td>\\n                        <td colspan=\\\"{{(vm.variantsGrid.columns.length + 3)}}\\\">\\n                            <ca-article-stocks-history \\n                                ng-if=\\\"vm.selectedArticle.id && row.location.id && row.variantDetails1Id\\\" \\n                                article-id=\\\"vm.selectedArticle.id\\\" \\n                                location-id=\\\"row.location.id\\\" \\n                                article-variant-id=\\\"row.variantDetails1Id\\\"\\n                                show-sum=\\\"true\\\"\\n                                disabled=\\\"!vm.shouldShowDetails(row)\\\"\\n                                >\\n                        </td>\\n                        <td>&nbsp;</td>\\n                    </tr>\\n                </tbody>\\n                <tbody>\\n                    <tr>\\n                        <td>&nbsp;</td>\\n                        <td>&nbsp;</td>\\n                        <td>&nbsp;</td>\\n                        <td ng-repeat=\\\"col in vm.variantsGrid.columns\\\">\\n                            <div>\\n                                <span ng-if=\\\"!(col.id === 'locationName' || col.id === 'variantDetails1Name')\\\">{{ vm.getColumnSum(col) }}</span>\\n                            </div>\\n                        </td>\\n                        <td>\\n                            <span>{{ vm.getTotalSum() }}</span>\\n                        </td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n            </div>\\n        </div>\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<ca-article-list\\n    articles=\\\"vm.articles\\\"\\n    filter=\\\"vm.filter\\\"\\n    current-page=\\\"vm.currentPage\\\"\\n    page-size=\\\"vm.pageSize\\\"\\n    on-article-selected=\\\"vm.selectArticle(article)\\\"\\n    show-new-button=\\\"false\\\"\\n    show-filter-dropdown=\\\"true\\\"\\n    match=\\\"vm.match\\\"\\n    inactive=\\\"vm.inactive\\\"\\n    ></ca-article-list>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.openLabelsModal()\\\">\\n                {{'article.getlabels' | translate}}\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('product.articles.article')\\\"> \\n                {{'article.articles' | translate}} \\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.orderingpointssearch.orderingpoints')\\\" ng-disabled=\\\"!vm.mayReadStockLogistics\\\">\\n                {{'stock.orderingpoints' | translate}}\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.articlesearch.article')\\\">\\n                {{'common.stock' | translate}}\\n            </button>\\n            <div style =\\\"padding-top : 8px\\\">\\n                <button ng-disabled=\\\"vm.saveButtonDisable\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.saveChanges()\\\"> {{'common.save' | translate}} {{' '}} {{'stock.scannerinventorying' | translate}} </button>\\n            </div>\\n            \\n        </span>\\n        <div>&nbsp;</div>\\n        <span>{{vm.selectedArticle.alternativeArticleNumber + ' ' + vm.selectedArticle.articleName}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n\\n        <label class=\\\"col-sm-4 control-label\\\">{{'stock.chooselocation' | translate}}:</label>\\n\\n        <div class=\\\"col-lg-8\\\">\\n            <wj-auto-complete\\n                    selected-index-changed=\\\"vm.selectedLocationChanged(s)\\\"\\n                    placeholder=\\\"{{'stock.nostock' | translate}}\\\"\\n                    show-drop-down-button=\\\"true\\\"\\n                    items-source=\\\"vm.stocksLocations\\\"\\n                    display-member-path=\\\"locationName\\\"\\n                    is-editable=\\\"false\\\"\\n                    required=\\\"true\\\"\\n                    style=\\\"width:100%\\\">\\n            </wj-auto-complete>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\" ng-hide=\\\"vm.inventory.deliverImmediately\\\">\\n            &nbsp;\\n        </div>\\n\\n        <label class=\\\"col-lg-4 control-label\\\">{{'inventory.inventorydescription' | translate}}:</label>\\n\\n        <div class=\\\"col-lg-8\\\">\\n            <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                   type=\\\"text\\\"\\n                   placeholder=\\\"\\\"\\n                   ng-model=\\\"vm.inventory.inventoryDescription\\\"/>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n\\n        <label class=\\\"col-lg-4 control-label\\\">{{'stock.inventoriesbeingprocessed' | translate}}: {{ vm.inventoriesPending.count }}</label>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n        \\n        <div class=\\\"col-lg-12\\\">\\n            <wj-flex-grid style=\\\"width: auto\\\" class=\\\"orders-flex-grid\\\"\\n                initialized=\\\"vm.captureVariantsGrid(s)\\\"\\n                beginning-edit=\\\"vm.beginEditing(s, e)\\\"\\n                cell-edit-ended=\\\"vm.editEnded(s, e)\\\"\\n                id=\\\"variantsGrid\\\">\\n            </wj-flex-grid>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <button ng-click=\\\"vm.zeroAllQuantities()\\\" class=\\\"btn btn-sm btn-default\\\"> {{'common.zeroall' | translate}} </button>\\n\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <wj-flex-grid initialized=\\\"vm.captureTotalsGrid(s)\\\" items-source=\\\"vm.totals\\\" headers-visibility=\\\"Column\\\" selection-mode=\\\"None\\\" class=\\\"orders-flex-grid\\\" is-read-only=\\\"false\\\">\\n                <wj-flex-grid-column header=\\\"{{'article.variantdetail1' | translate}}\\\" binding=\\\"sumName\\\" width=\\\"*\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n                <wj-flex-grid-column header=\\\"{{'stock.theoreticalbalance' | translate}}\\\" binding=\\\"theoreticalTotal\\\" width=\\\"*\\\" style=\\\"color: transparent\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n                <wj-flex-grid-column header=\\\"{{'stock.balanceinventoried' | translate}}\\\" binding=\\\"inventoriedTotal\\\" width=\\\"*\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n                <wj-flex-grid-column header=\\\"{{'stock.difference' | translate}}\\\" binding=\\\"difference\\\" width=\\\"*\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n            </wj-flex-grid>\\n        </div>\\n\\n    </div>\\n\\n    <nav id=\\\"inventoryContextMenu\\\" style=\\\"position:fixed; background-color:#edf1f2;\\n         visibility:hidden\\\" control=\\\"contextMenu\\\" class=\\\"navi clearfix\\\">\\n        <ul class=\\\"nav\\\">\\n            <li>\\n                <a href=\\\"\\\" ng-click=\\\"vm.contextMenuZeroRow()\\\">\\n                    <span>{{'common.zerorow' | translate}}</span>\\n                </a>\\n            </li>\\n        </ul>\\n    </nav>\\n\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\" style=\\\"max-width: 960px;\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>{{'stock.stockpickinglist' | translate}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <form class=\\\"form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-4\\\">{{'location.location' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\"> \\n                    <ca-singleselect model=\\\"vm.location\\\" choices=\\\"vm.locations\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'locationName'\\\" mandatory=\\\"true\\\"/> \\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-4\\\">{{'common.startDate' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <wj-input-date-time\\n                        value=\\\"vm.startDate\\\"\\n                        min=\\\"2000-01-01\\\"\\n                        timeStep=\\\"60\\\"\\n                        format=\\\"yyyy-MM-dd HH:mm\\\">\\n                    </wj-input-date-time>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-4\\\">{{'common.endDate' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <wj-input-date-time\\n                        value=\\\"vm.endDate\\\"\\n                        min=\\\"2000-01-01\\\"\\n                        timeStep=\\\"60\\\"\\n                        format=\\\"yyyy-MM-dd HH:mm\\\">\\n                    </wj-input-date-time>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-4\\\">{{'common.sortorder' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <div class=\\\"col-sm-4\\\" style=\\\"padding-left: 0px;\\\">\\n                        <ca-singleselect model=\\\"vm.sortOrder1\\\" choices=\\\"vm.sortorders\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\"/>\\n                    </div>\\n                    <div class=\\\"col-sm-4\\\" style=\\\"padding-left: 0px;\\\">\\n                        <ca-singleselect model=\\\"vm.sortOrder2\\\" choices=\\\"vm.sortorders\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"false\\\"/> \\n                    </div>\\n                    <div class=\\\"col-sm-4\\\" style=\\\"padding-left: 0px;\\\">\\n                        <ca-singleselect model=\\\"vm.sortOrder3\\\" choices=\\\"vm.sortorders\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"false\\\"/>\\n                    </div>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\" style=\\\"margin-top:20px;\\\">\\n                <label class=\\\"col-sm-4\\\">{{'stock.print.simplifiedPortraitOrientation' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.portraitOrientation\\\" />\\n                        <i></i>\\n                    </label>\\n                </div>\\n            </div>\\n\\n            <div ng-hide=\\\"vm.portraitOrientation\\\" style=\\\"margin-top:20px;\\\">\\n                <div class=\\\"form-group\\\">\\n                    <label class=\\\"col-sm-4\\\">{{'stock.print.includeArticleNumber' | translate}}:</label>\\n                    <div class=\\\"col-sm-6\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeArticleNumber\\\" />\\n                            <i></i>\\n                        </label>\\n                    </div>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                    <label class=\\\"col-sm-4\\\">{{'stock.print.showCollection' | translate}}:</label>\\n                    <div class=\\\"col-sm-6\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showCollection\\\" />\\n                            <i></i>\\n                        </label>\\n                    </div>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                    <label class=\\\"col-sm-4\\\">{{'stock.print.showDepartment' | translate}}:</label>\\n                    <div class=\\\"col-sm-6\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showDepartment\\\" />\\n                            <i></i>\\n                        </label>\\n                    </div>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                    <label class=\\\"col-sm-4\\\">{{'stock.print.includeStorageItems' | translate}}:</label>\\n                    <div class=\\\"col-sm-6\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeStorageItems\\\" />\\n                            <i></i>\\n                        </label>\\n                    </div>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                    <label class=\\\"col-sm-4\\\">{{'stock.print.showRestOfStorages' | translate}}:</label>\\n                    <div class=\\\"col-sm-6\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showRestOfLocations\\\" />\\n                            <i></i>\\n                        </label>\\n                    </div>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                    <label class=\\\"col-sm-4\\\">{{'stock.print.includeIsPhotographed' | translate}}:</label>\\n                    <div class=\\\"col-sm-6\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeIsPhotographed\\\" />\\n                            <i></i>\\n                        </label>\\n                    </div>\\n                </div>\\n                <div class=\\\"form-group\\\">\\n                    <label class=\\\"col-sm-4\\\">{{'stock.print.includeZeroAndNegativeQuantity' | translate}}:</label>\\n                    <div class=\\\"col-sm-6\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeZeroAndNegativeQuantity\\\" />\\n                            <i></i>\\n                        </label>\\n                    </div>\\n                </div>\\n            </div>\\n                            \\n            <div class=\\\"form-group\\\" style=\\\"margin-top:20px;\\\">\\n                <label class=\\\"col-sm-4\\\">{{'common.grouping' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <ca-singleselect model=\\\"vm.selectedGrouping\\\" choices=\\\"vm.groupings\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'name'\\\" mandatory=\\\"true\\\"/> \\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group\\\" style=\\\"margin-top:20px;\\\">\\n                <div class=\\\"col-sm-6\\\">\\n                    <button ng-click=\\\"vm.getStockPickingList()\\\" ng-disabled=\\\"vm.canPrintStockPickingList()\\\" class=\\\"btn btn-primary\\\">{{'common.get' | translate}}</button>\\n                </div>\\n            </div>\\n        </form>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\" style=\\\"max-width: 960px;\\\">\\r\\n    <div class=\\\"panel-heading font-bold\\\">\\r\\n        <span>{{'reports.ui.reports' | translate}} - {{'reports.ui.salethroughput' | translate}}</span>\\r\\n    </div>\\r\\n    <div class=\\\"panel-body\\\">\\r\\n        <form class=\\\"form-horizontal\\\">\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'time.startDate' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <wj-input-date value=\\\"vm.reportparameters.startDate\\\"\\r\\n                                    min=\\\"2000-01-01\\\"\\r\\n                                    format=\\\"yyyy-MM-dd\\\"\\r\\n                                    ng-model=\\\"vm.reportParameters.startDate\\\">\\r\\n                    </wj-input-date>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'time.date' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <wj-input-date value=\\\"vm.reportparameters.endDate\\\"\\r\\n                                    min=\\\"2000-01-01\\\"\\r\\n                                    format=\\\"yyyy-MM-dd\\\"\\r\\n                                    ng-model=\\\"vm.reportParameters.endDate\\\">\\r\\n                    </wj-input-date>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            \\r\\n            <div class=\\\"form-group\\\" style=\\\"margin-top:20px;\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'common.include' | translate}} {{'article.iscurrent' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <label class=\\\"i-checks m-t-xs\\\">\\r\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.reportParameters.includeIsCurrent\\\" />\\r\\n                        <i></i>\\r\\n                    </label>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'reports.salesthroughput.articlecollection' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <ca-multiselect model=\\\"vm.selectedCollections\\\" choices=\\\"vm.collections\\\" order-by=\\\"'id'\\\" placeholder=\\\"'reports.salesthroughput.articlecollection'\\\" item-renderer=\\\"['collectionCode']\\\"/>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'reports.salesthroughput.brand' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <ca-multiselect model=\\\"vm.selectedBrands\\\" choices=\\\"vm.brands\\\" order-by=\\\"'id'\\\" placeholder=\\\"'reports.salesthroughput.brand'\\\" item-renderer=\\\"['brandDescription']\\\"/>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.stockvalue.locations' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <ca-multiselect model=\\\"vm.selectedLocations\\\" choices=\\\"vm.locations\\\" order-by=\\\"'locationName'\\\" placeholder=\\\"'contacts.locations'\\\" item-renderer=\\\"['locationName']\\\"/>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.stockvalue.departments' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <ca-multiselect model=\\\"vm.selectedDepartments\\\" choices=\\\"vm.departments\\\" order-by=\\\"'departmentCode'\\\" placeholder=\\\"'reports.salesthroughput.department'\\\" item-renderer=\\\"['departmentCode', 'departmentDescription']\\\"/>\\r\\n                </div>\\r\\n            </div>\\r\\n            \\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.grouping' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <ca-singleselect model=\\\"vm.selectedGrouping\\\" choices=\\\"vm.groupings\\\" item-renderer=\\\"'label'\\\" mandatory=\\\"true\\\"/> \\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.fileformat' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <button class=\\\"btn btn-default\\\" ng-class=\\\"{'btn-dark' : vm.fileFormatChoice.csv}\\\" ng-click=\\\"vm.switchToCsv()\\\"> CSV </button>\\r\\n                    <button class=\\\"btn btn-default\\\" ng-class=\\\"{'btn-dark' : vm.fileFormatChoice.pdf}\\\" ng-click=\\\"vm.switchToPdf()\\\"> PDF </button>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.getSaleThroughputReport()\\\">{{'common.get' | translate}}</button>\\r\\n                </div>\\r\\n            </div>\\r\\n        </form>\\r\\n    </div>\\r\\n</div>\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\" style=\\\"max-width: 960px;\\\">\\r\\n    <div class=\\\"panel-heading font-bold\\\">\\r\\n        <span>{{'reports.ui.reports' | translate}} - {{'reports.ui.soldstock' | translate}}</span>\\r\\n    </div>\\r\\n    <div class=\\\"panel-body\\\">\\r\\n        <form class=\\\"form-horizontal\\\">\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'time.date' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <wj-input-date value=\\\"vm.reportparameters.startDate\\\"\\r\\n                                    min=\\\"2000-01-01\\\"\\r\\n                                    format=\\\"yyyy-MM-dd\\\"\\r\\n                                    ng-model=\\\"vm.reportParameters.startDate\\\">\\r\\n                    </wj-input-date>\\r\\n                </div>\\r\\n            </div>\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.stockvalue.locations' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <ca-multiselect model=\\\"vm.selectedLocations\\\" choices=\\\"vm.locations\\\" order-by=\\\"'locationName'\\\" placeholder=\\\"'contacts.locations'\\\" item-renderer=\\\"['locationName']\\\"/>\\r\\n                </div>\\r\\n            </div>\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.stockvalue.companies' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <ca-multiselect model=\\\"vm.selectedCompanies\\\" choices=\\\"vm.companies\\\" order-by=\\\"'companyName'\\\" placeholder=\\\"'article.addCompany'\\\" item-renderer=\\\"['companyName']\\\"/>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                    <label class=\\\"col-sm-3\\\">{{'common.sortorder' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <div class=\\\"col-sm-4\\\" style=\\\"padding-left: 0px;\\\">\\r\\n                        <ca-singleselect model=\\\"vm.sortOrder1\\\" choices=\\\"vm.sortorders\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\"/>\\r\\n                    </div>\\r\\n                    <div class=\\\"col-sm-4\\\" style=\\\"padding-left: 0px;\\\">\\r\\n                        <ca-singleselect model=\\\"vm.sortOrder2\\\" choices=\\\"vm.sortorders\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"false\\\"/> \\r\\n                    </div>\\r\\n                    <div class=\\\"col-sm-4\\\" style=\\\"padding-left: 0px;\\\">\\r\\n                        <ca-singleselect model=\\\"vm.sortOrder3\\\" choices=\\\"vm.sortorders\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"false\\\"/>\\r\\n                    </div>\\r\\n                </div>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"form-group\\\">\\r\\n                <label class=\\\"col-sm-3\\\">{{'common.language' | translate}}:</label>\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <button class=\\\"btn\\\" ng-click=\\\"vm.printLanguage = 'se'\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'se', 'btn-default': vm.printLanguage !== 'se' }\\\">Svenska</button>\\r\\n                    <button class=\\\"btn\\\" ng-click=\\\"vm.printLanguage = 'en'\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'en', 'btn-default': vm.printLanguage !== 'en' }\\\">English</button>\\r\\n                </div>\\r\\n            </div>\\r\\n            <div class=\\\"form-group\\\" style=\\\"margin-top:20px;\\\">\\r\\n                <div class=\\\"col-sm-6\\\">\\r\\n                    <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.getSoldStockReport()\\\">{{'common.get' | translate}}</button>\\r\\n                </div>\\r\\n            </div>\\r\\n        </form>\\r\\n    </div>\\r\\n</div>\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\" style=\\\"max-width: 960px;\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>{{'reports.ui.reports' | translate}} - {{'reports.ui.stockvalue' | translate}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <form class=\\\"form-horizontal\\\">\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.stockvalue.stockEndDate' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <wj-input-date value=\\\"vm.reportparameters.stockenddate\\\"\\n                                min=\\\"2000-01-01\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                ng-model=\\\"vm.reportParameters.stockEndDate\\\">\\n                    </wj-input-date>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.stockvalue.inventoryDays' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <ui-select ng-model=\\\"vm.selectedInventoryDays\\\">\\n                        <ui-select-match placeholder=\\\"{{'reports.ui.stockvalue.inventoryDays' | translate}}\\\">\\n                            <span>{{$select.selected.name}}</span>\\n                        </ui-select-match>\\n                        <ui-select-choices repeat=\\\"day in vm.inventoryDayList\\\">\\n                            <span>{{day.name}}</span>\\n                        </ui-select-choices>\\n                    </ui-select>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">{{'reports.ui.stockvalue.locations' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <ca-multiselect model=\\\"vm.reportParameters.locations\\\" choices=\\\"vm.locations\\\" order-by=\\\"'locationName'\\\" placeholder=\\\"'contacts.locations'\\\" item-renderer=\\\"['locationName']\\\"/>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">{{'stock.groupinglevel' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <ui-select ng-model=\\\"vm.selectedGroupingLevel\\\">\\n                        <ui-select-match placeholder=\\\"{{'stock.groupinglevel' | translate}}\\\">\\n                            <span>{{$select.selected.name | translate}}</span>\\n                        </ui-select-match>\\n                        <ui-select-choices repeat=\\\"lvl in vm.groupingLevels\\\">\\n                            <span>{{lvl.name | translate}}</span>\\n                        </ui-select-choices>\\n                    </ui-select>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-if=\\\"vm.selectedGroupingLevel && vm.selectedGroupingLevel.value == 'articleVariant1Variant2Level'\\\">\\n                <label class=\\\"col-sm-3\\\">{{'reports.stockvalue.includeBarcode' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeBarcode\\\" />\\n                        <i></i>\\n                    </label>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\" ng-if=\\\"vm.selectedGroupingLevel && vm.selectedGroupingLevel.value == 'articleVariant1Variant2Level'\\\">\\n                <label class=\\\"col-sm-3\\\">{{'reports.stockvalue.includeExternalId' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeExternalId\\\" />\\n                        <i></i>\\n                    </label>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <label class=\\\"col-sm-3\\\">{{'common.language' | translate}}:</label>\\n                <div class=\\\"col-sm-6\\\">\\n                    <button class=\\\"btn\\\" ng-click=\\\"vm.printLanguage = 'se'\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'se', 'btn-default': vm.printLanguage !== 'se' }\\\">Svenska</button>\\n                    <button class=\\\"btn\\\" ng-click=\\\"vm.printLanguage = 'en'\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'en', 'btn-default': vm.printLanguage !== 'en' }\\\">English</button>\\n                </div>\\n            </div>\\n            <div class=\\\"form-group\\\">\\n                <div class=\\\"col-sm-6\\\" style=\\\"margin-top:20px;\\\">\\n                    <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.getStockValueReport()\\\">{{'common.get' | translate}}</button>\\n                </div>\\n            </div>\\n    </form>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <label class=\\\"col-lg-12 control-label\\\"> <span class=\\\"h3\\\">{{vm.article.alternativeArticleNumber}} {{vm.article.articleName}} - {{vm.currentVariantDetail1.variantDetailName}} </span> </label></div>\\n    <div class=\\\"body bg-gray\\\">\\n        <wj-flex-grid auto-generate-columns=\\\"false\\\"\\n                      initialized=\\\"vm.initGrid(s)\\\"\\n                      class=\\\"orders-flex-grid\\\"\\n                      headers-visibility=\\\"Column\\\">\\n        </wj-flex-grid>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"row-row\\\">\\n    <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n        <div class=\\\"panel panel-default\\\">\\n            <div class=\\\"panel-body\\\">\\n                <div class=\\\"col-lg-12 b-b b-t b-l b-r\\\" ng-show=\\\"vm.isShowingUploadForm || vm.numberOfErrors > 0\\\" style=\\\"padding: 20px;\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.uploadErrors.length > 0\\\">\\n                            <ul>\\n                                <li ng-repeat=\\\"error in vm.uploadErrors\\\">{{::error.message}}</li>\\n                            </ul>\\n                        </div>\\n                        <div ng-show=\\\"vm.isShowingUploadForm\\\">\\n                            <input type=\\\"File\\\" accept=\\\".TXT\\\" id=\\\"inventoryingFileUploadElement\\\">\\n                            <button class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"vm.uploadAndParseFile()\\\"> {{'common.accept' | translate}} </button>\\n                            <label class=\\\"control-label\\\"> {{'common.longtimewarning' | translate}} </label>\\n                        </div>\\n                        <div ng-show=\\\"vm.numberOfErrors > 0\\\">\\n                            <br/>    \\n                            <span class=\\\"h4\\\">{{vm.numberOfErrors}} {{'inventory.fileErrors' | translate}}</span>\\n                            <br/>\\n                            <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.showInventoryErrors()\\\">\\n                                <a ng-show=\\\"!vm.showAllErrors\\\">{{'productimport.showContents' | translate}}</a>\\n                                <a ng-show=\\\"vm.showAllErrors\\\">{{'productimport.hideContents' | translate}}</a>\\n                            </button>\\n                            <wj-flex-grid selection-mode=\\\"RowRange\\\" ng-show=\\\"vm.showAllErrors && vm.hasFileErrors\\\" headers-visibility=\\\"Column\\\" is-read-only=\\\"true\\\"\\n                                class=\\\"orders-flex-grid orders-flex-grid-fixed-width\\\" initialized=\\\"vm.captureInventoryFileErrorGrid(s)\\\">\\n                                <wj-flex-grid-column header=\\\"{{'inventory.file' | translate}}\\\" binding=\\\"file\\\" width=\\\"*\\\"></wj-flex-grid-column>\\n                                <wj-flex-grid-column header=\\\"{{'inventory.row' | translate}}\\\" binding=\\\"rowNumber\\\" width=\\\"50\\\"></wj-flex-grid-column>\\n                                <wj-flex-grid-column header=\\\"{{'inventory.text' | translate}}\\\" binding=\\\"text\\\" width=\\\"200\\\"></wj-flex-grid-column>\\n                                <wj-flex-grid-column header=\\\"{{'inventory.error' | translate}}\\\" binding=\\\"error\\\" width=\\\"*\\\"></wj-flex-grid-column>\\n                            </wj-flex-grid>\\n                        </div>\\n                    </div>\\n                </div>\\n\\n                <div class=\\\"col-lg-12\\\">\\n                    &nbsp;\\n                </div>\\n\\n                <div class=\\\"col-lg-12\\\">\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div class = \\\"col-lg-12\\\">\\n                                <label>\\n                                        <span class=\\\"h3\\\"> {{vm.inventoryHead.location.locationName}} </span>\\n                                    </label>\\n                                    <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.toggleUploadFormVisibility()\\\"\\n                                        ng-if=\\\"vm.inventoryHead.inventoryStatus.inventorySystemStatus !== 'pending' &&\\n                                                vm.inventoryHead.inventoryStatus.inventorySystemStatus !== 'completed'\\\">\\n                                        {{'stock.readfile' | translate}}\\n                                    </button>\\n                                    <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.acceptInventory()\\\"\\n                                        ng-if=\\\"vm.inventoryHead.inventoryStatus.inventorySystemStatus !== 'pending' &&\\n                                                vm.inventoryHead.inventoryStatus.inventorySystemStatus !== 'completed'\\\">\\n                                        {{'stock.acceptinventory' | translate}}\\n                            </button>\\n                            <button ng-if=\\\"vm.hasClaim\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.printInventoryReport()\\\"> {{'stock.printinventoryorder' | translate}} </button>\\n                        </div>\\n                        <label class=\\\"col-lg-12 control-label\\\">\\n                            <span class=\\\"h5\\\">{{vm.inventoryHead.inventoryDate}}</span>,\\n                            <span class=\\\"h5\\\">{{vm.inventoryHead.inventoryType.inventoryTypeName}}</span>,\\n                            <span class=\\\"h5\\\">{{vm.inventoryHead.inventoryStatus.inventoryStatusName}}</span>\\n                        </label>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n    \\n                    <button ng-click=\\\"vm.fetchMainGroups()\\\" ng-class=\\\"{'btn btn-default' : true, 'btn-dark' : vm.overViewGridFilter.mainGroups}\\\">{{'article.maingroup' | translate}}</button>\\n                    <button ng-click=\\\"vm.fetchBrands()\\\" ng-class=\\\"{'btn btn-default' : true, 'btn-dark' : vm.overViewGridFilter.brands}\\\">{{'article.brand' | translate}}</button>\\n\\n                    <wj-flex-grid selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" is-read-only=\\\"true\\\"\\n                                  class=\\\"orders-flex-grid orders-flex-grid-fixed-width\\\" initialized=\\\"vm.captureInventoryOverviewGrid(s)\\\">\\n                        <wj-flex-grid-column header=\\\"{{'article.maingroup' | translate}}\\\" binding=\\\"mainGroupDescription\\\" width=\\\"*\\\">\\n                            <a ng-click=\\\"vm.getMainGroupInventoryRows($item.id)\\\" class=\\\"ca-celllink\\\">\\n                                {{$item.mainGroupCode}} {{$item.mainGroupDescription}}\\n                            </a>\\n                        </wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'article.brand' | translate}}\\\" binding=\\\"brandDescription\\\" width=\\\"*\\\">\\n                            <a ng-click=\\\"vm.getBrandInventoryRows($item.id)\\\" class=\\\"ca-celllink\\\">\\n                                {{$item.brandCode}} {{$item.brandDescription}}\\n                            </a>\\n                        </wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'stock.balanceinventoried' | translate}}\\\" binding=\\\"summarizedQuantity\\\" width=\\\"*\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'stock.theoreticalbalance' | translate}}\\\" binding=\\\"summarizedTheoreticalStockBalance\\\" width=\\\"*\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'stock.difference' | translate}}\\\" binding=\\\"summarizedStockDifference\\\" width=\\\"*\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'common.total' | translate}}\\\" binding=\\\"summarizedTotalValue\\\" width=\\\"*\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'common.approved' | translate}}\\\" binding=\\\"numberOfApprovedInventoryRows\\\" width=\\\"*\\\">\\n                            {{\\n                            ($item.numberOfInventoryRows == 0) ? 100 :\\n                            (($item.numberOfApprovedInventoryRows / $item.numberOfInventoryRows) * 100).toString().split(\\\".\\\")[0]\\n                            }} %\\n                        </wj-flex-grid-column>\\n                    </wj-flex-grid>\\n\\n                    <div class=\\\"col-lg-12 b-t\\\"> &nbsp; </div>\\n\\n                    <div class=\\\"form-group row\\\">\\n                        <label class=\\\"col-lg-2 control-label\\\"> {{'stock.groupinglevel' | translate}}: </label>\\n                        <div class=\\\"col-lg-3\\\">\\n                            <select class=\\\"form-control\\\" ng-change=\\\"vm.displayLevelChanged()\\\" ng-model=\\\"vm.displayLevel\\\">\\n                                <option value=\\\"0\\\" ng-if=\\\"vm.overViewGridFilter.mainGroups\\\">{{'article.maingroup' | translate}}</option>\\n                                <option value=\\\"1\\\" ng-if=\\\"vm.overViewGridFilter.mainGroups\\\">{{'article.maingroup' | translate}} > {{'article.brand' | translate}}</option>\\n                                <option value=\\\"2\\\" ng-if=\\\"vm.overViewGridFilter.mainGroups\\\">{{'article.maingroup' | translate}} > {{'article.brand' | translate}} > {{'article.articlename' | translate}}</option>\\n                                <option value=\\\"0\\\" ng-if=\\\"vm.overViewGridFilter.brands\\\">{{'article.brand' | translate}}</option>\\n                                <option value=\\\"1\\\" ng-if=\\\"vm.overViewGridFilter.brands\\\">{{'article.brand' | translate}} > {{'article.maingroup' | translate}}</option>\\n                                <option value=\\\"2\\\" ng-if=\\\"vm.overViewGridFilter.brands\\\">{{'article.brand' | translate}} > {{'article.maingroup' | translate}} > {{'article.articlename' | translate}}</option>\\n                            </select>\\n                        </div>\\n                    </div>\\n\\n                    <div class=\\\"form-group row\\\">\\n                        <label class=\\\"col-lg-2 control-label\\\"> {{'stock.autoapprovethreshold' | translate}}: </label>\\n                        <div class=\\\"col-lg-3\\\">\\n                            <select class=\\\"form-control\\\" ng-change=\\\"vm.autoAcceptLevelChanged()\\\" ng-model=\\\"vm.autoAcceptLevel\\\">\\n                                <!-- <option value=\\\"0\\\">{{'article.maingroup' | translate}}</option> -->\\n                                <!-- <option value=\\\"1\\\">{{'article.brand' | translate}}</option> -->\\n                                <option value=\\\"2\\\">{{'article.articlename' | translate}}</option>\\n                            </select>\\n                        </div>\\n\\n                    </div>\\n\\n                    <div class=\\\"form-group row\\\">\\n                        <label class=\\\"col-lg-2 control-label\\\"> {{'stock.autoapprovevalue' | translate}}: </label>\\n                        <div class=\\\"col-lg-2\\\">\\n                            <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched col-lg-2\\\"\\n                                   type=\\\"number\\\"\\n                                   placeholder=\\\"\\\"\\n                                   ng-model=\\\"vm.totalValueThreshold\\\"/>\\n                        </div>\\n                        <button class=\\\"btn btn-sm btn-default col-lg-1\\\" ng-click=\\\"vm.autoAccept()\\\"> {{'common.accept' | translate}} </button>\\n                    </div>\\n\\n                    <div class=\\\"form-group row\\\">\\n                        <div class=\\\"col-lg-12\\\">\\n                            <button ng-class=\\\"{'btn btn-default' : true, 'btn-dark' : vm.filterChoice.showUnapproved}\\\" ng-click=\\\"vm.showUnApprovedInventoryRows()\\\"> {{'stock.showunapproved' | translate}} </button>\\n                            <button ng-class=\\\"{'btn btn-default' : true, 'btn-dark' : vm.filterChoice.showApproved}\\\" ng-click=\\\"vm.showApprovedInventoryRows()\\\"> {{'stock.showapproved' | translate}} </button>\\n                            <button ng-class=\\\"{'btn btn-default' : true, 'btn-dark' : vm.filterChoice.showAll}\\\" ng-click=\\\"vm.resetInventoryRowsFiltering()\\\"> {{'stock.showall' | translate}} </button>\\n                        </div>\\n                    </div>\\n\\n                    <wj-flex-grid selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" is-read-only=\\\"false\\\"\\n                                  class=\\\"orders-flex-grid orders-flex-grid-fixed-width\\\" initialized=\\\"vm.captureInventoryRowsGrid(s)\\\">\\n\\n                        <wj-flex-grid-column header=\\\"{{'article.articlename' | translate}}\\\" width=\\\"3*\\\" binding=\\\"articleVariant.article.alternativeArticleNumber\\\">\\n                            {{$item.alternativeArticleNumber}} {{$item.articleName}}\\n                        </wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'article.variantdetail1' | translate}}\\\" width=\\\"*\\\" binding=\\\"variantDetail1Name\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'article.variantdetail2' | translate}}\\\" width=\\\"*\\\" binding=\\\"variantDetail2Name\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'article.itemgroup' | translate}}\\\" width=\\\"0\\\" binding=\\\"itemGroupLongName\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'article.maingroup' | translate}}\\\" width=\\\"0\\\" binding=\\\"mainGroupDescription\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'article.brand' | translate}}\\\" width=\\\"0\\\" binding=\\\"brandDescription\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n\\n                        <wj-flex-grid-column header=\\\"{{'stock.balanceinventoried' | translate}}\\\" width=\\\"*\\\" binding=\\\"quantity\\\" aggregate=\\\"Sum\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'stock.theoreticalbalance' | translate}}\\\" width=\\\"*\\\" binding=\\\"theoreticalStockBalance\\\" aggregate=\\\"Sum\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'stock.difference' | translate}}\\\" width=\\\"*\\\" binding=\\\"stockDifference\\\" aggregate=\\\"Sum\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n                        <wj-flex-grid-column header=\\\"{{'common.total' | translate}}\\\" width=\\\"*\\\" binding=\\\"totalValue\\\" aggregate=\\\"Sum\\\" is-read-only=\\\"true\\\"></wj-flex-grid-column>\\n\\n                        <wj-flex-grid-column header=\\\"\\\" width=\\\"*\\\" align=\\\"Center\\\" is-read-only=\\\"true\\\">\\n                            <button class=\\\"btn btn-default btn-xs\\\" ng-click=\\\"$state.go('stock.scannerinventorying.inventory.articledetails', {articleId: $item.articleId, locationId: $item.locationId, variantDetailId: $item.variantDetail1Id})\\\">\\n                                {{'common.analyze' | translate}}\\n                            </button>\\n                        </wj-flex-grid-column>\\n\\n                        <wj-flex-grid-column header=\\\"\\\" width=\\\"*\\\" align=\\\"Center\\\" is-read-only=\\\"true\\\">\\n                            <button class=\\\"btn btn-default btn-xs\\\" ng-click=\\\"vm.openCorrectionsModal($item.articleId)\\\" ng-disable=\\\"$item.isApproved\\\">\\n                                {{'common.correct' | translate}}\\n                            </button>\\n                        </wj-flex-grid-column>\\n\\n                        <wj-flex-grid-column header=\\\"{{'common.approved' | translate}}?\\\" width=\\\"*\\\" binding=\\\"isApproved\\\" aggregate=\\\"Max\\\">\\n                        </wj-flex-grid-column>\\n\\n                    </wj-flex-grid>\\n\\n                    <div class=\\\"col-lg-12\\\" >\\n                        <button class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.sendInventoryRowsForApproval()\\\"> {{'common.approve' | translate}} </button>\\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\\n<div ui-view=\\\"\\\"></div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .hbox {\\n        width: inherit;\\n    }\\n</style>\\n<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col bg-white-only b-b\\\" style=\\\"width:100%;\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div class=\\\"input-group m-b-xxs list-menu b-b\\\">\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.openNewInventoryModal()\\\">{{'common.new' | translate}}</button></span>\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n                        </div>\\n                        <div class=\\\"wrapper text-center\\\">\\n                            <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\"\\n                            items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadOrders()\\\"\\n                            ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\"\\n                            next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"\\n                            ng-hide=\\\"vm.isHidingInventoriesGrid\\\"></div>\\n                        </div>\\n                    </div>\\n\\n                    <div>\\n                        <button ng-show=\\\"vm.isHidingInventoriesGrid\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.unHideInventoriesGrid()\\\">{{ 'common.return' | translate }}</button>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        <table class=\\\"table table-hover\\\">\\n                            <thead>\\n                                <th>{{'stock.inventorydate' | translate}}</th>\\n                                <th>{{'stock.inventorytype' | translate}}</th>\\n                                <th>{{'stock.inventorystatus' | translate}}</th>\\n                                <th>{{'stock.location' | translate}}</th>\\n                                <th>{{'inventory.inventorydescription' | translate}}</th>\\n                                <th>{{'stock.balanceinventoried' | translate}}</th>\\n                                <th>{{'stock.difference' | translate}}</th>\\n                                <th>{{'stock.totalworth' | translate}}</th>\\n                            </thead>\\n                            <tbody>\\n                                <tr ng-style=\\\"order.id === vm.previouslySelectedInventoryId && {'background-color':'rgba(245, 245, 245, 0.25)'}\\\" style=\\\"height: 20px\\\" ng-repeat=\\\"order in vm.orders\\\">\\n                                    <td>\\n                                        <a ng-click=\\\"vm.hideInventoriesGrid(order); $state.go('stock.scannerinventorying.inventory', {inventoryId: order.id})\\\" class=\\\"ca-celllink\\\">\\n                                            {{ order.inventoryDate }}\\n                                        </a>\\n                                    </td>\\n                                    <td>{{ order.inventoryType.inventoryTypeName }}</td>\\n                                    <td>{{ order.inventoryStatus.inventoryStatusName }}</td>\\n                                    <td>{{ order.location.locationName }}</td>\\n                                    <td style=\\\"min-width: 23%;\\\">{{ order.inventoryDescription }}</td>\\n                                    <td style=\\\"text-align: right;\\\">{{ order.inventoryRowsQuantitySum }}</td>\\n                                    <td style=\\\"text-align: right;\\\">{{ order.quantityStockDifference }}</td>\\n                                    <td style=\\\"text-align: right;\\\">{{ order.totalWorth }}</td>\\n                                </tr>\\n                            </tbody>\\n                        </table>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n    <div ui-view=\\\"\\\"></div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n    <div class=\\\"col lter b-r productlist-w-transition\\\" ng-class=\\\"{   'w-3xs' : !$state.params.showArticleList, \\n                                                                     'w-xl' : $state.params.showArticleList || $state.params.showArticleList === undefined}\\\" \\n                                    ui-view=\\\"articleList\\\" ng-hide=\\\"$state.includes('stock.scannerinventorying') ||\\n                                                                   $state.includes('stock.stockpickinglist') ||\\n                                                                   $state.includes('stock.stockValueReports') ||\\n                                                                   $state.includes('stock.soldStockReports') ||\\n                                                                   $state.includes('stock.saleThroughputReports')\\\"></div>\\n\\n    <div class=\\\"col ca-w-max bg-white-only\\\" ui-view=\\\"articleView\\\" ng-hide=\\\"$state.includes('stock.scannerinventorying') || \\n                                                                            $state.includes('stock.stockValueReports') ||\\n                                                                           $state.includes('stock.soldStockReports') ||\\n                                                                           $state.includes('stock.saleThroughputReports')\\\"></div>\\n\\n    <div class=\\\"col ca-w-max bg-white-only\\\" ui-view=\\\"wideColumnView\\\" ng-show=\\\"$state.includes('stock.scannerinventorying') || \\n                                                        $state.includes('stock.stockValueReports') ||\\n                                                       $state.includes('stock.soldStockReports') ||\\n                                                       $state.includes('stock.saleThroughputReports')\\\"></div>\\n\\n    <div class=\\\"col\\\" ng-hide=\\\"$state.includes('stock.stockpickinglist') ||\\n                                $state.includes('stock.stockValueReports') ||\\n                                $state.includes('stock.soldStockReports') ||\\n                                $state.includes('stock.saleThroughputReports')\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <!-- Filtering/search section -->\\n                    <ul class=\\\"nav nav-tabs\\\">\\n                        <li ng-class=\\\"{'active' : vm.tabSelection.search}\\\"><a ng-click=\\\"vm.changeToSearchTab()\\\">{{'purchaseorder.ordering' | translate}}</a></li>\\n                        <li ng-class=\\\"{'active' : vm.tabSelection.locations}\\\"><a ng-click=\\\"vm.changeToLocationsTab()\\\">{{'stocklogistics.choselocations' | translate}}</a></li>\\n                        <li ng-class=\\\"{'active' : vm.tabSelection.rules}\\\"><a ng-click=\\\"vm.changeToRulesTab()\\\">{{'stocklogistics.rules' | translate}}</a></li>\\n                    </ul>\\n\\n                    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.search\\\">\\n                        <div class=\\\"input-group m-b-xxs list-menu b-b\\\">\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                            <form ng-submit=\\\"vm.searchArticles()\\\">\\n                                <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n                            </form>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n                        <div class=\\\"col-lg-12\\\">\\n                            <div class=\\\"col-sm-2\\\">\\n                                <ui-select ng-model=\\\"vm.selectedCollection\\\" theme=\\\"bootstrap\\\">\\n                                    <ui-select-match placeholder=\\\"\\\">{{$select.selected.collectionDescription}}</ui-select-match>\\n                                    <ui-select-choices repeat=\\\"collection in vm.collections | filter:{'collectionDescription': $select.search}\\\">\\n                                        <span>{{collection.collectionDescription}}</span>\\n                                    </ui-select-choices>\\n                                </ui-select>\\n                            </div>\\n\\n                            <div class=\\\"col-sm-10\\\">\\n                                <div class=\\\"m-b-none m-t-none\\\">\\n                                    <label class=\\\"i-checks m-t-xs\\\">\\n                                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeIsCurrent\\\" ng-disabled=\\\"true\\\"/>\\n                                        <i></i>\\n                                        {{'stocklogistics.includeiscurrent' | translate}}\\n                                    </label>\\n                                </div>\\n                            </div>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\">\\n                            <div class=\\\"col-sm-12\\\">\\n                                <div class=\\\"m-b-none m-t-none\\\">\\n                                    <label class=\\\"i-checks m-t-xs\\\">\\n                                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.excludeArticlesWithOrderingPoints\\\"/>\\n                                        <i></i>\\n                                        {{'stocklogistics.excludeallwithorderingpoints' | translate}}\\n                                    </label>\\n                                </div>\\n                            </div>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\">\\n                            <div class=\\\"col-sm-12\\\">\\n                                <div class=\\\"m-b-none m-t-none\\\">\\n                                    <label class=\\\"i-checks m-t-xs\\\">\\n                                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.adjustWithStockValues\\\" />\\n                                        <i></i>\\n                                        {{'stocklogistics.includequantityintransit' | translate}}\\n                                    </label>\\n                                </div>\\n                            </div>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n                        <div class=\\\"form-group row col-lg-12\\\" style=\\\"margin-bottom:30px;\\\">\\n                            <button ng-click=\\\"vm.insertStockQuantities()\\\" class=\\\"btn btn-primary\\\"> {{'stocklogistics.createsuggestion' | translate}} </button>\\n                            <button ng-click=\\\"vm.submitAndCreateOrders()\\\" class=\\\"btn btn-default\\\" ng-disabled=\\\"!vm.canSubmitAndCreateOrders()\\\"> {{'stocklogistics.createorder' | translate}} </button>\\n                        </div>\\n                    </div>\\n\\n                    <!-- Locations selector -->\\n                    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.locations\\\">\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.selectAllLocations()\\\"> {{'common.all' | translate}} </button>\\n                            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.selectNoLocations()\\\"> {{'common.none' | translate}} </button>\\n                        </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <wj-flex-grid style=\\\"width: auto\\\"\\n                                          selection-mode=\\\"Row\\\"\\n                                          headers-visibility=\\\"Column\\\"\\n                                          is-read-only=\\\"false\\\"\\n                                          class=\\\"orders-flex-grid\\\"\\n                                          initialized=\\\"vm.captureLocationsGrid(s)\\\">\\n                                          <wj-flex-grid-column header=\\\"{{'base.use' | translate}}\\\" width=\\\"50\\\" binding=\\\"isVisible\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'location.locationnumber' | translate}}\\\" width=\\\"50\\\" binding=\\\"locationNumber\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'location.name' | translate}}\\\" width=\\\"200\\\" binding=\\\"locationName\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'stocklogistics.distributionweight' | translate}}\\\" width=\\\"150\\\" binding=\\\"distributionWeight\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'stocklogistics.locationpriority' | translate}}\\\" width=\\\"150\\\" binding=\\\"locationPriority\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'stocklogistics.from' | translate}}\\\" width=\\\"150\\\" binding=\\\"outDeliverable\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'stocklogistics.to' | translate}}\\\" width=\\\"150\\\" binding=\\\"inDeliverable\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                            </wj-flex-grid>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.rules\\\">\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <div class=\\\"col-lg-2\\\">\\n                                <label class=\\\"control-label\\\">{{'stocklogistics.difftocreatesuggestion' | translate}}:</label>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\">\\n                                <input class=\\\"form-control ng-pristine ng-valid ng-touched\\\" type=\\\"number\\\" ng-model=\\\"vm.minDiffToCreateSuggestion\\\" ng-disabled=\\\"true\\\" />\\n                            </div>\\n                        </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <div class=\\\"col-lg-2\\\">\\n                                <label class=\\\"control-label\\\">{{'stocklogistics.threshold' | translate}}:</label>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\">\\n                                <input class=\\\"form-control ng-pristine ng-valid ng-touched\\\" type=\\\"number\\\" ng-model=\\\"vm.lowerThresholdQuantity\\\" />\\n                            </div>\\n                        </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <div class=\\\"col-lg-2\\\">\\n                                <label class=\\\"control-label\\\">{{'stocklogistics.movemaximum' | translate}}:</label>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\">\\n                                <input class=\\\"form-control ng-pristine ng-valid ng-touched\\\" type=\\\"number\\\" ng-model=\\\"vm.moveMaximum\\\" ng-disabled=\\\"true\\\" />\\n                            </div>\\n                        </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <div class=\\\"col-lg-2\\\">\\n                                <label class=\\\"control-label\\\">{{'stocklogistics.minimumcostpricethreshold' | translate}}:</label>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\">\\n                                <input class=\\\"form-control ng-pristine ng-valid ng-touched\\\" type=\\\"number\\\" ng-model=\\\"vm.minimumCostPriceThreshold\\\" />\\n                            </div>\\n                        </div>\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <!-- Grid section -->\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.hasRowData()\\\">\\n                        <div clas=\\\"form-group row\\\">\\n                            <wj-flex-grid style=\\\"width: auto; max-height: 500px\\\"\\n                                          selection-mode=\\\"Row\\\"\\n                                          headers-visibility=\\\"Column\\\"\\n                                          is-read-only=\\\"false\\\"\\n                                          class=\\\"orders-flex-grid\\\"\\n                                          initialized=\\\"vm.captureArticlesGrid(s)\\\"\\n                                          cell-edit-ended=\\\"vm.validateGridRow(s)\\\"\\n                                          beginning-edit=\\\"vm.preventChangingOfIsOkValue(s, e)\\\">\\n                            </wj-flex-grid>\\n                        </div>\\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\" id=\\\"orderSearchRegion\\\">\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"col w-xxl bg-white-only b-b\\\">\\n            <div class=\\\"panel panel-default\\\">\\n                <div class=\\\"panel-body\\\">\\n                    <!-- Filtering/search section -->\\n                    <ul class=\\\"nav nav-tabs\\\">\\n                        <li ng-class=\\\"{'active' : vm.tabSelection.search}\\\"><a ng-click=\\\"vm.changeToSearchTab()\\\">{{'purchaseorder.ordering' | translate}}</a></li>\\n                        <li ng-class=\\\"{'active' : vm.tabSelection.locations}\\\"><a ng-click=\\\"vm.changeToLocationsTab()\\\">{{'stocklogistics.choselocations' | translate}}</a></li>\\n                        <!--<li ng-class=\\\"{'active' : vm.tabSelection.rules}\\\"><a ng-click=\\\"vm.changeToRulesTab()\\\">{{'stocklogistics.rules' | translate}}</a></li>-->\\n                    </ul>\\n\\n                    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.search\\\">\\n                        <div class=\\\"input-group m-b-xxs list-menu b-b\\\">\\n                            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                            <form ng-submit=\\\"vm.searchArticles()\\\">\\n                                <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n                            </form>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n                        <div class=\\\"col-sm-12\\\">\\n                            <div class=\\\"m-b-none m-t-none\\\">\\n                                <label class=\\\"i-checks m-t-xs\\\">\\n                                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.handleNegativeEshopQuantities\\\" />\\n                                    <i></i>\\n                                    {{'stocklogistics.handlenegativeeshopvalues' | translate}}\\n                                </label>\\n                            </div>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <button ng-click=\\\"vm.insertStockQuantities()\\\" class=\\\"btn btn-primary\\\"> {{'stocklogistics.createsuggestion' | translate}} </button>\\n                            <button ng-click=\\\"vm.submitAndCreateOrders()\\\" class=\\\"btn btn-default\\\" ng-disabled=\\\"!vm.canAccess('order', 'create')\\\"> {{'stocklogistics.createorder' | translate}} </button>\\n                        </div>\\n                    </div>\\n\\n                    <!-- Locations selector -->\\n                    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.locations\\\">\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.selectAllLocations()\\\"> {{'common.all' | translate}} </button>\\n                            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.selectNoLocations()\\\"> {{'common.none' | translate}} </button>\\n                        </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <wj-flex-grid style=\\\"width: auto\\\"\\n                                          selection-mode=\\\"Row\\\"\\n                                          headers-visibility=\\\"Column\\\"\\n                                          is-read-only=\\\"false\\\"\\n                                          class=\\\"orders-flex-grid\\\"\\n                                          initialized=\\\"vm.captureLocationsGrid(s)\\\">\\n                                          <wj-flex-grid-column header=\\\"{{'base.use' | translate}}\\\" width=\\\"50\\\" binding=\\\"isVisible\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'location.locationnumber' | translate}}\\\" width=\\\"50\\\" binding=\\\"locationNumber\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'location.name' | translate}}\\\" width=\\\"200\\\" binding=\\\"locationName\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'stocklogistics.distributionweight' | translate}}\\\" width=\\\"150\\\" binding=\\\"distributionWeight\\\" is-read-only=\\\"false\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'stocklogistics.locationpriority' | translate}}\\\" width=\\\"150\\\" binding=\\\"locationPriority\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'stocklogistics.from' | translate}}\\\" width=\\\"150\\\" binding=\\\"outDeliverable\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                                          <wj-flex-grid-column header=\\\"{{'stocklogistics.to' | translate}}\\\" width=\\\"150\\\" binding=\\\"inDeliverable\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                            </wj-flex-grid>\\n                        </div>\\n\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\" ng-show=\\\"vm.tabSelection.rules\\\">\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <div class=\\\"col-lg-2\\\">\\n                                <label class=\\\"control-label\\\">{{'stocklogistics.difftocreatesuggestion' | translate}}:</label>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\">\\n                                <input class=\\\"form-control ng-pristine ng-valid ng-touched\\\" type=\\\"number\\\" ng-model=\\\"vm.minDiffToCreateSuggestion\\\" ng-disabled=\\\"true\\\" />\\n                            </div>\\n                        </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <div class=\\\"col-lg-2\\\">\\n                                <label class=\\\"control-label\\\">{{'stocklogistics.threshold' | translate}}:</label>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\">\\n                                <input class=\\\"form-control ng-pristine ng-valid ng-touched\\\" type=\\\"number\\\" ng-model=\\\"vm.lowerThresholdQuantity\\\" />\\n                            </div>\\n                        </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <div class=\\\"col-lg-2\\\">\\n                                <label class=\\\"control-label\\\">{{'stocklogistics.movemaximum' | translate}}:</label>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\">\\n                                <input class=\\\"form-control ng-pristine ng-valid ng-touched\\\" type=\\\"number\\\" ng-model=\\\"vm.moveMaximum\\\" ng-disabled=\\\"true\\\" />\\n                            </div>\\n                        </div>\\n                        <div class=\\\"form-group row col-lg-12\\\">\\n                            <div class=\\\"col-lg-2\\\">\\n                                <label class=\\\"control-label\\\">{{'stocklogistics.minimumcostpricethreshold' | translate}}:</label>\\n                            </div>\\n                            <div class=\\\"col-lg-2\\\">\\n                                <input class=\\\"form-control ng-pristine ng-valid ng-touched\\\" type=\\\"number\\\" ng-model=\\\"vm.minimumCostPriceThreshold\\\" />\\n                            </div>\\n                        </div>\\n                        <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-12\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <!-- Grid section -->\\n                    <div class=\\\"col-lg-12\\\">\\n                        <div clas=\\\"form-group row\\\">\\n                            <wj-flex-grid style=\\\"width: auto; max-height: 500px\\\"\\n                                          selection-mode=\\\"Row\\\"\\n                                          headers-visibility=\\\"Column\\\"\\n                                          is-read-only=\\\"false\\\"\\n                                          class=\\\"orders-flex-grid\\\"\\n                                          initialized=\\\"vm.captureArticlesGrid(s)\\\"\\n                                          cell-edit-ended=\\\"vm.validateGridRow(s)\\\"\\n                                          beginning-edit=\\\"vm.preventChangingOfIsOkValue(s, e)\\\">\\n                            </wj-flex-grid>\\n                        </div>\\n                    </div>\\n\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-defualt\\\" style=\\\"max-height: 1000px; overflow-block:hidden; height: 100%; display:flex; flex-direction: column; position: static\\\">\\n    <div class=\\\"panel-heading font-bold\\\" style=\\\"height:100%;\\\">\\n        <div class=\\\"col-lg-2\\\">&nbsp;</div>\\n        <div class=\\\"col-lg-2\\\">\\n            <button class=\\\"btn btn-default\\\" style=\\\"width:100%; margin-top:10px\\\" ng-click=\\\"vm.goToPreviousStep()\\\" ng-disabled=\\\"vm.stepHandler.currentStep === 0\\\">{{'common.back' | translate}}</button>\\n        </div>\\n        <h2 class=\\\"col-lg-4\\\" style=\\\"text-align:center; margin:0px;\\\">\\n            {{ vm.stepHandler.steps[vm.stepHandler.currentStep] }}\\n        </h2>\\n        <div class=\\\"col-lg-2\\\">\\n            <button class=\\\"btn btn-primary\\\" style=\\\"width:100%; margin-top:10px\\\" ng-click=\\\"vm.goToNextStep()\\\" ng-disabled=\\\"!vm.validSelection()\\\">{{'common.next' | translate}}</button>\\n        </div>\\n        <div class=\\\"col-lg-2\\\">&nbsp;</div>\\n    </div>\\n    <div class=\\\"panel-body\\\" style=\\\"position:static;\\\">\\n        <div ng-show=\\\"vm.stepHandler.currentStep === 0\\\">\\n            <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n            <div class=\\\"col-lg-3\\\">\\n                <input type=\\\"text\\\" \\n                        class=\\\"form-control enterAsTab\\\"\\n                        style=\\\"width:60%; display:inline-block\\\"\\n                        ng-model=\\\"vm.locationFilter\\\" \\n                        ng-change=\\\"vm.filterChanged('location')\\\" \\n                        placeholder=\\\"{{ 'common.filter' | translate }} {{ 'contacts.locations' | translate }}\\\"/>\\n                <button class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-show=\\\"vm.locationFilter.length === 0\\\" ng-click=\\\"vm.deselectSelection('location')\\\">Rensa</button>\\n                <button class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-hide=\\\"vm.locationFilter.length === 0\\\" ng-click=\\\"vm.selectFilterSelection('location')\\\">Välj Urval</button>\\n                <ul class=\\\"b-r b-l b-b\\\" style=\\\"overflow-y:scroll; height:500px; padding-left:4px\\\">\\n                    <li ng-repeat=\\\"location in vm.filteredLocations | filter: { selected: true }\\\" style=\\\"background-color:aliceblue;\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" ng-model=\\\"location.selected\\\" ng-change=\\\"vm.filterChanged('location')\\\" style=\\\"overflow-anchor: none;\\\"/>\\n                            <i></i>\\n                            {{location.locationName}}\\n                        </label>\\n                    </li>\\n                    <div class=\\\"b-b\\\"></div>\\n                    <li ng-repeat=\\\"location in vm.filteredLocations | filter: { selected: false }\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" ng-model=\\\"location.selected\\\" ng-change=\\\"vm.filterChanged('location')\\\" style=\\\"overflow-anchor: none;\\\"/>\\n                            <i></i>\\n                            {{location.locationName}}\\n                        </label>\\n                    </li>\\n                </ul>\\n            </div>\\n            <div class=\\\"col-lg-3\\\">\\n                <input  type=\\\"text\\\" \\n                        class=\\\"form-control enterAsTab\\\"\\n                        style=\\\"width:60%; display:inline-block\\\"\\n                        ng-model=\\\"vm.mainGroupFilter\\\" \\n                        ng-change=\\\"vm.filterChanged('mainGroup')\\\" \\n                        placeholder=\\\"{{ 'common.filter' | translate }} {{ 'article.maingroup' | translate }}\\\"/>\\n                        <button class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-show=\\\"vm.mainGroupFilter.length === 0\\\" ng-click=\\\"vm.deselectSelection('mainGroup')\\\">Rensa</button>\\n                        <button class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-hide=\\\"vm.mainGroupFilter.length === 0\\\" ng-click=\\\"vm.selectFilterSelection('mainGroup')\\\">Välj Urval</button>\\n                <ul class=\\\"b-r b-l b-b\\\"  style=\\\"overflow-y:scroll; height:500px; padding-left:4px\\\">\\n                    <li class =\\\"ui-select-choices-group\\\">\\n                        <div class=\\\"float;left\\\" ng-repeat=\\\"mainGroup in vm.filteredMainGroups | filter: { selected: true }\\\" style=\\\"background-color:aliceblue;\\\">\\n                            <label class=\\\"i-checks m-t-xs\\\">\\n                                <input style=\\\"position:fixed\\\" type=\\\"checkbox\\\" href=\\\"javascript:void();\\\" ng-model=\\\"mainGroup.selected\\\" ng-change=\\\"vm.filterChanged('mainGroup')\\\"/>\\n                                <i></i>\\n                                {{mainGroup.mainGroupDescription}}\\n                            </label>\\n                        </div>\\n                        <div class=\\\"b-b\\\"></div>\\n                        <div ng-repeat=\\\"mainGroup in vm.filteredMainGroups | filter: { selected: false }\\\">\\n                            <label class=\\\"i-checks m-t-xs\\\">\\n                                <input style=\\\"position:fixed\\\" type=\\\"checkbox\\\" ng-model=\\\"mainGroup.selected\\\" ng-change=\\\"vm.filterChanged('mainGroup')\\\"/>\\n                                <i></i>\\n                                {{mainGroup.mainGroupDescription}}\\n                            </label>\\n                        </div>\\n                    </li>\\n                </ul>\\n            </div>\\n            <div class=\\\"col-lg-3\\\">\\n                <input  type=\\\"text\\\" \\n                        class=\\\"form-control enterAsTab\\\" \\n                        style=\\\"width:60%; display:inline-block\\\"\\n                        ng-model=\\\"vm.brandFilter\\\" \\n                        ng-change=\\\"vm.filterChanged('brand')\\\" \\n                        placeholder=\\\"{{ 'common.filter' | translate }} {{ 'article.brand' | translate }}\\\"/>\\n                        <button class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-show=\\\"vm.brandFilter.length === 0\\\" ng-click=\\\"vm.deselectSelection('brand')\\\">Rensa</button>\\n                        <button class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-hide=\\\"vm.brandFilter.length === 0\\\" ng-click=\\\"vm.selectFilterSelection('brand')\\\">Välj Urval</button>\\n                <div class=\\\"b-r b-l b-b\\\"  style=\\\"overflow:hidden; overflow-y:scroll; height:500px; padding-left:4px\\\">\\n                    <div ng-repeat=\\\"brand in vm.filteredBrands | filter: { selected: true }\\\" style=\\\"background-color:aliceblue\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input style=\\\"position: fixed;\\\" type=\\\"checkbox\\\" href=\\\"javascript:void();\\\" ng-model=\\\"brand.selected\\\" ng-change=\\\"vm.filterChanged('brand')\\\"/>\\n                            <i></i>\\n                            {{brand.brandDescription}}\\n                        </label>\\n                    </div>\\n                    <div class=\\\"b-b\\\"></div>\\n                    <div ng-repeat=\\\"brand in vm.filteredBrands | filter: { selected: false }\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input style=\\\"position: fixed;\\\" type=\\\"checkbox\\\" href=\\\"javascript:void();\\\" ng-model=\\\"brand.selected\\\" ng-change=\\\"vm.filterChanged('brand')\\\"/>\\n                            <i></i>\\n                            {{brand.brandDescription}}\\n                        </label>\\n                    </div>\\n                </div>\\n            </div>\\n            <div class=\\\"col-lg-3\\\">\\n                <input  type=\\\"text\\\" \\n                        class=\\\"form-control enterAsTab\\\"\\n                        style=\\\"width:60%; display:inline-block\\\"\\n                        ng-model=\\\"vm.collectionFilter\\\" \\n                        ng-change=\\\"vm.filterChanged('collection')\\\" \\n                        placeholder=\\\"{{ 'common.filter' | translate }} {{ 'article.articlecollection' | translate }}\\\"/>\\n                        <button class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-show=\\\"vm.collectionFilter.length === 0\\\" ng-click=\\\"vm.deselectSelection('collection')\\\">Rensa</button>\\n                        <button class=\\\"btn btn-default\\\" style=\\\"margin-bottom:3px; width:38%; display:inline-block;\\\" ng-hide=\\\"vm.collectionFilter.length === 0\\\" ng-click=\\\"vm.selectFilterSelection('collection')\\\">Välj Urval</button>\\n                <div class=\\\"b-r b-l b-b\\\"  style=\\\"overflow-y:scroll; height:500px; padding-left:4px\\\">\\n                    <div ng-repeat=\\\"collection in vm.filteredCollections | filter: { selected: true }\\\" style=\\\"background-color:aliceblue\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" ng-model=\\\"collection.selected\\\" ng-change=\\\"vm.filterChanged('collection')\\\"/>\\n                            <i></i>\\n                            {{collection.collectionCode}}\\n                        </label>\\n                    </div>\\n                    <div class=\\\"b-b\\\"></div>\\n                    <div ng-repeat=\\\"collection in vm.filteredCollections | filter: { selected: false }\\\">\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" ng-model=\\\"collection.selected\\\" ng-change=\\\"vm.filterChanged('collection')\\\"/>\\n                            <i></i>\\n                            {{collection.collectionCode}}\\n                        </label>\\n                    </div>\\n                </div>\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                <h4>Andra val:</h4>\\n                <label class=\\\"i-checks m-t-xs\\\" ng-if=\\\"vm.filterIsCurrent\\\" style=\\\"background-color:aliceblue\\\" >\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterIsCurrent\\\"/>\\n                    <i></i>\\n                    {{ 'stocklogistics.includeiscurrent' | translate}}\\n                </label>\\n                <label class=\\\"i-checks m-t-xs\\\" ng-if=\\\"!vm.filterIsCurrent\\\">\\n                    <input type=\\\"checkbox\\\" ng-model=\\\"vm.filterIsCurrent\\\"/>\\n                    <i></i>\\n                    {{ 'stocklogistics.includeiscurrent' | translate}}\\n                </label>\\n            </div>\\n            <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n        </div>\\n    </div>\\n    <div class=\\\"panel-footer\\\">\\n        <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    input.highlightable{\\n        border: 1px solid rgba(255, 255, 255, 0);\\n        padding:0px;\\n        height:auto;\\n        width:99%;\\n    }\\n    input.highlightable:hover{\\n        border-color: lightgray;\\n    }\\n    input.highlightable:focus{\\n        border-color:lightslategray;\\n    }\\n    .table-readable-compact > thead > tr > th.separator,\\n    .table-readable-compact > tbody > tr > td.separator{\\n        min-width: 10px !important;\\n        max-width: 10px !important;\\n        width: 10px !important;\\n        background-color:rgb(212, 218, 219); \\n        padding:0px;\\n    }\\n    .table-readable-compact > thead > tr > th,\\n    .table-readable-compact > thead > tr > td {\\n        min-width: 30px !important;\\n    }\\n    .custom-text {\\n        margin-left: 20px;\\n        margin-bottom: 10px;\\n    }\\n    input[type=\\\"range\\\"] {\\n        appearance: slider-vertical;\\n    }\\n    #changessavedanim {\\n        font-size:smaller; \\n        float:right;\\n\\n        animation:changessavedanim 1.1s 1;\\n        -webkit-animation:changessavedanim 1.1s 1;\\n        animation-fill-mode: forwards;\\n\\n        animation-delay:1s;\\n        -webkit-animation-delay:1s; /* Safari and Chrome */\\n        -webkit-animation-fill-mode: forwards;\\n    }\\n\\n    @keyframes changessavedanim{\\n        from {opacity :1;}\\n        to {opacity :0;}\\n    }\\n\\n    @-webkit-keyframes changessavedanim{\\n        from {opacity :1;}\\n        to {opacity :0;}\\n    }\\n</style>\\n\\n<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">\\n        {{ vm.createMode ? ('article.create' | translate) : ' ' + ('article.update' | translate) }}\\n        {{ 'article.autoOrderCurve' | translate }}\\n    </div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div class=\\\"custom-text\\\">\\n            {{'article.explainCurve' | translate}}\\n        </div>\\n        <div ng-if=\\\"!vm.createMode\\\" style=\\\"margin-bottom: 30px;\\\">\\n            <div class=\\\"col-lg-11\\\">\\n                <ca-singleselect class=\\\"w-100\\\" model=\\\"vm.selectedAutoMonthMultiplier\\\" choices=\\\"vm.autoMonthMultipliers\\\"\\n                    order-by=\\\"'name'\\\" item-renderer=\\\"'dropDownName'\\\"></ca-singleselect>\\n            </div>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.createNewToggle()\\\">\\n                {{'common.new' | translate}}\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\"  ng-click=\\\"vm.deleteSelected()\\\" ng-if=\\\"!vm.createMode && vm.selectedAutoMonthMultiplier && vm.selectedAutoMonthMultiplier.id !== -1\\\">\\n                <i class=\\\"fa fa-trash\\\"></i>\\n            </button>\\n        </div>\\n\\n        <div style=\\\"margin-bottom: 30px\\\">\\n            <table class=\\\"table-condensed table-readable-compact\\\" style=\\\"background-color:white;border:0px; \\\" ng-if=\\\"vm.selectedAutoMonthMultiplier && vm.selectedAutoMonthMultiplier.id !== -1\\\">\\n                <thead>\\n                    <tr>\\n                        <th colspan=\\\"4\\\">\\n                            <div style=\\\"white-space: nowrap; min-width: 30px;\\\">\\n                                <div><i style=\\\"font-size:x-small; position:absolute;margin-top:-17px;margin-left:-4px\\\">{{ 'article.articleTypeName' | translate }}:  </i></div>                                \\n                                <input\\n                                    id=\\\"nameInput\\\"\\n                                    type=\\\"text\\\"\\n                                    ng-model=\\\"vm.selectedAutoMonthMultiplier.name\\\"\\n                                    style=\\\"text-align:left;\\\"            \\n                                    class=\\\"enterAsTab highlightable\\\"\\n                                    enter-as-tab\\n                                    ng-blur=\\\"vm.saveOnChange()\\\"\\n                                    ng-style=\\\"{'background-color': vm.selectedAutoMonthMultiplier.name ? '' : 'lightcoral'}\\\"/>\\n                            </div>\\n                        </th>\\n                    </tr>\\n                    <tr>    \\n                        <th align=\\\"left\\\">\\n                            <div style=\\\"min-width: 30px; text-align: left; border: 1px; border-right:4px; font-size: 11px;\\\">{{ ('common.all' | translate).toUpperCase() }}</div>\\n                        </th>\\n                        <th class=\\\"separator\\\"></th>\\n                        <th ng-repeat=\\\"field in vm.fields\\\" align=\\\"right\\\">\\n                            <div style=\\\"min-width: 30px; text-align: right; border: 1px; font-size: 11px;\\\">{{ field.abbreviation }}</div>\\n                        </th>\\n                    </tr>\\n                </thead>\\n                <tbody ng-if=\\\"vm.selectedAutoMonthMultiplier\\\">\\n                    <tr>\\n                        <td style=\\\"border-right:4px;\\\">\\n                            <input  \\n                                type=\\\"range\\\"\\n                                ng-model=\\\"vm.allMonthsMultiplier\\\"\\n                                ng-mouseup=\\\"vm.updateOnAllMonths()\\\"\\n                                ng-change=\\\"vm.handleConvertValueAllMonths()\\\"\\n                                step=\\\"0.1\\\"\\n                                min=\\\"0\\\" \\n                                max=\\\"4\\\"\\n                                orient=\\\"vertical\\\"\\n                                tabindex=\\\"-1\\\"\\n                                list=\\\"verticalRangeValues\\\"\\n                                class=\\\"m-b-xs\\\"/>\\n                            <input\\n                                type=\\\"number\\\"\\n                                ng-model=\\\"vm.allMonthsMultiplier\\\"\\n                                style=\\\"text-align:center; text-indent: 14px;\\\"           \\n                                step=\\\"0.1\\\"\\n                                class=\\\"enterAsTab highlightable\\\"\\n                                enter-as-tab\\n                                ng-blur=\\\"vm.updateOnAllMonths()\\\"/>\\n                        </td>\\n                        <td class=\\\"separator\\\"></td>\\n                        <td ng-repeat=\\\"field in vm.fields\\\">\\n                            <input \\n                                type=\\\"range\\\"\\n                                ng-model=\\\"vm.selectedAutoMonthMultiplier[field.full.toLowerCase()]\\\"\\n                                ng-mouseup=\\\"vm.saveOnChange()\\\"\\n                                ng-change=\\\"vm.handleConvertValue(field.full.toLowerCase())\\\"\\n                                step=\\\"0.1\\\"\\n                                min=\\\"0\\\" \\n                                max=\\\"4\\\"\\n                                orient=\\\"vertical\\\"\\n                                tabindex=\\\"-1\\\"\\n                                list=\\\"verticalRangeValues\\\"\\n                                class=\\\"m-b-xs\\\"/>\\n                            <input\\n                                type=\\\"number\\\"\\n                                ng-model=\\\"vm.selectedAutoMonthMultiplier[field.full.toLowerCase()]\\\"\\n                                style=\\\"text-align:center; text-indent: 14px;\\\"           \\n                                step=\\\"0.1\\\"\\n                                class=\\\"enterAsTab highlightable\\\"\\n                                enter-as-tab\\n                                ng-change=\\\"vm.saveOnChange()\\\"/>\\n                        </td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n        <button ng-if=\\\"vm.createMode\\\" class=\\\"btn btn-primary btn\\\" ng-click=\\\"vm.create()\\\" ng-disabled=\\\"vm.ongoingRequest || !vm.selectedAutoMonthMultiplier.name\\\">{{'common.save' | translate}}</button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal()\\\" ng-disabled=\\\"vm.ongoingRequest\\\">{{'common.close' | translate}}</button>\\n        <div id=\\\"changessavedanim\\\" ng-if=\\\"!vm.ongoingRequest && vm.enableChangesSavedNotification\\\"><i  class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i> {{ 'common.allChangesSaved' | translate }}...</div>\\n    </div>\\n</div>\\n<datalist id=\\\"verticalRangeValues\\\">\\n    <option value=\\\"4\\\"></option>\\n    <option value=\\\"3\\\"></option>\\n    <option value=\\\"2\\\"></option>\\n    <option value=\\\"1\\\"></option>\\n    <option value=\\\"0\\\"></option>\\n</datalist>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <span>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.openLabelsModal()\\\">\\n                {{'article.getlabels' | translate}}\\n            </button> \\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('product.articles.article')\\\"> \\n                {{'article.articles' | translate}} \\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.modelinventorysearch.modelinventory')\\\">\\n                {{'stock.inventorymodel' | translate}}\\n            </button>\\n            <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.productStateGo('stock.articlesearch.article')\\\">\\n                {{'common.stock' | translate}}\\n            </button>\\n\\n        </span>        \\n        <div>&nbsp;</div>\\n        <span>{{vm.selectedArticle.alternativeArticleNumber + ' ' + vm.selectedArticle.articleName}}</span>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <div class=\\\"col-lg-12 b-b\\\">\\n            <div class=\\\"row\\\" style=\\\"margin-bottom: 10px;\\\">\\n                <label class=\\\"col-lg-12\\\"> {{'article.autoOrderCurve' | translate}}: </label>\\n                <div class=\\\"col-lg-10\\\">\\n                    <ca-singleselect class=\\\"w-100\\\" model=\\\"vm.selectedMultiplier\\\" choices=\\\"vm.autoMonthMultipliers\\\"\\n                        order-by=\\\"'name'\\\" item-renderer=\\\"'dropDownName'\\\"></ca-singleselect>\\n                </div>\\n                <div class=\\\"col-lg-2 d-flex justify-content-end\\\">\\n                    <button class=\\\"btn btn-primary btn-sm\\\"\\n                        ng-click=\\\"vm.openMultiplierModal()\\\">{{'article.handleCurve' | translate}}</button>\\n                </div>\\n            </div>  \\n        </div>\\n        <div class=\\\"col-lg-12 m-t\\\">\\n            <div class=\\\"row mt-3\\\">\\n                <label class=\\\"col-lg-12\\\"> {{'stocklogistics.to' | translate}}: </label>\\n                <div class=\\\"col-lg-12\\\">\\n                    <wj-auto-complete selected-index-changed=\\\"vm.selectedLocationChanged(s)\\\"\\n                        show-drop-down-button=\\\"true\\\"\\n                        items-source=\\\"vm.locations\\\"\\n                        display-member-path=\\\"locationName\\\"\\n                        is-editable=\\\"false\\\"\\n                        required=\\\"true\\\"\\n                        style=\\\"width: 100%;\\\"></wj-auto-complete>\\n                </div>\\n            </div>\\n        </div>\\n        \\n        \\n        \\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <ul class=\\\"nav nav-tabs\\\">\\n                <li ng-class=\\\"{'active' : vm.tabSelection.maxPoint}\\\"><a ng-click=\\\"vm.switchToOrderingPointMax()\\\">{{'stocklogistics.orderingpointmax' | translate}}</a></li>\\n                <li ng-class=\\\"{'active' : vm.tabSelection.minPoint}\\\"><a ng-click=\\\"vm.switchToOrderingPointMin()\\\">{{'stocklogistics.orderingpointmin' | translate}}</a></li>\\n                <li ng-class=\\\"{'active' : vm.tabSelection.packSize}\\\"><a ng-click=\\\"vm.switchToPackSize()\\\">{{'stocklogistics.packsize' | translate}}</a></li>\\n            </ul>\\n        </div>\\n\\n        <div class=\\\"col-lg-12 b-t b-r b-l b-b\\\">\\n            <div class=\\\"col-lg-12\\\"> &nbsp; </div>\\n            <wj-flex-grid initialized=\\\"vm.captureVariantsGrid(s)\\\" auto-generate-columns=\\\"False\\\" class=\\\"orders-flex-grid\\\" style=\\\"width: auto; max-width:100%\\\">\\n            </wj-flex-grid>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n\\n        <label class=\\\"col-lg-12\\\"> {{'stocklogistics.from' | translate}}: </label>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <ui-select ng-model=\\\"vm.selectedFromLocation\\\" theme=\\\"bootstrap\\\">\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"location in vm.selectableFromLocations | filter:{'locationName': $select.search}\\\">\\n                    <span>{{location.locationName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n\\n        <label class=\\\"col-lg-12\\\"> {{'stock.weekdays' | translate}}: </label>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <div class=\\\"col-lg-4\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.weekdaychoices.monday\\\" />\\n                    <i></i>\\n                    {{'common.monday' | translate}}\\n                </label>\\n            </div>\\n            <div class=\\\"col-lg-4\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.weekdaychoices.tuesday\\\" />\\n                    <i></i>\\n                    {{'common.tuesday' | translate}}\\n                </label>\\n            </div>\\n            <div class=\\\"col-lg-4\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.weekdaychoices.wednesday\\\" />\\n                    <i></i>\\n                    {{'common.wednesday' | translate}}\\n                </label>\\n            </div>\\n            <div class=\\\"col-lg-4\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.weekdaychoices.thursday\\\" />\\n                    <i></i>\\n                    {{'common.thursday' | translate}}\\n                </label>\\n            </div>\\n            <div class=\\\"col-lg-4\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.weekdaychoices.friday\\\" />\\n                    <i></i>\\n                    {{'common.friday' | translate}}\\n                </label>\\n            </div>\\n            <div class=\\\"col-lg-4\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.weekdaychoices.saturday\\\" />\\n                    <i></i>\\n                    {{'common.saturday' | translate}}\\n                </label>\\n            </div>\\n            <div class=\\\"col-lg-4\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.weekdaychoices.sunday\\\" />\\n                    <i></i>\\n                    {{'common.sunday' | translate}}\\n                </label>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveStockLogistics()\\\">{{'common.save' | translate}}</button>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n    <div ui-view=\\\"\\\"></div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"hbox hbox-auto-xs hbox-auto-sm bg-light\\\">\\n\\n    <div class=\\\"col w-xl lter b-r\\\" ui-view=\\\"supportList\\\"></div>\\n    \\n    <div class=\\\"col bg-white-only\\\" ui-view=\\\"supportView\\\"></div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChange()\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'role.create' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <div class=\\\"col-sm-4\\\">\\n            <ca-form-group-row label=\\\"'article.variant'\\\">\\n                <ca-singleselect\\n                    model=\\\"vm.selectedVariant\\\" choices=\\\"vm.variants\\\"\\n                    order-by=\\\"'id'\\\" item-renderer=\\\"['variantName']\\\" />\\n            </ca-form-group-row>\\n        </div>\\n        <div ng-show=\\\"vm.selectedVariant != undefined && vm.selectedVariant.id != -1\\\">\\n            <div class=\\\"col-sm-4\\\">\\n                <ca-form-group-row label=\\\"'variantdetail.statisticName'\\\">\\n                    <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"statisticname\\\" ng-model=\\\"vm.statisticName\\\" enter-as-tab>\\n                </ca-form-group-row>\\n            </div>\\n            <div class=\\\"col-sm-4\\\" style=\\\"height:38px\\\"></div>\\n            <div class=\\\"col-sm-12\\\">&nbsp;</div>\\n            <div>\\n                <div class=\\\"col-sm-3\\\">\\n                    <label for=\\\"convertFromText\\\" style=\\\"margin-right:10px\\\">Konvertera från text:</label>\\n                    <input type=\\\"checkbox\\\" id=\\\"convertFromText\\\" id=\\\"fromListOfItem\\\" ng-model=\\\"vm.useListOfItems\\\"/>\\n                </div>\\n                <div ng-show=\\\"vm.useListOfItems\\\" class=\\\"col-sm-3\\\">\\n                    <textarea name=\\\"input\\\" style=\\\"width: 100%; height:400px\\\" ng-model=\\\"vm.fulltextInput\\\"></textarea>\\n                </div>\\n                <div ng-show=\\\"vm.useListOfItems\\\" class=\\\"col-sm-6\\\">\\n                    <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.convertToLines()\\\">Konvertera</button>\\n                </div>\\n            </div>\\n            <div class=\\\"col-sm-12\\\">&nbsp;</div>\\n            <div class=\\\"col-sm-12\\\">\\n                <div class=\\\"alert alert-danger\\\" style=\\\"height:36px;margin:0px;padding:7px\\\" role=\\\"alert\\\">OBS: Auto Sortering funkar inte helt till 100%! - OSB: Max 50 variant detaljer åt gången.</div>\\n            </div>\\n            <div class=\\\"col-sm-12\\\">&nbsp;</div>\\n            <div class=\\\"col-sm-3\\\">\\n                <label for=\\\"varToAdd\\\" style=\\\"margin-right:10px\\\">Antal detaljer:</label>\\n            </div>\\n            <div class=\\\"col-sm-1\\\">\\n                <input type=\\\"number\\\" id=\\\"varToAdd\\\" ng-model=\\\"vm.variantsToAdd\\\" ng-change=\\\"vm.updateListOfVariants()\\\" min=\\\"1\\\" max=\\\"50\\\"/>\\n            </div>\\n            <div class=\\\"col-sm-3\\\">\\n                <label for=\\\"autoSortOrder\\\" style=\\\"margin-right:10px\\\">Auto Sortering:</label>\\n                <input type=\\\"checkbox\\\"  tabindex=\\\"-1\\\" id=\\\"autoSortOrder\\\" ng-model=\\\"vm.autoSortOrder\\\" ng-change=\\\"vm.doAutoSortOrder()\\\"/>\\n            </div>\\n            <div class=\\\"col-sm-5\\\" style=\\\"height:38px\\\"></div>\\n            <div ng-repeat=\\\"variantDetail in vm.newVariantDetails\\\">\\n                <div class=\\\"col-sm-5\\\">\\n                    <ca-form-group-row label=\\\"'variant.variantName'\\\">\\n                        <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"variantdetailname\\\" ng-model=\\\"variantDetail.variantDetailName\\\" ng-change=\\\"vm.doAutoSortOrder()\\\" autocomplete=\\\"off\\\" enter-as-tab>\\n                    </ca-form-group-row>\\n                </div>\\n                <div class=\\\"col-sm-2\\\">\\n                    <label for=\\\"variantDetail.overrideAutoSort\\\" style=\\\"margin-right:10px\\\">Sortering:</label>\\n                </div>\\n                <div class=\\\"col-sm-1\\\">\\n                    <input type=\\\"checkbox\\\" tabindex=\\\"-1\\\" ng-model=\\\"variantDetail.overrideAutoSort\\\" ng-change=\\\"vm.doAutoSortOrder()\\\"/>\\n                </div>\\n                <div class=\\\"col-sm-2\\\">                \\n                    <input type=\\\"number\\\" class=\\\"form-control enterAsTab\\\" name=\\\"sortorder\\\" ng-model=\\\"variantDetail.sortOrder\\\" autocomplete=\\\"off\\\" ng-disabled=\\\"vm.autoSortOrder && !variantDetail.overrideAutoSort\\\" enter-as-tab>\\n                </div>\\n                <div class=\\\"col-sm-2\\\" style=\\\"height:38px\\\"></div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.startEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChange()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'article.article'\\\">\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveProduct(article)\\\" on-article-removed=\\\"vm.removeProduct()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n\\n        <div style=\\\"margin-bottom: 20px;\\\">&nbsp;</div>\\n\\n        <ca-form-group-row label=\\\"'article.articleVariants'\\\" ng-if=\\\"vm.selectedProductCopy && vm.selectedProductCopy.id > 0\\\">\\n            <ui-select ng-model=\\\"vm.selectedProductVariant\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"{{ 'support.chooseProductVariant' | translate }}\\\">\\n                    {{$select.selected.variantDetail1 + \\\", \\\" + $select.selected.variantDetail2 + \\\": \\\" + $select.selected.barcode}}\\n                </ui-select-match>\\n                <ui-select-choices repeat=\\\"productVariant in vm.selectedProductCopy.productVariants | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['externalId', 'barcode']}\\\">\\n                    <span>{{::productVariant.variantDetail1 + \\\", \\\" + productVariant.variantDetail2 + \\\": \\\" + productVariant.barcode}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'article.barcode'\\\" ng-if=\\\"vm.selectedProductCopy && vm.selectedProductCopy.id > 0\\\">\\n            <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"barcode\\\" ng-model=\\\"vm.newBarcode\\\" enter-as-tab>\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.startEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChange()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'article.article'\\\">\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveProduct(article)\\\" on-article-removed=\\\"vm.removeProduct()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n\\n        <div>Tänk på att om du flyttar streckkoder mellan olika produktvarianter finns det en risk att det blir fel i externa system som vi integrerar mot.</div>\\n\\n        <div style=\\\"margin-bottom: 20px;\\\">&nbsp;</div>\\n\\n        <div style=\\\"font-weight: bold;\\\" ng-if=\\\"vm.selectedProductCopy && vm.selectedProductCopy.id > 0\\\">\\n            <table class=\\\"table\\\">\\n                <thead>\\n                    <tr>\\n                        <th>Produktnamn</th>\\n                        <th>Produktnummer</th>\\n                        <th>Lev. produktnummer</th>\\n                    </tr>\\n                </thead>\\n                <tbody>\\n                    <tr>\\n                        <td>{{ vm.selectedProductCopy.articleName }}</td>\\n                        <td>{{ vm.selectedProductCopy.articleNumber }}</td>\\n                        <td>{{ vm.selectedProductCopy.alternativeArticleNumber }}</td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n\\n        <div style=\\\"margin-bottom: 20px;\\\" style=\\\"font-weight: bold;\\\" ng-if=\\\"vm.selectedProductCopy && vm.selectedProductCopy.id > 0\\\">&nbsp;</div>\\n\\n        <div ng-if=\\\"vm.selectedProductCopy && vm.selectedProductCopy.id > 0\\\">\\n            <table class=\\\"table\\\">\\n                <thead>\\n                    <tr>\\n                        <th>Färg</th>\\n                        <th>Storlek</th>\\n                        <th>Externt ID / SKU</th>\\n                        <th>Primär streckkod</th>\\n                        <th>Streckkod(er)</th>\\n                    </tr>\\n                </thead>\\n                <tbody ng-repeat=\\\"productVariant in vm.selectedProductCopy.productVariants\\\">\\n                    <tr>\\n                        <td>{{ productVariant.variantDetail1 }}</td>\\n                        <td>{{ productVariant.variantDetail2 }}</td>\\n                        <td>{{ productVariant.externalId }}</td>\\n                        <td>\\n                            <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"productVariant.newBarcode\\\" ng-disabled=\\\"!vm.isEditing\\\" enter-as-tab style=\\\"width: 150px;\\\">\\n                        </td>\\n                        <td>\\n                            <span ng-repeat=\\\"altbarcode in productVariant.barcodes\\\" style=\\\"display:inline-block;\\\">\\n                                <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" ng-model=\\\"altbarcode.newBarcode\\\" ng-disabled=\\\"!vm.isEditing\\\" enter-as-tab style=\\\"width: 150px; margin-right:3px;\\\">\\n                            </span>\\n                            <input type=\\\"button\\\" class=\\\"btn btn-default\\\" value=\\\"+\\\" ng-click=\\\"vm.addBarcodeToProductVariant(productVariant)\\\" ng-disabled=\\\"!vm.isEditing\\\">\\n                        </td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.startEditing()\\\" ng-if=\\\"!vm.isEditing\\\" ng-disabled=\\\"!vm.selectedProduct || vm.selectedProduct.id === 0\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChange()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'article.article'\\\">\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveProduct(article)\\\" on-article-removed=\\\"vm.removeProduct()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n\\n        <div style=\\\"margin-bottom: 20px;\\\">&nbsp;</div>\\n        \\n        <ca-form-group-row label=\\\"'common.active'\\\" ng-if=\\\"vm.selectedProduct && vm.selectedProduct.id > 0\\\">\\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.isGroupSaleArticle\\\" ng-disabled=\\\"!vm.isEditing\\\" />\\n                <i></i>\\n            </label>\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.startEditing()\\\" ng-if=\\\"!vm.isEditing\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChange()\\\" ng-disabled=\\\"!vm.isEditing || !vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'article.article'\\\">\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveProduct(article)\\\" on-article-removed=\\\"vm.removeProduct()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'support.currentItemGroup'\\\" >\\n            <span>{{ vm.selectedProductCopy.itemGroup.itemGroupCode + ' ' + vm.selectedProductCopy.itemGroup.itemGroupLongName }}</span>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'article.itemgroup'\\\" >\\n            <ui-select ng-model=\\\"vm.selectedItemGroup\\\" theme=\\\"bootstrap\\\" ng-disabled=\\\"!vm.isEditing\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.itemGroupCode + \\\" \\\" + $select.selected.itemGroupLongName}}</ui-select-match>\\n                <ui-select-choices repeat=\\\"itemGroup in vm.itemGroups | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['itemGroupCode', 'itemGroupLongName']}\\\">\\n                    <span>{{itemGroup.itemGroupCode + ' ' + itemGroup.itemGroupLongName}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </ca-form-group-row>\\n        <div style=\\\"margin-bottom: 20px;\\\">&nbsp;</div>\\n\\n        <ca-form-group-row label=\\\"'support.currentPreferredSupplier'\\\">\\n            <div ng-if=\\\"vm.selectedProductCopy && vm.selectedProductCopy.preferredSupplier\\\">\\n                <label>{{ vm.selectedProductCopy.preferredSupplier.companyName }}</label>\\n            </div>\\n        </ca-form-group-row>\\n\\n        <ca-form-group-row label=\\\"'brand.preferredCompany'\\\">\\n            <ca-singleselect model=\\\"vm.selectedProduct.preferredSupplier\\\" choices=\\\"vm.selectedItemGroup.brand.companies\\\" order-by=\\\"'companyName'\\\" item-renderer=\\\"'companyName'\\\" mandatory=\\\"true\\\" disabled-by=\\\"!vm.isEditing || !(vm.selectedItemGroup && vm.selectedItemGroup.id)\\\" />\\n        </ca-form-group-row>\\n        <div style=\\\"margin-bottom: 20px;\\\">&nbsp;</div>\\n\\n        <ca-form-group-row label=\\\"'support.currentSuppliers'\\\">\\n            <div ng-if=\\\"vm.selectedProductCopy && vm.selectedProductCopy.suppliers\\\">\\n                <span ng-repeat=\\\"supplier in vm.selectedProductCopy.suppliers | orderBy:'supplier.companyName'\\\"> {{ supplier.companyName }} </span>\\n            </div>          \\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'brand.companies'\\\">\\n            <ca-multiselect model=\\\"vm.selectedProduct.suppliers\\\" lock-choice=\\\"vm.selectedProduct.preferredSupplier.id\\\" choices=\\\"vm.selectedItemGroup.brand.companies\\\" order-by=\\\"'companyName'\\\" placeholder=\\\"'article.addCompany'\\\" item-renderer=\\\"['companyName']\\\" disabled-by=\\\"!vm.isEditing || !(vm.selectedItemGroup && vm.selectedItemGroup.id)\\\" />\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <h2>Ändra Storleks benämning.</h2>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'article.article'\\\">\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveProduct(article)\\\" on-article-removed=\\\"vm.removeProduct()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n\\n        <div style=\\\"font-weight: bold;\\\" ng-if=\\\"vm.selectedProduct && vm.selectedProduct.id > 0\\\">\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.openEditVariantDetailDialog()\\\">Ändra variantDetaljer</button>\\n        </div>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChange()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.resetForm()\\\" ng-if=\\\"vm.isEditing\\\"> {{'common.reset' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'location.locationnumber'\\\">\\n            <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"locationnumber\\\" ng-model=\\\"vm.location.locationNumber\\\" enter-as-tab>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'location.name'\\\">\\n            <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"locationName\\\" ng-model=\\\"vm.location.locationName\\\" enter-as-tab>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'location.organizationnumber'\\\">\\n            <input ng-if=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"organizationNumber\\\" ng-model=\\\"vm.location.organizationNumber\\\" enter-as-tab>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'location.startdate'\\\">\\n            <wj-input-date class=\\\"col-sm-12\\\" id=\\\"wjStartDate\\\"\\n                value=\\\"vm.location.startDate\\\"\\n                format=\\\"yyyy-MM-dd\\\">\\n            </wj-input-date>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'location.type'\\\" ng-if=\\\"vm.isEditing\\\">\\n            <ui-select ng-model=\\\"vm.selectedLocationType\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"{{ 'support.chooseLocationType' | translate }}\\\">\\n                    {{ $select.selected.description }}\\n                </ui-select-match>\\n                <ui-select-choices repeat=\\\"type in vm.locationTypes | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['description']}\\\">\\n                    <span>{{ ::type.description }}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'location.category'\\\" ng-if=\\\"vm.isEditing\\\">\\n            <ui-select ng-model=\\\"vm.selectedLocationCategory\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                <ui-select-match placeholder=\\\"{{ 'support.chooseLocationCategory' | translate }}\\\">\\n                    {{ $select.selected.category }}\\n                </ui-select-match>\\n                <ui-select-choices repeat=\\\"category in vm.locationCategories | multiPartFilter: {searchTerm: $select.search} : {searchableTerms: ['category']}\\\">\\n                    <span>{{ ::category.category }}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'common.active'\\\">\\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.location.isActive\\\" />\\n                <i></i>\\n            </label>\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.deleteProduct()\\\" ng-disabled=\\\"!vm.isAllowedToDelete()\\\"> {{'common.delete' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row label=\\\"'article.article'\\\">\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveProduct(article)\\\" on-article-removed=\\\"vm.removeProduct()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.mergeProducts()\\\" ng-disabled=\\\"!vm.isAllowedToMerge()\\\"> Slå ihop produkter </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row>\\n            <label>Till produkt</label>\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveToProduct(article)\\\" on-article-removed=\\\"vm.removeToProduct()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row>\\n            <label>Från produkt 1 (obligatorisk)</label>\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveFromProduct1(article)\\\" on-article-removed=\\\"vm.removeFromProduct1()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row>\\n            <label>Från produkt 2 (valfri)</label>\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveFromProduct2(article)\\\" on-article-removed=\\\"vm.removeFromProduct2()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n    </div>\\n    <div class=\\\"panel-body\\\">\\n        <ca-form-group-row>\\n            <label>Från produkt 3 (valfri)</label>\\n            <ca-article-search-single-select on-article-selected=\\\"vm.recieveFromProduct3(article)\\\" on-article-removed=\\\"vm.removeFromProduct3()\\\" page-size=\\\"20\\\" disabled-by=\\\"\\\" />\\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-body\\\">\\n        <div style=\\\"width:50%\\\">\\n            <ca-form-group-row label=\\\"'time.startdate'\\\">\\n                <wj-input-date\\n                    value=\\\"vm.selectedStartDate\\\"\\n                    min=\\\"2000-01-01\\\"\\n                    format=\\\"yyyy-MM-dd\\\"\\n                    class=\\\"form-control\\\">\\n                </wj-input-date>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'time.enddate'\\\">\\n                <wj-input-date\\n                    value=\\\"vm.selectedEndDate\\\"\\n                    min=\\\"2000-01-01\\\"\\n                    format=\\\"yyyy-MM-dd\\\"\\n                    class=\\\"form-control\\\">\\n                </wj-input-date>\\n            </ca-form-group-row>\\n\\n            <ca-form-group-row label=\\\"'user.locations'\\\">\\n                <ca-multiselect model=\\\"vm.selectedLocations\\\" choices=\\\"vm.locations\\\" order-by=\\\"'locationName'\\\" item-renderer=\\\"'locationName'\\\"/>\\n            </ca-form-group-row>\\n\\n            <div>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.search()\\\"> {{'common.search' | translate}} </button>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n\\n        <div class=\\\"col-lg-12\\\" ng-click=\\\"vm.showSequenceNumbers = !vm.showSequenceNumbers\\\" ng-if=\\\"vm.missingEasyPosSequenceNumbers.length > 0 && vm.showSequenceNumbers\\\">\\n            <a class=\\\"auto\\\" href=\\\"\\\">\\n                <div class=\\\"col-lg-12\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-right\\\"> </i> <span class=\\\"ca-font\\\"> Dölj sekvensnummerlista</span>\\n                </div>\\n            </a>\\n        </div>\\n        <div class=\\\"col-lg-12\\\" ng-click=\\\"vm.showSequenceNumbers = !vm.showSequenceNumbers\\\" ng-if=\\\"vm.missingEasyPosSequenceNumbers.length > 0 && !vm.showSequenceNumbers\\\">\\n            <a class=\\\"auto\\\" href=\\\"\\\">\\n                <div class=\\\"col-lg-12 b-b\\\">\\n                    <i class=\\\"fa fa-fw fa-angle-down\\\"> </i> <span class=\\\"ca-font\\\"> Visa sekvensnummerlista</span>\\n                </div>\\n            </a>\\n        </div>        \\n        <div class=\\\"col-lg-12\\\" ng-if=\\\"vm.missingEasyPosSequenceNumbers.length > 0\\\" ng-show=\\\"vm.showSequenceNumbers\\\">\\n            <span ng-repeat=\\\"rec in vm.missingEasyPosSequenceNumbers\\\">{{ rec + ', ' }}</span>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">&nbsp;</div>\\n\\n        <div ng-if=\\\"vm.missingEasyPosReceipts && vm.missingEasyPosReceipts.missingReceiptSpans.length > 0\\\">\\n            <table class=\\\"table\\\" style=\\\"width: 100%;\\\">\\n                <thead>\\n                    <tr>\\n                        <th style=\\\"position: sticky; top: 0; background-color: white;\\\">Butik</th>\\n                        <th style=\\\"position: sticky; top: 0; background-color: white;\\\">Kassa</th>\\n                        <th style=\\\"position: sticky; top: 0; background-color: white;\\\">Storlek på glapp</th>\\n                        <th style=\\\"position: sticky; top: 0; background-color: white;\\\">&nbsp;</th>\\n                    </tr>\\n                </thead>\\n                <tbody ng-repeat=\\\"mrs in vm.missingEasyPosReceipts.missingReceiptSpans\\\">\\n                    <tr>\\n                        <td style=\\\"font-weight:bold;\\\">{{ mrs.locationNumber + ' ' + mrs.locationName }}</td>\\n                        <td style=\\\"font-weight:bold;\\\">{{ mrs.cashRegisterNumber }}</td>\\n                        <td style=\\\"font-weight:bold;\\\">{{ (mrs.receiptNumberDiff - 1) }}</td>\\n                        <td style=\\\"font-weight:bold;\\\">&nbsp;</td>\\n                    </tr>\\n                    <tr>\\n                        <td uib-tooltip=\\\"Sista bokföringsdatum innan glapp\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"topleft\\\">Datum före:<br>{{ mrs.receipt1AccountingDate }}</td>\\n                        <td uib-tooltip=\\\"Sista sekvensnummer innan glapp\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"topleft\\\">Sekvensnummer före:<br>{{ mrs.receipt1SequenceNumber }}</td>\\n                        <td uib-tooltip=\\\"Första bokföringsdatum efter glapp\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"topleft\\\">Datum efter:<br>{{ mrs.receipt2AccountingDate }}</td>\\n                        <td uib-tooltip=\\\"Första sekvensnummer efter glapp\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"topleft\\\">Sekvensnummer efter:<br>{{ mrs.receipt2SequenceNumber }}</td>\\n                    </tr>\\n                    <tr>\\n                        <td colspan=\\\"4\\\" style=\\\"padding-left: 20px;\\\">\\n                            <table class=\\\"table\\\">\\n                                <thead>\\n                                    <tr>\\n                                        <td style=\\\"font-weight:bold;\\\">Kvittonummer</td>\\n                                        <td style=\\\"font-weight:bold;\\\">Sekvensnummer</td>\\n                                    </tr>\\n                                </thead>\\n                                <tbody>\\n                                    <tr ng-repeat=\\\"mr in mrs.missingReceipts\\\">\\n                                        <td>{{ mr.receiptNumber }}</td>\\n                                        <td>{{ mr.sequenceNumber }}</td>\\n                                    </tr>\\n                                </tbody>\\n                            </table>\\n                        </td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\r\\n<div class=\\\"vbox\\\">\\r\\n    <div class=\\\"row-row\\\">\\r\\n        <div class=\\\"col-lg-12\\\">\\r\\n            <label class=\\\"btn btn-default btn-file\\\">\\r\\n                {{'stock.readfile' | translate}} <input id=\\\"xlf\\\" type=\\\"file\\\" name=\\\"xlfile\\\" style=\\\"display:none;\\\">\\r\\n            </label>\\r\\n            visar 50 första raderna\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-lg-12\\\">\\r\\n            <table class=\\\"table-hover table-condensed table-readable-compact table-background\\\">\\r\\n                <thead>\\r\\n                    <tr>\\r\\n                        <td> barcode </td>\\r\\n                        <td> externalId </td>\\r\\n                        <td> purchaseCostPerItem </td>\\r\\n                        <td> quantity </td>\\r\\n                    </tr>\\r\\n                </thead>\\r\\n                <tbody>\\r\\n                    <tr ng-repeat=\\\"row in vm.displayRows\\\"> \\r\\n                        <td>{{row.barcode}}</td>\\r\\n                        <td>{{row.externalId}}</td>\\r\\n                        <td>{{row.purchaseCostPerItem}}</td>\\r\\n                        <td>{{row.quantity}}</td>\\r\\n                    </tr>\\r\\n                </tbody>\\r\\n            </table>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-lg-12\\\">\\r\\n            <span style=\\\"display:inline-block;\\\"><ui-select ng-model=\\\"vm.selectedLocation\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab style=\\\"max-width: 250px;\\\">\\r\\n                <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\r\\n                <ui-select-choices repeat=\\\"location in vm.locations | filter:{'locationName': $select.search}\\\">\\r\\n                    <span>{{location.locationName}}</span>\\r\\n                </ui-select-choices>\\r\\n            </ui-select></span>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-lg-12\\\">&nbsp;</div>\\r\\n\\r\\n        <div class=\\\"col-lg-12\\\">\\r\\n\\r\\n            <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"vm.submitOriginalBalance()\\\"> submit </button>\\r\\n\\r\\n        </div>\\r\\n\\r\\n    </div>\\r\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <!-- <div class=\\\"wrapper-xs b-b\\\">\\n        <div class=\\\"input-group m-b-xxs list-menu\\\">\\n            <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n            <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n        </div>\\n    </div> -->\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"$state.go('support.supportcases.changebarcode')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">{{ 'support.changeBarcode' | translate }}</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.changebarcodes')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Byt/lägg till streckkoder</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.changevariantdetail')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Byta Storlek på ArtikelVariant</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.createlocation')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">{{ 'support.createLocation' | translate }}</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.mergeproducts')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Slå ihop produkter</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.changeisgroupsalearticle')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Ändra varugruppsförsäljning</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.addvariantdetail')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Lägg till variantdetalj</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.updateinventorystatus')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Ändra status på inventering</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.triggertochangelog')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Trigga till changelog</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.missingreceipts')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Hitta saknade kvitton</span>\\n                            </span>\\n                        </a>\\n                        <a ng-click=\\\"$state.go('support.supportcases.originalbalanceimport')\\\" class=\\\"list-group-item m-l\\\">\\n                            <span class=\\\"block text-ellipsis m-l-n\\\">\\n                                <span class=\\\"pull-left text-ellipsis lg-label\\\">Lägg upp IB</span>\\n                            </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .smallComment {\\n        font-size: 0.8em;\\n        font-style: italic;\\n    }\\n</style>\\n<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChange()\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isAllowedToSave()\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <!-- Filtering/search section -->\\n        <ul class=\\\"nav nav-tabs\\\">\\n            <li ng-class=\\\"{'active' : vm.tabSelection == 'orders'}\\\">\\n                <a ng-click=\\\"vm.changeTab('orders')\\\">{{'support.triggerOrders' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection == 'customerorders'}\\\">\\n                <a ng-click=\\\"vm.changeTab('customerorders')\\\">{{'support.triggerCustomerOrders' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection == 'products'}\\\">\\n                <a ng-click=\\\"vm.changeTab('products')\\\">{{'support.triggerProducts' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection == 'productvariants'}\\\">\\n                <a ng-click=\\\"vm.changeTab('productvariants')\\\">{{'support.triggerProductVariants' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection == 'stocks'}\\\">\\n                <a ng-click=\\\"vm.changeTab('stocks')\\\">{{'support.triggerStocks' | translate}}</a>\\n            </li>\\n            <li ng-class=\\\"{'active' : vm.tabSelection == 'pricelistitems'}\\\">\\n                <a ng-click=\\\"vm.changeTab('pricelistitems')\\\">{{'support.triggerPriceListItems' | translate}}</a>\\n            </li>\\n        </ul>\\n\\n        <div>&nbsp;</div>\\n\\n        <ca-form-group-row label=\\\"'support.searchTerm'\\\">\\n            <input type=\\\"text\\\" class=\\\"form-control enterAsTab\\\" name=\\\"searchterm\\\" ng-model=\\\"vm.searchTerm\\\" enter-as-tab>\\n            <div class=\\\"smallComment\\\">Du kan ange ex. produktnummer, streckkod, SKU</div>\\n        </ca-form-group-row>\\n        <ca-form-group-row label=\\\"'support.testRun'\\\">\\n            <label class=\\\"i-checks m-t-xs\\\">\\n                <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.testRun\\\" />\\n                <i></i>\\n            </label>\\n        </ca-form-group-row>\\n\\n        <!-- <div ng-show=\\\"vm.tabSelection == 'orders'\\\"></div>\\n        <div ng-show=\\\"vm.tabSelection == 'customerorders'\\\"></div>\\n        <div ng-show=\\\"vm.tabSelection == 'products'\\\"></div>\\n        <div ng-show=\\\"vm.tabSelection == 'productvariants'\\\"></div> -->\\n        <div ng-show=\\\"vm.tabSelection == 'stocks'\\\">\\n            <ca-form-group-row label=\\\"'reports.ui.stockvalue.locations'\\\">\\n                <ca-multiselect model=\\\"vm.selectedLocationIds\\\" choices=\\\"vm.locations\\\" order-by=\\\"'locationName'\\\" placeholder=\\\"'contacts.locations'\\\" item-renderer=\\\"['locationName']\\\"/>\\n            </ca-form-group-row>\\n        </div>\\n        <div ng-show=\\\"vm.tabSelection == 'pricelistitems'\\\">\\n            <ca-form-group-row label=\\\"'article.pricelist'\\\">\\n                <ui-select ng-model=\\\"vm.selectedPriceListId\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n                    <ui-select-match placeholder=\\\"\\\">{{$select.selected.pricelistName}}</ui-select-match>\\n                    <ui-select-choices repeat=\\\"priceList in vm.priceLists\\\">\\n                        <span>{{priceList.pricelistName}}</span>\\n                    </ui-select-choices>\\n                </ui-select>\\n            </ca-form-group-row>\\n        </div>\\n\\n        <div ng-if=\\\"vm.updatedOrderIds && vm.updatedOrderIds.length > 0\\\">\\n            <ca-form-group-row label=\\\"'support.triggerIds'\\\">\\n                <div class=\\\"smallComment\\\">Dessa order-ID blev triggade till changeloggen ({{ vm.updatedOrderIds.length }} st). OBS! Kolla om testRun är sann, då kommer ID returneras men inget sparas till databasen.</div>\\n                <span ng-repeat=\\\"id in vm.updatedOrderIds\\\">{{ id }}, </span>\\n            </ca-form-group-row>\\n        </div>\\n        <div ng-if=\\\"vm.updatedCustomerOrderIds && vm.updatedCustomerOrderIds.length > 0\\\">\\n            <ca-form-group-row label=\\\"'support.triggerIds'\\\">\\n                <div class=\\\"smallComment\\\">Dessa kundorder-ID blev triggade till changeloggen ({{ vm.updatedCustomerOrderIds.length }} st). OBS! Kolla om testRun är sann, då kommer ID returneras men inget sparas till databasen.</div>\\n                <span ng-repeat=\\\"id in vm.updatedCustomerOrderIds\\\">{{ id }}, </span>\\n            </ca-form-group-row>\\n        </div>\\n        <div ng-if=\\\"vm.updatedProductIds && vm.updatedProductIds.length > 0\\\">\\n            <ca-form-group-row label=\\\"'support.triggerIds'\\\">\\n                <div class=\\\"smallComment\\\">Dessa produkt-ID blev triggade till changeloggen ({{ vm.updatedProductIds.length }} st). OBS! Kolla om testRun är sann, då kommer ID returneras men inget sparas till databasen.</div>\\n                <span ng-repeat=\\\"id in vm.updatedProductIds\\\">{{ id }}, </span>\\n            </ca-form-group-row>\\n        </div>\\n        <div ng-if=\\\"vm.updatedProductVariantIds && vm.updatedProductVariantIds.length > 0\\\">\\n            <ca-form-group-row label=\\\"'support.triggerIds'\\\">\\n                <div class=\\\"smallComment\\\">Dessa produktvariant-ID blev triggade till changeloggen ({{ vm.updatedProductVariantIds.length }} st). OBS! Kolla om testRun är sann, då kommer ID returneras men inget sparas till databasen.</div>\\n                <span ng-repeat=\\\"id in vm.updatedProductVariantIds\\\">{{ id }}, </span>\\n            </ca-form-group-row>\\n        </div>\\n        <div ng-if=\\\"vm.updatedStockIds && vm.updatedStockIds.length > 0\\\">\\n            <ca-form-group-row label=\\\"'support.triggerIds'\\\">\\n                <div class=\\\"smallComment\\\">Dessa lager-ID blev triggade till changeloggen ({{ vm.updatedStockIds.length }} st). OBS! Kolla om testRun är sann, då kommer ID returneras men inget sparas till databasen.</div>\\n                <span ng-repeat=\\\"id in vm.updatedStockIds\\\">{{ id }}, </span>\\n            </ca-form-group-row>\\n        </div>\\n        <div ng-if=\\\"vm.updatePriceListItemIds && vm.updatePriceListItemIds.length > 0\\\">\\n            <ca-form-group-row label=\\\"'support.triggerIds'\\\">\\n                <div class=\\\"smallComment\\\">Dessa pricelistitem-ID blev triggade till changeloggen ({{ vm.updatePriceListItemIds.length }} st). OBS! Kolla om testRun är sann, då kommer ID returneras men inget sparas till databasen.</div>\\n                <span ng-repeat=\\\"id in vm.updatePriceListItemIds\\\">{{ id }}, </span>\\n            </ca-form-group-row>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .darkerBg {\\n        background-color: #ccc;\\n    }\\n</style>\\n<div class=\\\"panel panel-default\\\">\\n\\n    <div class=\\\"panel-heading font-bold\\\">\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.startEditing()\\\" ng-if=\\\"!vm.isEditing\\\" ng-disabled=\\\"!(vm.selectedInventory && vm.selectedInventory.id > 0)\\\"> {{'common.edit' | translate}} </button>\\n        <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChange()\\\" ng-if=\\\"vm.isEditing\\\" ng-disabled=\\\"!vm.isAllowedToSave()\\\"> {{'common.save' | translate}} </button>\\n        <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.cancelEditing()\\\" ng-if=\\\"vm.isEditing\\\"> {{'common.cancel' | translate}} </button>\\n    </div>\\n\\n    <div class=\\\"panel-body\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <div class=\\\"input-group m-b-xxs list-menu b-b\\\">\\n                <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n            </div>\\n            <div class=\\\"wrapper text-center\\\">\\n                <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\"\\n                    items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.searchTermChange()\\\"\\n                    ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\"\\n                    next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <table class=\\\"table table-hover\\\">\\n                <thead>\\n                    <th>{{'stock.inventorydate' | translate}}</th>\\n                    <th>{{'stock.inventorytype' | translate}}</th>\\n                    <th>{{'stock.inventorystatus' | translate}}</th>\\n                    <th>{{'stock.location' | translate}}</th>\\n                    <th>{{'inventory.inventorydescription' | translate}}</th>\\n                </thead>\\n                <tbody>\\n                    <tr ng-repeat=\\\"inventory in vm.inventories\\\">\\n                        <td ng-class=\\\"{darkerBg: vm.selectedInventory.id === inventory.id}\\\">\\n                            <a ng-click=\\\"vm.selectInventory(inventory)\\\" class=\\\"ca-celllink\\\">\\n                                {{ inventory.inventoryDate }}\\n                            </a>\\n                        </td>\\n                        <td>{{ inventory.inventoryType.inventoryTypeName }}</td>\\n                        <td>{{ inventory.inventoryStatus.inventoryStatusName }}</td>\\n                        <td>{{ inventory.location.locationName }}</td>\\n                        <td>{{ inventory.inventoryDescription }}</td>\\n                    </tr>\\n                </tbody>\\n            </table>\\n        </div>\\n\\n        <div style=\\\"margin-bottom: 20px;\\\">&nbsp;</div>\\n        \\n        <ca-form-group-row label=\\\"'stock.inventorystatus'\\\" ng-if=\\\"vm.isEditing && vm.selectedInventory && vm.selectedInventory.id > 0\\\">\\n            <ca-singleselect model=\\\"vm.selectedInventoryStatus\\\" choices=\\\"vm.inventoryStatuses\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'statusName'\\\" mandatory=\\\"true\\\"/> \\n        </ca-form-group-row>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\" ng-hide=\\\"vm.state === 4\\\">\\n    <div ng-if=\\\"vm.state === 0\\\"><!--Keep session?-->\\n        <div class=\\\"header\\\">{{'login.refreshsession.firstheader' | translate}}</div>\\n        <div class=\\\"body bg-gray\\\" style=\\\"text-align: center;\\\">\\n            <div>{{'login.refreshsession.timeleft' | translate}}: {{vm.timer.displayValue}}</div>\\n            <h4>{{'login.refreshsession.firstmessage' | translate}}</h4>\\n            <div style=\\\"padding:8px\\\">\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.refreshSession()\\\" style=\\\"margin-right:8px\\\">\\n                    {{'login.refreshsession.keepsession' | translate}}\\n                </button>\\n                <button class=\\\"btn btn-danger\\\" ng-click=\\\"vm.state = 1\\\" style=\\\"margin-left:8px\\\">\\n                    {{'login.refreshsession.logmeout' | translate}}\\n                </button>\\n            </div>\\n        </div>\\n    </div>\\n    <div ng-if=\\\"vm.state === 1\\\"><!--Are you sure?-->\\n        <div class=\\\"header\\\" style=\\\"background-color:firebrick\\\">{{'login.refreshsession.secondheader' | translate}} </div>\\n        <div class=\\\"body bg-gray\\\" style=\\\"text-align: center;\\\">\\n            <div>{{'login.refreshsession.timeleft' | translate}}: {{vm.timer.displayValue}}</div>\\n            <h4>{{'login.refreshsession.secondmessage' | translate}}</h4>\\n            <div style=\\\"padding:8px\\\">\\n                <button class=\\\"btn btn-danger\\\" ng-click=\\\"vm.closeModal(false)\\\" style=\\\"margin-right:8px\\\">\\n                    {{'login.refreshsession.yes' | translate}}\\n                </button>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.state = 0\\\" style=\\\"margin-left:8px\\\">\\n                    {{'login.refreshsession.no' | translate}}\\n                </button>\\n            </div>\\n        </div>\\n    </div>\\n    <div ng-if=\\\"vm.state === 2\\\"><!--Refresh error!-->\\n        <div class=\\\"header\\\" style=\\\"background-color:firebrick\\\">{{'login.refreshsession.error' | translate}} </div>\\n        <div class=\\\"body bg-gray\\\" style=\\\"text-align: center;\\\">\\n            <div>{{'login.refreshsession.timeleft' | translate}}: {{vm.timer.displayValue}}</div>\\n            <h4>{{'common.error' | translate}}: {{vm.errorMessage}}</h4>\\n            <div style=\\\"padding:8px\\\">\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.refreshSession()\\\" style=\\\"margin-right:8px\\\">\\n                    {{'login.refreshsession.tryagain' | translate}}\\n                </button>\\n                <button class=\\\"btn btn-danger\\\" ng-click=\\\"vm.state = 1\\\" style=\\\"margin-left:8px\\\">\\n                    {{'login.refreshsession.logmeout' | translate}}\\n                </button>\\n            </div>\\n        </div>\\n    </div>\\n    <div ng-if=\\\"vm.state === 3\\\"><!--Refresh success!-->\\n        <div class=\\\"header\\\" style=\\\"background-color:green\\\">{{'login.refreshsession.success' | translate}} </div>\\n        <div class=\\\"body bg-gray\\\" style=\\\"text-align: center;\\\">\\n            <div>{{'common.close' | translate}}s {{'discount.in' | translate | lowercase}} {{vm.successCountDownTimer}}s...</div>\\n            <div>&nbsp;</div>\\n            <button class=\\\"btn btn-success\\\" ng-click=\\\"vm.closeModal()\\\">\\n                {{'common.close' | translate}}\\n            </button>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">{{vm.timeStampDay.date.substring(0, 10)}} - {{vm.location.locationName}} - {{vm.user.firstName}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <div class=\\\"col-lg-8\\\">\\n                <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.timeStampDay.note\\\" />\\n            </div>\\n            <div class=\\\"col-lg-2\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.timeStampDay.notify\\\" />\\n                    <i></i>\\n                    {{'time.notifyadmin' | translate}}\\n                </label>\\n            </div>\\n            <div class=\\\"col-lg-2\\\">\\n                <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.saveTimeStampingDayNote()\\\"> {{'time.savenote' | translate}} </button>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            <label class=\\\"col-lg-1\\\"> {{'time.in' | translate}} </label>\\n            <div class=\\\"col-lg-2\\\">\\n                <wj-input-time\\n                        value=\\\"vm.newInStamp.dateTime\\\"\\n                        format=\\\"HH:mm\\\"\\n                        step=\\\"1\\\">\\n                </wj-input-time>\\n            </div>\\n\\n            <label class=\\\"col-lg-1\\\"> {{'time.out' | translate}} </label>\\n            <div class=\\\"col-lg-2\\\">\\n                <wj-input-time\\n                        value=\\\"vm.newOutStamp.dateTime\\\"\\n                        format=\\\"HH:mm\\\"\\n                        step=\\\"1\\\">\\n                </wj-input-time>\\n            </div>\\n\\n            <div class=\\\"col-lg-2\\\">\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.createNewTimeStamp()\\\" ng-disabled=\\\"!vm.allowTimeSpanCreation()\\\"> {{'common.add' | translate}} </button>\\n            </div>\\n\\n            <div class=\\\"col-lg-2\\\"> &nbsp; </div>\\n\\n            <div class=\\\"col-lg-2\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showStampsForAllLocations\\\" />\\n                    <i></i>\\n                    {{'time.showall' | translate}}\\n                </label>\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                <wj-flex-grid items-source=\\\"vm.timeStampPairs\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" class=\\\"orders-flex-grid\\\" initialized=\\\"vm.captureStampsHistoryGrid(s)\\\">\\n                    <wj-flex-grid-column header=\\\"{{'time.in' | translate}}\\\" binding=\\\"inStamp.dateTime\\\" width=\\\"3*\\\" is-read-only=\\\"true\\\"> {{$item.inStamp.dateTime.substring(11, 16)}} </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.out' | translate}}\\\" binding=\\\"outStamp.dateTime\\\" width=\\\"3*\\\" is-read-only=\\\"true\\\"> {{$item.outStamp.dateTime.substring(11, 16)}} </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.hours' | translate}}\\\" binding=\\\"span\\\" width=\\\"3*\\\" is-read-only=\\\"true\\\"> {{$item.span.toString()}} </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'stock.location' | translate}}\\\" binding=\\\"inStamp.location.locationName\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'common.delete' | translate}}\\\" binding=\\\"\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">\\n                        <button class=\\\"btn btn-default btn-xs\\\" ng-click=\\\"vm.deleteTimeStampPair($item)\\\"> <i class=\\\"fa fa-trash-o\\\"></i> </button>\\n                    </wj-flex-grid-column>\\n                </wj-flex-grid>\\n            </div>\\n    </div>\\n    <div class=\\\"form-group row\\\">\\n        &nbsp;\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"panel panel-default\\\">\\n\\n        <div class=\\\"panel-heading font-bold\\\">\\n\\n        </div>\\n\\n        <div class=\\\"wrapper-xs b-b\\\">\\n            <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></span>\\n                <input type=\\\"text\\\" class=\\\"form-control input-sm no-border no-bg text-md\\\" ng-model=\\\"vm.searchTerm\\\" ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\">\\n            </div>\\n        </div>\\n\\n        <div class=\\\"panel-body\\\">\\n            <div class=\\\"col-lg-12\\\">\\n\\n                <div class=\\\"form-group row\\\">\\n                    <label class=\\\"col-lg-1\\\"> {{'time.startdate' | translate}}: </label>\\n\\n                    <div class=\\\"col-lg-2\\\">\\n                        <wj-input-date\\n                                value=\\\"vm.startDate\\\"\\n                                min=\\\"2000-01-01\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                style=\\\"width:100%\\\">\\n                        </wj-input-date>\\n                    </div>\\n\\n                    <label class=\\\"col-lg-1\\\"> {{'time.enddate' | translate}}: </label>\\n\\n                    <div class=\\\"col-lg-2\\\">\\n                        <wj-input-date\\n                                value=\\\"vm.endDate\\\"\\n                                min=\\\"2000-01-01\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                style=\\\"width:100%\\\">\\n                        </wj-input-date>\\n                    </div>\\n\\n                    <div class=\\\"col-lg-4\\\">\\n                        &nbsp;\\n                    </div>\\n\\n                    <div class=\\\"col-lg-2\\\"> &nbsp; </div>\\n                </div>\\n\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                &nbsp;\\n            </div>\\n\\n            <div class=\\\"wrapper text-center\\\">\\n                <div uib-pagination boundary-links=\\\"true\\\" total-items=\\\"vm.totalItems\\\" items-per-page=\\\"vm.itemsPerPage\\\" max-size=\\\"10\\\" ng-change=\\\"vm.loadTimeStampingUsers()\\\" ng-model=\\\"vm.currentPage\\\" class=\\\"pagination-sm\\\" previous-text=\\\"&lsaquo;\\\" next-text=\\\"&rsaquo;\\\" first-text=\\\"&laquo;\\\" last-text=\\\"&raquo;\\\"></div>\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                <wj-flex-grid items-source=\\\"vm.timeStampingUsers\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" class=\\\"orders-flex-grid\\\" initialized=\\\"vm.captureTimeStampingUsersGrid(s)\\\">\\n                    <wj-flex-grid-column header=\\\"{{'user.employeenumber' | translate}}\\\" binding=\\\"employeeNumber\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.salarytype' | translate}}\\\" binding=\\\"\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'user.firstname' | translate}}\\\" binding=\\\"firstName\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">\\n                        <a ng-click=\\\"vm.loadTimeStampingDaysForUser($item)\\\" class=\\\"ca-celllink\\\">\\n                            {{$item.firstName}}\\n                        </a>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'user.lastname' | translate}}\\\" binding=\\\"lastName\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.startdate' | translate}}\\\" binding=\\\"periodStartDate\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\"> {{$item.periodStartDate.replace(\\\"T\\\", \\\" \\\").substring(0, 10)}} </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.enddate' | translate}}\\\" binding=\\\"periodEndDate\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\"> {{$item.periodEndDate.replace(\\\"T\\\", \\\" \\\").substring(0, 10)}} </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.hoursworked' | translate}}\\\" binding=\\\"workedHours\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">  </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.note' | translate}}\\\" binding=\\\"hasNotesForPeriod\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">\\n                        <i class=\\\"fa fa-check text-success\\\" ng-show=\\\"$item.hasTimeStampingWarnings\\\"></i>\\n                        <i class=\\\"fa fa-times text-danger\\\" ng-hide=\\\"$item.hasTimeStampingWarnings\\\"></i>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.attested' | translate}}\\\" binding=\\\"isAttested\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">\\n                        <i class=\\\"fa fa-check text-success\\\" ng-show=\\\"$item.isAttested\\\"></i>\\n                        <i class=\\\"fa fa-times text-danger\\\" ng-hide=\\\"$item.isAttested\\\"></i>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.locked' | translate}}\\\" binding=\\\"isLockedForPeriod\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">\\n                        <i class=\\\"fa fa-check text-success\\\" ng-show=\\\"$item.isLockedForPeriod\\\"></i>\\n                        <i class=\\\"fa fa-times text-danger\\\" ng-hide=\\\"$item.isLockedForPeriod\\\"></i>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.printed' | translate}}\\\" binding=\\\"isPrintedForPeriod\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">\\n                        <i class=\\\"fa fa-check text-success\\\" ng-show=\\\"$item.isPrintedForPeriod\\\"></i>\\n                        <i class=\\\"fa fa-times text-danger\\\" ng-hide=\\\"$item.isPrintedForPeriod\\\"></i>\\n                    </wj-flex-grid-column>\\n                </wj-flex-grid>\\n            </div>\\n\\n            <div class=\\\"col-lg-12 b-t\\\" ng-show=\\\"vm.showTimeReports\\\">\\n                &nbsp;\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showTimeReports\\\">\\n                <div class=\\\"col-lg-2\\\">\\n                    <button class=\\\"btn btn-primary btn-md\\\" ng-click=\\\"vm.attestAll()\\\" ng-disabled=\\\"!vm.mayAttestAll\\\"> {{'time.attestall' | translate}} </button>\\n                    <button class=\\\"btn btn-default btn-md\\\" ng-click=\\\"vm.getExcelPrintout()\\\"> {{'time.print' | translate}} </button>\\n                </div>\\n                \\n                <div class=\\\"col-lg-4\\\">\\n                    <div class=\\\"col-lg-8\\\">\\n                        <wj-input-date\\n                                value=\\\"vm.newTimeReportDate\\\"\\n                                min=\\\"vm.startDate\\\"\\n                                max=\\\"vm.endDate\\\"\\n                                format=\\\"yyyy-MM-dd\\\"\\n                                style=\\\"width:100%\\\"\\n                                initialized=\\\"vm.captureNewTimeReportDatePicker(s)\\\">\\n                        </wj-input-date>\\n                    </div>\\n                    <div class=\\\"col-lg-4\\\">\\n                        <button class=\\\"btn btn-default btn-md\\\" ng-click=\\\"vm.addTimeReport()\\\" ng-disabled=\\\"!vm.isValidNewTimeReportDate()\\\"> {{'time.addday' | translate}} </button>\\n                    </div>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showTimeReports && vm.timeReports.length > 0\\\">\\n                <wj-flex-grid items-source=\\\"vm.timeReports\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" class=\\\"orders-flex-grid\\\" \\n                              cell-edit-ended=\\\"vm.handleTimeStampDayCellEditEnded()\\\" cell-edit-ending=\\\"vm.handleTimeStampCellEditEnding()\\\"\\n                              initialized=\\\"vm.captureTimeReportsGrid(s)\\\">\\n                    <wj-flex-grid-column header=\\\"{{'time.date' | translate}}\\\" binding=\\\"timeStampDay.date\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">\\n                        <a ng-click=\\\"vm.showTimeStampsForDay($item.timeStampDay)\\\" class=\\\"ca-celllink\\\">\\n                            {{$item.timeStampDay.date.replace(\\\"T\\\", \\\" \\\").substring(0, 10)}}\\n                        </a>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.originaltimeworked' | translate}}\\\" binding=\\\"originalWorkTime\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">\\n                        {{$item.originalWorkTime.toString().substring(0, 5)}}\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.timeworked' | translate}}\\\" binding=\\\"workTime\\\" width=\\\"*\\\" is-read-only=\\\"false\\\">\\n                        {{$item.workTime.toString().substring(0, 5)}}\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.breaktime' | translate}}\\\" binding=\\\"breakTime\\\" width=\\\"*\\\" is-read-only=\\\"false\\\">\\n                        {{$item.breakTime.toString().substring(0, 5)}}\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.timeminusbreaks' | translate}}\\\" binding=\\\"\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">\\n                        {{vm.dateDifference($item.workTime, $item.breakTime)}}\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.note' | translate}}\\\" binding=\\\"timeStampDay.note\\\" width=\\\"8*\\\" is-read-only=\\\"true\\\">\\n                        <a ng-click=\\\"vm.toggleTimeStampDayNotification($item)\\\">\\n                            <span ng-style=\\\"vm.getNotificationStyle($item.timeStampDay)\\\">{{$item.timeStampDay.note}} </span>\\n                        </a>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.printed' | translate}}\\\" binding=\\\"isPrinted\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">\\n                        <i class=\\\"fa fa-check text-success\\\" ng-show=\\\"$item.isPrinted\\\"></i>\\n                        <i class=\\\"fa fa-times text-danger\\\" ng-hide=\\\"$item.isPrinted\\\"></i>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.locked' | translate}}\\\" binding=\\\"isLocked\\\" width=\\\"2*\\\" is-read-only=\\\"true\\\">\\n                        <i class=\\\"fa fa-check text-success\\\" ng-show=\\\"$item.isLocked\\\"></i>\\n                        <i class=\\\"fa fa-times text-danger\\\" ng-hide=\\\"$item.isLocked\\\"></i>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.attested' | translate}}\\\" binding=\\\"isAttested\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">\\n                        <a><i class=\\\"fa fa-check text-success\\\" ng-click=\\\"vm.unattestTimeStampingDay($item.timeStampDay)\\\" ng-if=\\\"$item.isAttested === true\\\"></i></a>\\n                        <a><i class=\\\"fa fa-times text-danger\\\" ng-click=\\\"vm.attestTimeStampingDay($item.timeStampDay)\\\" ng-if=\\\"$item.isAttested === false\\\"></i></a>\\n                        <i class=\\\"fa fa-square-o\\\" ng-if=\\\"$item.isAttested !== false && $item.isAttested !== true\\\"></i>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column is-read-only=\\\"true\\\" align=\\\"center\\\">\\n                        <button class=\\\"btn btn-default btn-xs\\\" ng-click=\\\"vm.attestTimeStampingDay($item.timeStampDay)\\\" ng-if=\\\"$item.isAttested === false\\\"> {{'time.attest' | translate}} </button>\\n                        <button class=\\\"btn btn-default btn-xs\\\" ng-click=\\\"vm.unattestTimeStampingDay($item.timeStampDay)\\\" ng-if=\\\"$item.isAttested === true\\\"> {{'time.unattest' | translate}} </button>\\n                    </wj-flex-grid-column>\\n                </wj-flex-grid>\\n            </div>\\n\\n            <div class=\\\"col-lg-6\\\" ng-show=\\\"vm.timeStampsForDay.length > 0\\\">\\n                <wj-flex-grid items-source=\\\"vm.timeStampsForDay\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" class=\\\"orders-flex-grid\\\" initialized=\\\"vm.captureTimeStampsGrid(s)\\\">\\n\\n                    <wj-flex-grid-column header=\\\"{{'time.time' | translate}}\\\" binding=\\\"dateTime\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">\\n                        {{vm.getHoursAndMinutes($item.dateTime)}}\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.type' | translate}}\\\" binding=\\\"timeStampType.timeStampName\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">\\n                        {{$item.timeStampType.timeStampName}}\\n                    </wj-flex-grid-column>\\n\\n                </wj-flex-grid>\\n            </div>\\n\\n        </div>\\n\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"vbox\\\">\\n\\n    <div class=\\\"row-row\\\">\\n        <div class=\\\"cell scrollable hover\\\">\\n            <div class=\\\"cell-inner\\\">\\n                <div class=\\\"m-t-n-xxs\\\">\\n                    <div class=\\\"list-group no-radius no-border no-bg m-b-none\\\">\\n                        <a ng-click=\\\"vm.selectUser(user)\\\" class=\\\"list-group-item m-l\\\" ng-repeat=\\\"user in vm.userList\\\" ng-class=\\\"{'focus m-l-none': user.id === vm.selectedUserId}\\\">\\n                          <span class=\\\"text-ellipsis m-l-n\\\" ng-class=\\\"{'m-n': user.id === vm.selectedUserId }\\\">\\n                              <span class=\\\"pull-left text-ellipsis lg-label\\\">{{user.firstName + ' ' + user.lastName}}</span>\\n                              <span class=\\\"pull-right\\\">\\n                                  <i class=\\\"fa fa-check\\\" ng-if=\\\"!user.hasTimeStampingWarnings\\\"></i>\\n                                  <i class=\\\"fa fa-exclamation\\\" ng-if=\\\"user.hasTimeStampingWarnings\\\"></i>\\n                              </span>\\n                          </span>\\n                        </a>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">{{'time.timestamping' | translate}} - {{vm.currentUser.firstName + ' ' + vm.currentUser.lastName}} <button class=\\\"btn btn-default pull-right\\\" ng-click=\\\"vm.closeModal()\\\"> X </button> </div>\\n    <div class=\\\"body bg-gray\\\">\\n\\n        <div class=\\\"col-lg-12\\\" id=\\\"currentTimeSection\\\">\\n            <div class=\\\"col-lg-12\\\">\\n                <div class=\\\"col-lg-6\\\">\\n                    <h1>{{vm.currentLocalTime.getHours()}}:{{((vm.currentLocalTime.getMinutes() < 10) ? \\\"0\\\" : \\\"\\\") + vm.currentLocalTime.getMinutes()}}</h1>\\n                </div>\\n                <div class=\\\"col-lg-6\\\">\\n                    <h1 class=\\\"pull-right\\\">{{vm.totalTimeThisMonth.toString().substring(0,5)}}</h1>\\n                </div>\\n            </div>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n\\n            <div class=\\\"col-lg-4\\\" ng-hide=\\\"vm.stampInDisabled\\\">\\n                <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.stampIn()\\\" ng-disabled=\\\"vm.buttonsAreDisabled\\\"> {{'time.stampin' | translate}} </button>\\n            </div>\\n            <div class=\\\"col-lg-4\\\" ng-hide=\\\"vm.stampOutDisabled\\\">\\n                <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.stampOut()\\\" ng-disabled=\\\"vm.buttonsAreDisabled\\\"> {{'time.stampout' | translate}}  </button>\\n            </div>\\n            <div class=\\\"col-lg-4\\\">\\n                <ui-select ng-model=\\\"vm.stampCreationRequest.location\\\" theme=\\\"bootstrap\\\">\\n                    <ui-select-match placeholder=\\\"\\\">{{$select.selected.locationName}}</ui-select-match>\\n                    <ui-select-choices repeat=\\\"location in vm.locations | filter:{'locationName': $select.search}\\\">\\n                        <span>{{location.locationName}}</span>\\n                    </ui-select-choices>\\n                </ui-select>\\n            </div>\\n\\n            <div class=\\\"col-lg-4\\\">\\n                &nbsp;\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                &nbsp;\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                {{'time.previoustimestamps' | translate}}:\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                <wj-flex-grid items-source=\\\"vm.previousTimeStampDays\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" class=\\\"orders-flex-grid\\\" initialized=\\\"vm.captureTimeStampDaysGrid(s)\\\">\\n                    <wj-flex-grid-column header=\\\"{{'time.time' | translate}}\\\" binding=\\\"date\\\" width=\\\"3*\\\" is-read-only=\\\"true\\\">\\n                        <a ng-click=\\\"vm.changeDisplayedTimeStampDay($item)\\\">\\n                            {{$item.date.toString().replace('T', ' ').substring(0, 10)}}\\n                        </a>\\n                    </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.note' | translate}}\\\" binding=\\\"note\\\" width=\\\"9*\\\" is-read-only=\\\"false\\\"></wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\" \\\" binding=\\\"\\\" width=\\\"*\\\" is-read-only=\\\"true\\\">\\n                        <button class=\\\"btn btn-default btn-xs\\\" ng-click=\\\"vm.updateTimeStampDay($item)\\\"> <i class=\\\"fa fa-save\\\"></i> </button>\\n                    </wj-flex-grid-column>\\n                </wj-flex-grid>\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                <wj-flex-grid items-source=\\\"vm.previousTimeStamps\\\" selection-mode=\\\"Row\\\" headers-visibility=\\\"Column\\\" class=\\\"orders-flex-grid\\\" initialized=\\\"vm.captureStampHistoryGrid(s)\\\">\\n                    <wj-flex-grid-column header=\\\"{{'time.time' | translate}}\\\" binding=\\\"dateTime\\\" width=\\\"3*\\\" is-read-only=\\\"true\\\"> {{$item.dateTime.toString().replace('T', ' ').substring(11, 16)}} </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.type' | translate}}\\\" binding=\\\"timeStampType.timeStampName\\\" width=\\\"3*\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                    <wj-flex-grid-column header=\\\"{{'time.location' | translate}}\\\" binding=\\\"location.locationName\\\" width=\\\"3*\\\" is-read-only=\\\"true\\\"> </wj-flex-grid-column>\\n                </wj-flex-grid>\\n            </div>\\n\\n        </div>\\n        <div class=\\\"form-group row\\\">\\n            &nbsp;\\n        </div>\\n\\n    </div>\\n    <div class=\\\"form-group row\\\">\\n        &nbsp;\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table{\\n        font-size: 13px;\\n    }\\n</style>\\n\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + vm.item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n\\n            <div ng-if=\\\"!vm.isLoaded && !vm.hasError\\\">\\n                <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n            </div>\\n            \\n\\n            <div class=\\\"wgt-wrapper\\\">\\n                <div ng-repeat=\\\"integration in vm.widgetData\\\" class=\\\"col-sm-6\\\">\\n                    \\n                    <div class=\\\"ca-integration-status-intagration-name ca-integration-status-label\\\">{{integration.integrationName}}</div>\\n                    <div>\\n                        <span class=\\\"ca-integration-status-estimated-queue-minutes\\\">{{integration.outboundQueueStatus.estimatedQueueMinutes}}</span> \\n                        <span class=\\\"ca-integration-status-time-unit\\\">MIN</span>\\n                    </div>\\n                    <div>\\n                        <span class=\\\"ca-integration-status-date\\\">{{integration.outboundQueueStatus.lastIntegrationBatchCompletedDate | date:'yy-MM-dd HH:mm'}}</span>\\n                    </div>\\n                    \\n                </div>\\n            </div>\\n\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table{\\n        font-size: 13px;\\n    }\\n</style>\\n\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + vm.item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n\\n            <div ng-if=\\\"!vm.isLoaded && !vm.hasError\\\">\\n                <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n            </div>\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p ng-if=\\\"vm.widgetData.locationName\\\">{{ vm.widgetData.locationName }}</p>\\n                <table class=\\\"table\\\">\\n                    <tr ng-repeat=\\\"x in vm.widgetData.refunds\\\">\\n                        <td style=\\\" text-align: left;\\\"><a ng-click=\\\"vm.gotoArticle(x.article.id)\\\">{{ x.article.alternativeArticleNumber }} {{ x.article.articleName }}</a></td>\\n                        <td style=\\\"color:red;\\\">{{ x.totalSum | currency }}</td>\\n                        <td>{{ x.quantity }}</td>\\n                    </tr>\\n                </table>\\n\\n            </div>\\n\\n            <div ng-if=\\\"vm.hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table{\\n        font-size: 13px;\\n    }\\n</style>\\n\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + vm.item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n\\n            <div ng-if=\\\"!vm.isLoaded && !vm.hasError\\\">\\n                <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n            </div>\\n            \\n\\n            <div class=\\\"wgt-wrapper\\\">\\n                <div>\\n                    <ca-singleselect model=\\\"vm.selectedmaingroup\\\" choices=\\\"vm.maingroups\\\" order-by=\\\"'label'\\\" item-renderer=\\\"'label'\\\"/>\\n                </div>\\n                <div>\\n                    <canvas class=\\\"chart chart-line\\\" chart-data=\\\"vm.chart.data\\\"\\n                        chart-labels=\\\"vm.chart.labels\\\" chart-series=\\\"vm.chart.series\\\" chart-options=\\\"vm.chart.options\\\"\\n                        chart-dataset-override=\\\"vm.chart.datasetOverride\\\" chart-click=\\\"vm.chart.onClick\\\">\\n                    </canvas>\\n                </div>\\n            </div>\\n\\n            <div ng-if=\\\"vm.hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table{\\n        font-size: 13px;\\n    }\\n</style>\\n\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{'widget.' + vm.item.name | translate}} {{ selectedLocation }}\\n    </div>\\n    <div class=\\\"wgt-body\\\" style=\\\"overflow: auto;padding-top: 0px;padding-bottom: 20px;top: 0px;bottom: 50px;\\\">\\n        <div class=\\\"wgt-row\\\">\\n\\n            <div ng-if=\\\"!vm.isLoaded && !vm.hasError\\\">\\n                <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n            </div>\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p ng-if=\\\"vm.widgetData.locationName\\\">{{ vm.widgetData.locationName }}</p>\\n                <table class=\\\"table\\\" style=\\\"width: 100%;height: 100%;\\\">\\n                    <tr ng-repeat=\\\"x in vm.widgetData.sold\\\">\\n                        <td style=\\\" text-align: left;text-overflow: ellipsis; overflow:hidden; max-width:200px; white-space: nowrap;\\\">\\n                            <a ng-click=\\\"vm.gotoArticle(x.article.id)\\\">{{ x.article.alternativeArticleNumber }} {{ x.article.articleName }}</a></td>\\n                        <td style=\\\"color:red;\\\">{{ x.totalSum | currency }}</td>\\n                        <td>{{ x.quantity }}</td>\\n                    </tr>\\n                </table>\\n\\n            </div>\\n\\n            <div ng-if=\\\"vm.hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"custom-edit-input\\\">\\n    <div class=\\\"inputs\\\">\\n        <span ng-show=\\\"!vm.isEditing\\\">{{ vm.address.addressLine1 }}</span>\\n        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.addressLine1\\\" placeholder=\\\"{{'address.addressline1' | translate}}\\\">\\n        <span ng-show=\\\"!vm.isEditing && vm.address.addressLine2\\\">, {{ vm.address.addressLine2 }}</span>\\n        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.addressLine2\\\" placeholder=\\\"{{'address.addressline2' | translate}}\\\">\\n        <span ng-show=\\\"!vm.isEditing && vm.address.addressLine3\\\">, {{ vm.address.addressLine3 }}</span>\\n        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.addressLine3\\\" placeholder=\\\"{{'address.addressline3' | translate}}\\\">\\n        <span ng-show=\\\"!vm.isEditing\\\">, {{ vm.address.postalCode }}</span>\\n        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.postalCode\\\" placeholder=\\\"{{'address.postalCode' | translate}}\\\">\\n        <span ng-show=\\\"!vm.isEditing\\\">{{ vm.address.city }}</span>\\n        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.city\\\" placeholder=\\\"{{'address.city' | translate}}\\\">\\n        <span ng-show=\\\"!vm.isEditing && vm.address.country\\\">, {{ vm.address.country }}</span>\\n        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.address.country\\\" placeholder=\\\"{{'address.country' | translate}}\\\">\\n    </div>\\n    <div class=\\\"tools\\\" ng-if=\\\"vm.showTools\\\">\\n        <button ng-show=\\\"vm.isEditing\\\" type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" ng-click=\\\"vm.remove()\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .articleListContainer {\\n        display: flex;\\n        flex-direction: column;\\n        height: 90%;\\n        align-content: space-between;\\n    }\\n    .articleListContainerItem.searchBoxItem {\\n    }\\n    .articleListContainerItem.mainListItem {\\n        overflow: auto;\\n        flex-shrink: 2; \\n    }\\n    .articleListContainerItem.paginationItem {\\n        text-align: center;\\n    }\\n    .hover-bg:hover {\\n        background-color: #e4eaec !important;\\n    }\\n    .productlist-w-transition {\\n        transition: all ease-in-out .405s;\\n    }\\n    .productlist-hide-transition {\\n        transition: all ease-in .375s, transform step-end .255s;\\n    }\\n    .productlist-show-transition {\\n        transition: all ease-in .255s, transform step-end .375s;\\n    }\\n    .scale-x-zero{\\n        transform:scaleX(0);\\n    }\\n    .scale-x-one{\\n        transform:scaleX(1);\\n    }\\n    .h-zero{\\n        height: 0px;\\n    }\\n    .o-zero{\\n        opacity: 0;\\n    }\\n    .h-max{\\n        height: 80px;\\n    }\\n    .o-max{\\n        opacity: 1;\\n    }\\n    .pos-abs{\\n        position:absolute;\\n    }\\n    .filter-transition {\\n        transition: all ease-in-out .195s;\\n    }\\n    .no-click { \\n        pointer-events: none;  \\n    }\\n</style>\\n<div class=\\\"articleListContainer pos-abs\\\" ng-class=\\\"{ 'productlist-show-transition scale-x-zero o-zero no-click' : vm.articleListIsVisible, 'productlist-hide-transition scale-x-one o-max' : !vm.articleListIsVisible }\\\">\\n    <div class=\\\"wrapper-3xs\\\" style=\\\"padding-top:7px\\\">\\n        <span class=\\\"input-group-addon input-sm no-border no-bg\\\"\\n            tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'customerinvoice.showSearchFields'  | translate}}\\\" tooltip-popup-delay=\\\"300\\\">\\n            <a class=\\\"b-b b-t b-r b-l\\\" ng-click=\\\"vm.toggleHideArticleList()\\\"><i class=\\\"fa fa-fw fa-angle-double-right\\\"></i></a>\\n        </span>\\n    </div>\\n</div>\\n\\n<div class=\\\"articleListContainer\\\" ng-class=\\\"{ 'productlist-show-transition scale-x-zero o-zero no-click' : !vm.articleListIsVisible, 'productlist-hide-transition scale-x-one o-max' : vm.articleListIsVisible }\\\">\\n    <div class=\\\"articleListContainerItem searchBoxItem\\\">\\n        <div class=\\\"wrapper-xs\\\" style=\\\"padding-top:7px; padding-bottom:0px\\\">\\n            <form ng-submit=\\\"vm.searchTermChange()\\\">\\n                <div class=\\\"input-group m-b-xxs list-menu\\\">\\n                    <span class=\\\"input-group-addon input-sm no-border no-bg\\\" ng-if=\\\"vm.showNewButton\\\"><button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"vm.goToNew()\\\">{{'common.new' | translate}}</button></span>\\n                    <input id=\\\"SearchInput\\\" type=\\\"text\\\" class=\\\"form-control input-sm no-border text-md\\\" style=\\\"background-color:white\\\" ng-model=\\\"vm.filter\\\" ng-model-options=\\\"{debounce: 2500}\\\" ng-change=\\\"vm.searchTermChange()\\\" placeholder=\\\"{{'common.search' | translate}}\\\"\\n                        tooltip-placement=\\\"top-right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'article.articleList.pressEnter'  | translate}}\\\" tooltip-popup-delay=\\\"300\\\">\\n                    <span class=\\\"input-group-addon input-sm no-border no-bg\\\"><button type=\\\"submit\\\" class=\\\"btn btn-sm btn-default\\\"><i class=\\\"fa fa-search text-md m-t-xxs\\\"></i></button></span>\\n                    <span class=\\\"input-group-addon input-sm no-border no-bg\\\" style=\\\"padding:4px\\\"\\n                        tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'customerinvoice.hideSearchFields'  | translate}}\\\" tooltip-popup-delay=\\\"300\\\">\\n                        <a class=\\\"b-b b-t b-r b-l\\\" ng-click=\\\"vm.toggleHideArticleList()\\\" ng-show=\\\"vm.articleListIsVisible\\\"> <div class=\\\"fa fa-fw fa-angle-double-left\\\"></div></a>\\n                    </span>\\n                    <input type=\\\"submit\\\" style=\\\"position: absolute; left:-9999px; width: 1px; height: 1px;\\\"/>\\n                </div>\\n            </form>\\n        </div>\\n        <div class=\\\"col-lg-12 b-b\\\" style=\\\"font-size:small;text-align:left;\\\">\\n            <span style=\\\"text-align:left; padding:0px\\\" class=\\\"input-group-addon input-sm no-border no-bg\\\">\\n                <b style=\\\"padding-right:10px\\\"> {{ 'common.filter' | translate }}: </b>\\n                <a class=\\\"b-b b-t b-r b-l\\\" ng-click=\\\"vm.filterDropdownIsVisisble = !vm.filterDropdownIsVisisble\\\" ng-show=\\\"vm.filterDropdownIsVisisble\\\"> <i class=\\\"fa fa-fw fa-angle-down\\\"></i> </a>\\n                <a class=\\\"b-b b-t b-r b-l\\\" ng-click=\\\"vm.filterDropdownIsVisisble = !vm.filterDropdownIsVisisble\\\" ng-hide=\\\"vm.filterDropdownIsVisisble\\\"> <i class=\\\"fa fa-fw fa-angle-right\\\"></i> </a>\\n                <i ng-show=\\\"vm.useElasticProductSearch\\\" style=\\\"padding-left:20px\\\"><u><a tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{ 'article.elasticSearch.tooltip' | translate }}\\\" tooltip-popup-delay=\\\"300\\\"> {{ 'article.search.tip' | translate }} </a></u></i>\\n            </span>\\n        </div>\\n        <div class=\\\"col-lg-12 filter-transition\\\" ng-class=\\\"{ 'h-max o-max b-b' : vm.filterDropdownIsVisisble, 'h-zero o-zero no-click' : !vm.filterDropdownIsVisisble }\\\">\\n            <div style=\\\"font-size:small;text-align:left; margin-bottom:8px; margin-top:8px\\\">\\n                <ca-form-group-row-other label=\\\"'article.matchEntireSearch'\\\"> \\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" name=\\\"match\\\" ng-model=\\\"vm.match\\\" ng-change=\\\"vm.searchTermChange()\\\" ng-checked=\\\"vm.match\\\"/>\\n                        <i></i>\\n                    </label>\\n                </ca-form-group-row-other>\\n                <ca-form-group-row-other label=\\\"'article.showInactive'\\\"> \\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" name=\\\"inactive\\\" ng-model=\\\"vm.inactive\\\" ng-change=\\\"vm.searchTermChange()\\\" ng-checked=\\\"vm.inactive\\\"/>\\n                        <i></i>\\n                    </label>\\n                </ca-form-group-row-other>\\n            </div>\\n        </div>\\n    </div>\\n    <div class=\\\"articleListContainerItem mainListItem\\\">\\n        <div ng-click=\\\"vm.selectArticle(article)\\\" class=\\\"list-group-item no-radius no-border no-bg hover-bg b-b\\\" ng-repeat=\\\"article in vm.articles\\\" ng-class=\\\"{'focus m-l-none': article.id === vm.selectedArticleId}\\\">\\n            <div class=\\\"block text-ellipsis m-l-n\\\"  tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{article.useAlternativeArticleNumber && article.alternativeArticleNumber.length > 0 ? article.alternativeArticleNumber : article.articleNumber}}: {{article.articleName}}\\\" tooltip-popup-delay=\\\"200\\\">\\n                <div class=\\\"text-ellipsis m-l\\\" style=\\\"font-weight: bold;\\\">\\n                    {{article.useAlternativeArticleNumber && article.alternativeArticleNumber.length > 0 ? article.alternativeArticleNumber : article.articleNumber}}\\n                </div>\\n                <div class=\\\"text-ellipsis m-l\\\">{{article.articleName}}</div>\\n            </div>\\n        </div>\\n    </div>\\n    <div class=\\\"articleListContainerItem paginationItem\\\">\\n        <div\\n            uib-pagination\\n            boundary-links=\\\"true\\\"\\n            total-items=\\\"vm.totalItems\\\"\\n            items-per-page=\\\"vm.pageSize\\\"\\n            max-size=\\\"5\\\"\\n            ng-change=\\\"vm.searchTermChange()\\\"\\n            ng-model=\\\"vm.currentPage\\\"\\n            class=\\\"pagination-sm\\\"\\n            previous-text=\\\"&lsaquo;\\\"\\n            next-text=\\\"&rsaquo;\\\"\\n            first-text=\\\"&laquo;\\\"\\n            last-text=\\\"&raquo;\\\"></div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div>\\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-11\\\">\\n            <ui-select class=\\\"editable-input\\\" ng-model=\\\"vm.selectedArticle\\\" theme=\\\"bootstrap\\\" limit=\\\"1\\\" on-select=\\\"vm.selectArticle()\\\" on-remove=\\\"vm.removeArticle()\\\" ng-disabled=\\\"vm.disabledBy\\\">\\n                <ui-select-match placeholder=\\\"{{'order.addarticle' | translate}}\\\">\\n                    <span>{{$select.selected.articleName + ' (' + ($select.selected.useAlternativeArticleNumber && $select.selected.alternativeArticleNumber.length > 0 ? $select.selected.alternativeArticleNumber : $select.selected.articleNumber) + ')'}}</span>\\n                </ui-select-match>\\n                <ui-select-choices repeat=\\\"article in vm.searchResultArticles track by article.id\\\" refresh=\\\"vm.refreshArticles($select.search)\\\" refresh-delay=\\\"200\\\">\\n                    <span>{{::article.articleName + ' (' + (article.useAlternativeArticleNumber && article.alternativeArticleNumber.length > 0 ? article.alternativeArticleNumber : article.articleNumber) + ')'}}</span>\\n                </ui-select-choices>\\n            </ui-select>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<span style=\\\"display: block; float: right;\\\">\\n    <button ng-click=\\\"vm.toggleConfirmationVisiblity()\\\" class=\\\"btn btn-sm btn-default\\\" type=\\\"button\\\" ng-hide=\\\"vm.confirmationVisible\\\">{{ vm.confirmTitle | translate }}</button>\\n    <span ng-show=\\\"vm.confirmationVisible\\\" class=\\\"ca-slide-in-span\\\" ng-class=\\\"{ true : 'ca-slide-in-from-right', false : ''}[vm.confirmationVisible]\\\">\\n        <button ng-click=\\\"vm.confirm()\\\" class=\\\"btn btn-sm btn-default\\\" type=\\\"button\\\">{{ 'common.confirm' | translate }}</button>\\n        <button ng-click=\\\"vm.toggleConfirmationVisiblity()\\\" class=\\\"btn btn-sm btn-default\\\" type=\\\"button\\\">{{ 'common.cancel' | translate }}</button>\\n    </span>\\n</span>\\n<div style=\\\"clear:both;height:1px;\\\">&nbsp;</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"custom-edit-input\\\">\\n    <div class=\\\"inputs\\\">\\n        <span ng-show=\\\"!vm.isEditing\\\">{{ vm.contactInfo.value }}</span>\\n        <input ng-show=\\\"vm.isEditing\\\" type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"vm.contactInfo.value\\\">\\n    </div>\\n    <div class=\\\"tools\\\">\\n        <button ng-show=\\\"vm.isEditing\\\" type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" ng-click=\\\"vm.remove()\\\"><i class=\\\"fa fa-times\\\"></i></button>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div ng-if=\\\"vm.filteredErrorList.length > 0\\\" class=\\\"ca-errorListStyle\\\" style=\\\"padding:5px 15px;\\\">\\n    <div>\\n        <label ng-show=\\\"vm.label && vm.label.length > 0\\\" style=\\\"float:left;\\\">{{vm.label | translate}}</label>\\n        <div style=\\\"clear: both; height:1px\\\">&nbsp;</div>\\n    </div>\\n    <ul>\\n        <li ng-repeat=\\\"item in vm.filteredErrorList\\\">{{ item.message }}</li>\\n    </ul>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-group row\\\">\\n    <label ng-show=\\\"vm.label && vm.label.length > 0\\\" class=\\\"col-sm-4 control-label\\\">{{vm.label | translate}}:</label>\\n    <div class=\\\"col-sm-8\\\">\\n        <ng-transclude></ng-transclude>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-group row\\\">\\n    <label ng-show=\\\"vm.label && vm.label.length > 0\\\" class=\\\"col-sm-8 control-label\\\">{{vm.label | translate}}:</label>\\n    <div class=\\\"col-sm-4\\\">\\n        <ng-transclude></ng-transclude>\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<ui-select multiple=\\\"\\\" class=\\\"editable-input\\\" ng-model=\\\"vm.model\\\" ng-disabled=\\\"vm.disabledBy\\\" theme=\\\"bootstrap\\\">\\n    <ui-select-match ui-lock-choice=\\\"$item.id == vm.lockChoice\\\" placeholder=\\\"{{vm.placeholder | translate}}\\\">\\n        <span>{{vm.renderItem('list', $item)}}</span>\\n    </ui-select-match>\\n    <ui-select-choices repeat=\\\"item in vm.choices | orderBy:vm.orderBy | filter:$select.search track by item.id\\\">\\n        <span>{{vm.renderItem('choice', item)}}</span>\\n    </ui-select-choices>\\n</ui-select>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div ng-repeat=\\\"contactinfo in vm.contactInfos\\\" class=\\\"ca-searchlist-detail\\\">\\n    <span tooltip-append-to-body=\\\"true\\\" uib-tooltip=\\\"{{contactinfo.value}}\\\" class=\\\"ca-searchlist-detail-label\\\">{{contactinfo.contactInfoType.typeName}} </span>\\n    <span >{{contactinfo.value}}</span>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<ui-select ng-model=\\\"vm.model\\\" ng-disabled=\\\"vm.disabledBy\\\" theme=\\\"bootstrap\\\" class=\\\" enterAsTab\\\" enter-as-tab>\\n    <ui-select-match placeholder=\\\"{{vm.placeholder | translate}}\\\">{{vm.renderItem('selected', $select.selected)}}</ui-select-match>\\n    <ui-select-choices repeat=\\\"item in vm.choices | orderBy:vm.orderBy | filter:vm.filter($select.search) track by item.id\\\">\\n        <span ng-if=\\\"item.id !== -1\\\">{{vm.renderItem('choice', item)}}</span>\\n        <span ng-if=\\\"item.id === -1\\\">&nbsp;</span>\\n    </ui-select-choices>\\n</ui-select>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    \\n</style>\\n\\n<div class=\\\"noselect\\\" ng-click=\\\"vm.changeSortOrder()\\\"\\nuib-tooltip=\\\"{{ vm.getTooltipText() }}\\\" 'common.reset'\\ntooltip-placement=\\\"top\\\" tooltip-delay=\\\"500\\\" tooltip-append-to-body=\\\"true\\\">                    \\n    {{ vm.header | translate}}:\\n    <span ng-if=\\\"vm.orderBy === vm.valueName && vm.reverse !== undefined\\\">\\n        <i class=\\\"fa\\\" ng-class=\\\"vm.reverse ? 'fa-sort-desc' : 'fa-sort-asc'\\\" aria-hidden=\\\"true\\\"></i>\\n    </span>\\n    <i style=\\\"color:lightgrey;\\\" ng-if=\\\"vm.orderBy !== vm.valueName || vm.reverse === undefined\\\" class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\"></i>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    ul.dropdown-menu{\\n        position: absolute !important;\\n        max-height: 200px !important;\\n        display: inline;\\n        z-index: 9999999;\\n    }\\n    li.ui-select-choices-group{\\n        z-index: 9999999;\\n    }\\n    div.size-correction > div {\\n        height: 24px;\\n    }\\n    div.size-correction > div > div {\\n        height: 24px;\\n    }\\n    div.size-correction > div > div > span {\\n        height: 24px;\\n        padding:0px;\\n        margin:0px;\\n        padding-top: 3px;\\n        padding-left: 6px;\\n        font-size: smaller;\\n    }\\n    div.size-correction > div > div > span > span > span{\\n        display: table-cell; \\n        vertical-align:middle;\\n    }\\n    div.size-correction > div > input {\\n        height: 24px;\\n        padding:0px;\\n        margin:0px;\\n        padding-left: 6px;\\n        font-size:smaller;\\n    }\\n    div.size-correction > div > ul > li {\\n        font-size:smaller;\\n    }\\n    div.size-correction > div > ul > li > div {\\n        height:20px;\\n    }\\n</style>\\n\\n<div>\\n    <div class=\\\"form-group row\\\">\\n        <div class=\\\"col-lg-11\\\" style=\\\"position:relative; display:flex; height: 24px;\\\">\\n            <div style=\\\"width: 100%;\\\" class=\\\"size-correction\\\">\\n                <ui-select class=\\\"editable-input\\\" ng-model=\\\"vm.model\\\" theme=\\\"bootstrap\\\" limit=\\\"1\\\" on-select=\\\"vm.select()\\\" allow-clear=\\\"true\\\" on-remove=\\\"vm.remove()\\\" ng-disabled=\\\"vm.disabledBy\\\">\\n                    <ui-select-match placeholder=\\\"{{'article.newarticlevariant.addavariant' | translate}}\\\">\\n                        <span>{{ $select.selected.name }}</span>\\n                    </ui-select-match> \\n                    <ui-select-choices repeat=\\\"variantDetail in vm.searchResultVariantDetail track by variantDetail.id\\\" refresh=\\\"vm.refresh($select.search)\\\" refresh-delay=\\\"200\\\">\\n                        <span>{{ variantDetail.name }}</span>\\n                    </ui-select-choices>\\n                </ui-select>\\n            </div>\\n            <button class=\\\"btn btn-sm btn-default\\\" style=\\\"padding-left:6px;padding-right:6px;padding-top:4px;font-size:smaller\\\" ng-if=\\\"vm.model\\\" type=\\\"button\\\" ng-click=\\\"vm.remove()\\\"><i class=\\\"fa fa-trash-o\\\" aria-hidden=\\\"true\\\"></i></button>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<li class=\\\"hidden-folded\\\" ng-if=\\\"vm.shouldRender('root')\\\" ng-class=\\\"{active:vm.node.expanded}\\\">\\n    <span>\\n        <a class=\\\"auto\\\" href=\\\"\\\" ng-click=\\\"vm.onClick()\\\">\\n            <i ng-class=\\\"vm.node.iconClass\\\"></i>\\n            <span class=\\\"hidden-folded\\\">{{ vm.getNodeLabel(vm.node) | translate}}</span>\\n            <span class=\\\"hidden-folded pull-right text-muted\\\" ng-if=\\\"vm.node.nodes.length\\\">\\n                <i class=\\\"fa fa-fw fa-angle-right\\\" ng-hide=\\\"vm.node.expanded\\\"></i>\\n                <i class=\\\"fa fa-fw fa-angle-down\\\" ng-show=\\\"vm.node.expanded\\\"></i>\\n            </span>\\n        </a>\\n    </span>\\n    <ul class=\\\"nav nav-sub dk\\\" ng-if=\\\"vm.node.nodes.length\\\">\\n        <navigation-node class=\\\"child\\\" ng-repeat=\\\"child in vm.node.nodes\\\" node=\\\"child\\\" level=\\\"vm.level + 1\\\" claims=\\\"vm.claims\\\" license-modules=\\\"vm.licenseModules\\\" root=\\\"vm.root\\\" branch=\\\"vm.branch\\\"></navigation-node>\\n    </ul>\\n</li>\\n\\n<li ng-if=\\\"vm.shouldRender('leaf')\\\" class=\\\"active\\\" ui-sref-active=\\\"active\\\">\\n    <a ng-class=\\\"{'focus m-l-none': vm.hasFocus()}\\\" ng-click=\\\"vm.onClick()\\\">\\n        <span class=\\\"text-xs\\\">{{ vm.getIndentation(vm.level)}} {{ vm.getNodeLabel(vm.node) }}</span>\\n        <span class=\\\"hidden-folded pull-right text-muted\\\" ng-if=\\\"vm.node.nodes.length\\\">\\n            <i class=\\\"fa fa-fw fa-angle-right\\\" ng-hide=\\\"vm.node.expanded\\\"></i>\\n            <i class=\\\"fa fa-fw fa-angle-down\\\" ng-show=\\\"vm.node.expanded\\\"></i>\\n        </span>        \\n    </a>\\n    <ul class=\\\"nav nav-sub dk\\\" ng-if=\\\"vm.node.nodes.length\\\" ng-show=\\\"vm.node.expanded\\\">\\n        <navigation-node class=\\\"child\\\" ng-repeat=\\\"child in vm.node.nodes\\\" node=\\\"child\\\" level=\\\"vm.level + 1\\\" claims=\\\"vm.claims\\\" license-modules=\\\"vm.licenseModules\\\" root=\\\"vm.root\\\" branch=\\\"vm.branch\\\"></navigation-node>\\n    </ul>    \\n</li>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"dashboard-header\\\">\\n    <div class=\\\"dashboard-controls\\\">\\n        <div class=\\\"btn-group\\\" uib-dropdown is-open=\\\"status.isopen\\\">\\n            <button type=\\\"button\\\" class=\\\"btn btn-default dropdown-toggle\\\" uib-dropdown-toggle ng-disabled=\\\"disabled\\\" id=\\\"ddWidgets\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\">\\n                <i class=\\\"fa fa-plus\\\"></i>\\n                {{'dashboard.addwidget' | translate}}<span class=\\\"caret\\\"></span>\\n            </button>\\n            <ul class=\\\"dropdown-menu\\\" role=\\\"menu\\\" aria-labelledby=\\\"ddWidgets\\\"  uib-dropdown-menu>\\n                <li ng-repeat=\\\"widget in widgetDefinitions\\\">\\n                    <a role=\\\"menuitem\\\" ng-click=\\\"addNewWidget(widget)\\\">{{'widget.' + widget.name | translate}}</a>\\n                    {{ sortOrder}}\\n                </li>\\n            </ul>\\n        </div>\\n    </div>\\n</div>\\n<div gridster=\\\"gridsterOpts\\\">\\n    <ul>\\n        <li gridster-item=\\\"item\\\" ng-repeat=\\\"item in widgets\\\">\\n            <widget-body>\\n            </widget-body>\\n        </li>\\n    </ul>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"widget-body\\\" >\\n    <div class=\\\"dropdown widget-menu-area btn-group\\\" uib-dropdown on-toggle=\\\"toggled(open)\\\" aria-expanded=\\\"false\\\">\\n        <a href class=\\\"dropdown-toggle\\\" uib-dropdown-toggle>\\n          <i class=\\\"fa fa-bars\\\" ng-click=\\\"iconClicked()\\\" />\\n        </a>\\n        <ul class=\\\"dropdown-menu\\\" role=\\\"menu\\\" uib-dropdown-menu>\\n           <li ng-click=\\\"close()\\\"><i class=\\\"fa fa-close\\\" ng-click=\\\"iconClicked()\\\" /></li>\\n           <li ng-if=\\\"settings\\\" ng-click=\\\"settings()\\\" ><i class=\\\"fa fa-gear\\\" ng-click=\\\"iconClicked()\\\" /></li>\\n        </ul>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"modal-header\\\">\\n    <h3 class=\\\"modal-title\\\">{{'widget.settingtitle' | translate}}  </h3>\\n</div>\\n<div class=\\\"modal-body\\\">\\n    <h3>{{'widget.chooselocation' | translate }} </h3>\\n\\n        {{'widget.selectlocation' | translate}}\\n    <select ng-model=\\\"selectedSettingItem\\\"\\n            ng-options=\\\"l.id as l.locationName\\n                        for l in currentUser.locations\\\">\\n        <option value=\\\"\\\">{{'widget.alllocations' | translate}}</option>\\n    </select>\\n</div>\\n<div class=\\\"modal-footer\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"saveSettings()\\\">{{'common.save' | translate}}</button>\\n    <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"$dismiss()\\\">{{'common.cancel' | translate}}</button>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"modal-header\\\">\\n    <h3 class=\\\"modal-title\\\">{{'widget.settingtitle' | translate}}  </h3>\\n</div>\\n<div class=\\\"modal-body\\\" style=\\\"padding:5px\\\" ng-style=\\\"{'height': businessAreas.length > 0 ? '140px' : '80px'}\\\">\\n    <b><div style=\\\"font-size:medium\\\">{{'widget.chooselocation' | translate }}  </div></b>\\n\\n    <div class=\\\"col-lg-12\\\">\\n            {{'widget.selectlocation' | translate}}\\n        <select ng-model=\\\"selectedSettingItem\\\"\\n                ng-options=\\\"l.id as l.locationName\\n                            for l in currentUser.locations\\\">\\n            <option value=\\\"\\\">{{'widget.alllocations' | translate}}</option>\\n        </select>\\n    </div>\\n    \\n    <div class=\\\"col-lg-12\\\">\\n        {{'widget.selecttimeperiod' | translate}}:\\n        <select ng-model=\\\"selectedWidgetTimeFrame\\\">\\n            <option value=\\\"1\\\">{{ 'widget.settingtimeperiod.1' | translate }}</option>\\n            <option value=\\\"2\\\">{{ 'widget.settingtimeperiod.2' | translate }}</option>\\n            <option value=\\\"0\\\">{{ 'widget.settingtimeperiod.0' | translate }}</option>\\n        </select>\\n    </div>\\n    \\n    <div class=\\\"col-lg-12\\\" ng-show=\\\"businessAreas.length > 0\\\">\\n        {{ 'product.businessareas' | translate }}:\\n        <ca-singleselect model=\\\"selectedBusinessArea\\\" change-callback=\\\"filterData()\\\" choices=\\\"businessAreas\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\"/>\\n    </div>\\n</div>\\n<div class=\\\"modal-footer\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"saveSettings()\\\">{{'common.save' | translate}}</button>\\n    <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"$dismiss()\\\">{{'common.cancel' | translate}}</button>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"modal-header\\\">\\n    <h3 class=\\\"modal-title\\\">{{'widget.settingtitle' | translate}}  </h3>\\n</div>\\n<div class=\\\"modal-body\\\" style=\\\"height:80px; padding:5px\\\">\\n    <b><div style=\\\"font-size:medium\\\">{{'widget.chooselocation' | translate }}  </div></b>\\n    <div class=\\\"col-lg-12\\\">\\n            {{'widget.selectlocation' | translate}}:\\n        <select ng-model=\\\"selectedSettingItem.locationIds\\\"\\n                ng-options=\\\"l.id as l.locationName\\n                            for l in currentUser.locations\\\">\\n            <option value=\\\"\\\">{{'widget.alllocations' | translate}}</option>\\n        </select>\\n    </div>\\n    \\n    <div class=\\\"col-lg-12\\\">\\n        {{ 'widget.hidetooltip' | translate }}:\\n        <input type=\\\"checkbox\\\" ng-model=\\\"selectedSettingItem.hideTooltip\\\"/>\\n    </div>\\n</div>\\n<div class=\\\"modal-footer\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"saveSettings()\\\">{{'common.save' | translate}}</button>\\n    <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"$dismiss()\\\">{{'common.cancel' | translate}}</button>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"modal-header\\\">\\n    <h3 class=\\\"modal-title\\\">{{'widget.settingtitle' | translate}}  </h3>\\n</div>\\n<div class=\\\"modal-body\\\">\\n    <h3>{{'widget.chooselocation' | translate }} </h3>\\n\\n        {{'widget.selectmultiplelocation' | translate}}\\n    \\n    <ca-multiselect model=\\\"selectedSettingItems\\\" choices=\\\"currentUser.locations\\\" order-by=\\\"'id'\\\" item-renderer=\\\"['locationNumber', 'locationName']\\\"/>\\n    <select ng-model=\\\"selectedSettingItems\\\"\\n            ng-options=\\\"l.id as l.locationName\\n                        for l in currentUser.locations\\\">\\n        <option value=\\\"\\\">{{'widget.alllocations' | translate}}</option>\\n    </select>\\n</div>\\n<div class=\\\"modal-footer\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"saveSettings()\\\">{{'common.save' | translate}}</button>\\n    <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"$dismiss()\\\">{{'common.cancel' | translate}}</button>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"modal-header\\\">\\n    <h3 class=\\\"modal-title\\\">{{'widget.settingtitle' | translate}}  </h3>\\n</div>\\n<div class=\\\"modal-body\\\" style=\\\"height:80px; padding:5px\\\">\\n    <b><div style=\\\"font-size:medium\\\">{{'widget.chooselocation' | translate }}  </div></b>\\n    <div class=\\\"col-lg-12\\\">\\n            {{'widget.selectlocation' | translate}}:\\n        <select ng-model=\\\"selectedSettingItem.locationIds\\\"\\n                ng-options=\\\"l.id as l.locationName\\n                            for l in currentUser.locations\\\">\\n            <option value=\\\"\\\">{{'widget.alllocations' | translate}}</option>\\n        </select>\\n    </div>\\n    \\n    <div class=\\\"col-lg-12\\\">\\n        {{'widget.selecttimeperiod' | translate}}:\\n        <select ng-model=\\\"selectedSettingItem.selectedWidgetTimeFrame\\\">\\n            <option value=\\\"1\\\">{{ 'widget.settingtimeperiod.1' | translate }}</option>\\n            <option value=\\\"2\\\">{{ 'widget.settingtimeperiod.2' | translate }}</option>\\n            <option value=\\\"0\\\">{{ 'widget.settingtimeperiod.0' | translate }}</option>\\n        </select>\\n    </div>\\n</div>\\n<div class=\\\"modal-footer\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"saveSettings()\\\">{{'common.save' | translate}}</button>\\n    <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"$dismiss()\\\">{{'common.cancel' | translate}}</button>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table{\\n        font-size: 13px;\\n    }\\n</style>\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n\\n            <div ng-if=\\\"!isLoaded && !hasError\\\">\\n                <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n            </div>\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">{{ selectedLocation }}</p>\\n                <table class=\\\"table\\\">\\n                    <tr ng-repeat=\\\"x in widgetData\\\">\\n                        <td style=\\\" text-align: left;\\\"><a ng-click=\\\"gotoArticle(x.article.id)\\\">{{ x.article.alternativeArticleNumber }} {{ x.article.articleName }}</a></td>\\n                        <td>{{ x.location}}</td>\\n                        <td style=\\\"color:red;\\\">{{ x.quantity}}</td>\\n                    </tr>\\n                </table>\\n\\n            </div>\\n\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div ng-if=\\\"!isLoaded && !hasError\\\">\\n                <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n            </div>\\n            <div class=\\\"wgt-wrapper heatmap-container\\\">\\n                <p class=\\\"wgt-location\\\">{{ selectedLocation }}</p>\\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n  div > div.google-visualization-tooltip { pointer-events: none }\\n</style>\\n<div class=\\\"wgt\\\">\\n  <div class=\\\"wgt-heading\\\">\\n    {{ 'widget.' + item.name | translate}}\\n  </div>\\n  <div class=\\\"wgt-body\\\">\\n    <div class=\\\"wgt-row\\\">\\n      <div class=\\\"wgt-wrapper\\\">\\n        <div ng-if=\\\"!isLoaded && !hasError\\\">\\n          <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n        </div>\\n        <div style=\\\"position:relative; z-index: 100;\\\">\\n          <p class=\\\"wgt-location\\\">\\n            <span ng-if=\\\"selectedLocationNumber\\\">{{ selectedLocationNumber }}</span>&nbsp;<span ng-if=\\\"selectedLocation\\\">{{ selectedLocation }}</span>\\n            <span ng-if=\\\"!selectedLocation\\\">{{'widget.alllocations' | translate}} {{ 'common.locations' | translate }}</span>\\n            <span ng-if=\\\"selectedWidgetTimeFrame !== undefined\\\">&emsp; {{ 'widget.settingtimeperiod.' + selectedWidgetTimeFrame | translate }}</span>\\n          </p>\\n        </div>\\n        <div class=\\\"grid\\\">  \\n          <div google-chart class=\\\"chart-container chart_wrap\\\" style=\\\"margin-top: -10px\\\"></div>\\n        </div>\\n      </div>\\n    </div>\\n    <div ng-if=\\\"hasError\\\">\\n      <h4>Error loading widget.</h4>\\n      <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n    </div>\\n  </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">{{ selectedLocation }}</p>\\n            <h1 class=\\\"text-center\\\">\\n                    {{transactionDate | date:'yyyy-MM-dd HH:mm:ss'}}\\n            </h1>\\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">{{ selectedLocation }}</p>\\n                <div class=\\\"text-primary-dk\\\">\\n                    <h1 class=\\\"text-center\\\">\\n                        {{widgetData.s7 | number:0}}&nbsp;/&nbsp;{{widgetData.s15 | number:0}}\\n                        &nbsp;\\n                        ({{widgetData.salesGrowth | number:1}}&nbsp;%)\\n                    </h1>\\n                </div>\\n\\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    div > div.google-visualization-tooltip { pointer-events: none }\\n\\n    .pieChartBA {\\n        width:140px; \\n        height:50px; \\n        padding-top:6px; \\n        padding-bottom:6px; \\n        padding-left:12px; \\n        padding-right:12px;\\n    }\\n</style>\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">\\n                    <span ng-if=\\\"selectedLocation\\\">{{ selectedLocationNumber + ' ' + selectedLocation }}</span>\\n                    <span ng-if=\\\"!selectedLocation\\\">{{'widget.alllocations' | translate}} {{ 'common.locations' | translate }}</span>\\n                    <span>&emsp; {{ 'widget.settingtimeperiod.' + selectedWidgetTimeFrame | translate }}</span>\\n                </p>\\n                <div ng-attr-id=\\\"{{ 'pieChart-' + $id }}\\\" google-chart></div>\\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    thead.stly-body{\\n        font-size: smaller;\\n    }\\n    thead.stly-body > tr > th {\\n        text-align: right;\\n    }\\n    thead.stly-body > tr > th.ta-l {\\n        text-align: left;\\n    }\\n    tbody.stly-body{\\n        font-size: smaller;\\n    }\\n    tbody.stly-body > tr > th {\\n        text-align: left;\\n    }\\n    tbody.stly-body > tr > td {\\n        text-align: right;\\n    }\\n    tbody.stly-body > tr > td.ta-l {\\n        text-align: left;\\n    }\\n    tbody.stly-body > tr > td.ta-c {\\n        text-align: center;\\n        font-size: x-small;\\n    }\\n</style>\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-body\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">\\n                    <span ng-if=\\\"selectedLocation\\\">{{'flexmonster.location' | translate}}: {{ selectedLocationNumber + ' ' + selectedLocation }}</span>\\n                    <span ng-if=\\\"!selectedLocation\\\">{{'widget.alllocations' | translate}} {{ 'common.locations' | translate }}</span>\\n                    <span>&emsp;-&emsp;{{'widget.period' | translate}}: {{ 'widget.settingtimeperiod.' + selectedWidgetTimeFrame | translate }}</span>\\n                </p>\\n                <div ng-repeat=\\\"data in widgetData\\\" class=\\\"b-t b-b\\\">\\n                    <table class=\\\"table\\\">\\n                        <thead class=\\\"stly-body\\\">\\n                            <tr>\\n                                <th style=\\\"width:25%\\\"></th>\\n                                <th style=\\\"width:20%\\\">{{ 'widget.thisyear' | translate }}:</th>\\n                                <th style=\\\"width:15%\\\"></th>\\n                                <th style=\\\"width:39%\\\" class=\\\"ta-l\\\">{{ 'widget.lastyear' | translate }}:</th>\\n                            </tr>\\n                        </thead>\\n                        <tbody class=\\\"stly-body\\\">\\n                            <tr>\\n                                <th>{{ 'salestotal.totalReceiptCount' | translate }}:</th>\\n                                <td>{{ data.thisYear.numberOfReciepts | number:0 }}</td>\\n                                <td class=\\\"ta-c\\\" ng-style=\\\"{'color': getDifferenceColour(data.numberOfRecieptsDiff)}\\\">(<span ng-if=\\\"data.numberOfRecieptsDiff > 0\\\">+</span>{{ data.numberOfRecieptsDiff | number:0 }})</td>\\n                                <td class=\\\"ta-l\\\">{{ data.lastYear.numberOfReciepts | number:0 }}</td>\\n                            </tr>\\n                            <tr>\\n                                <th>{{ 'widget.saleincvat' | translate }}:</th>\\n                                <td>{{ data.thisYear.salesPriceTotalIncVat | number:1 }}</td>\\n                                <td class=\\\"ta-c\\\" ng-style=\\\"{'color': getDifferenceColour(data.salesPriceTotalIncVatDiff)}\\\">(<span ng-if=\\\"data.salesPriceTotalIncVatDiff > 0\\\">+</span>{{ data.salesPriceTotalIncVatDiff | number:1 }})</td>\\n                                <td class=\\\"ta-l\\\">{{ data.lastYear.salesPriceTotalIncVat | number:1 }}</td>\\n                            </tr>\\n                            <tr>\\n                                <th>{{ 'flexmonster.total_purchasecost' | translate }}:</th>\\n                                <td>{{ data.thisYear.totalSalesPurchaseCost | number:1 }}</td>\\n                                <td class=\\\"ta-c\\\" ng-style=\\\"{'color': getDifferenceColour(data.totalSalesPurchaseCostDiff)}\\\">(<span ng-if=\\\"data.totalSalesPurchaseCostDiff > 0\\\">+</span>{{ data.totalSalesPurchaseCostDiff | number:1 }})</td>\\n                                <td class=\\\"ta-l\\\">{{ data.lastYear.totalSalesPurchaseCost | number:1 }}</td>\\n                            </tr>\\n                            <tr>\\n                                <th>{{ 'widget.gpsek' | translate }}:</th>\\n                                <td>{{ data.thisYear.grossProfitTotal | number:1 }}</td>\\n                                <td class=\\\"ta-c\\\" ng-style=\\\"{'color': getDifferenceColour(data.grossProfitTotalDiff)}\\\">(<span ng-if=\\\"data.grossProfitTotalDiff > 0\\\">+</span>{{ data.grossProfitTotalDiff | number:1 }})</td>\\n                                <td class=\\\"ta-l\\\">{{ data.lastYear.grossProfitTotal | number:1 }}</td>\\n                            </tr>\\n                            <tr>\\n                                <th>{{ 'widget.gppercent' | translate }}:</th>\\n                                <td>{{ data.thisYear.grossProfitPercent * 100 | number:1 }}%</td>\\n                                <td class=\\\"ta-c\\\" ng-style=\\\"{'color': getDifferenceColour(data.grossProfitPercentDiff)}\\\">(<span ng-if=\\\"data.grossProfitPercentDiff > 0\\\">+</span>{{ data.grossProfitPercentDiff * 100 | number:1 }}%)</td>\\n                                <td class=\\\"ta-l\\\">{{ data.lastYear.grossProfitPercent * 100 | number:1 }}%</td>\\n                            </tr>\\n                            <tr>\\n                                <th>{{ 'widget.averageperreciept' | translate }}:</th>\\n                                <td>{{ data.thisYear.averageCostPerReceipt | number:1 }}</td>\\n                                <td class=\\\"ta-c\\\" ng-style=\\\"{'color': getDifferenceColour(data.averageCostPerReceiptDiff)}\\\">(<span ng-if=\\\"data.averageCostPerReceiptDiff > 0\\\">+</span>{{ data.averageCostPerReceiptDiff | number:1 }})</td>\\n                                <td class=\\\"ta-l\\\">{{ data.lastYear.averageCostPerReceipt | number:1 }}</td>\\n                            </tr>\\n                            <tr ng-if=\\\"data.thisYear.numberOfVisitors !== 0 || data.lastYear.numberOfVisitors !== 0\\\">\\n                                <th>{{ 'flexmonster.customerCount' | translate }}:</th>\\n                                <td>{{ data.thisYear.numberOfVisitors | number:0 }}</td>\\n                                <td class=\\\"ta-c\\\" ng-style=\\\"{'color': getDifferenceColour(data.numberOfVisitorsDiff)}\\\">(<span ng-if=\\\"data.numberOfVisitorsDiff > 0\\\">+</span>{{ data.numberOfVisitorsDiff | number:0 }})</td>\\n                                <td class=\\\"ta-l\\\">{{ data.lastYear.numberOfVisitors | number:0 }}</td>\\n                            </tr>\\n                            <tr ng-if=\\\"data.thisYear.receiptPerVisitor !== 0 || data.lastYear.receiptPerVisitor !== 0\\\">\\n                                <th>{{ 'widget.conversion' | translate }}:</th>\\n                                <td>{{ data.thisYear.receiptPerVisitor * 100 | number:1 }}%</td>\\n                                <td class=\\\"ta-c\\\" ng-style=\\\"{'color': getDifferenceColour(data.receiptPerVisitorDiff)}\\\">(<span ng-if=\\\"data.receiptPerVisitorDiff > 0\\\">+</span>{{ data.receiptPerVisitorDiff * 100 | number:1 }}%)</td>\\n                                <td class=\\\"ta-l\\\">{{ data.lastYear.receiptPerVisitor * 100 | number:1}}%</td>\\n                            </tr>\\n                        </tbody>\\n                    </table>\\n                </div>\\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">{{ selectedLocation }}</p>\\n                <h1 class=\\\"text-center\\\">{{widgetData}}</h1>\\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">{{ selectedLocation }}</p>\\n            <h1 class=\\\"text-center\\\">{{count}}</h1>\\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    tr.ys-headerrow > th {\\n        font-size: smaller;\\n        text-align: right;\\n    }\\n    tr.ys-row > td {\\n        font-size: smaller;\\n        text-align: right;\\n    }\\n    tr.ys-row > td.loc-name {\\n        font-size: small;\\n        font-weight: bold;\\n        text-align: left;\\n    }\\n</style>\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">\\n                    <span ng-repeat=\\\"location in selectedLocations | orderBy:'locationNumber'\\\">{{ location.locationNumber + ' ' + location.locationName }} &emsp;</span>\\n                </p>\\n                <table class=\\\"table\\\">\\n                    <tr class=\\\"ca-table-grouprow ys-headerrow\\\">\\n                        <th></th>\\n                        <th>{{ 'salestotal.totalReceiptCount' | translate }}:</th>\\n                        <th>{{ 'widget.saleincvat' | translate }}:</th>\\n                        <th>{{ 'widget.gpsek' | translate }}:</th>\\n                        <th>{{ 'widget.gppercent' | translate }}:</th>\\n                        <th>{{ 'widget.averageperreciept' | translate }}:</th>\\n                        <th ng-if=\\\"anyVisitors()\\\">{{ 'flexmonster.customerCount' | translate }}:</th>\\n                        <th ng-if=\\\"anyVisitors()\\\">{{ 'widget.conversion' | translate }}:</th>\\n                    </tr>\\n                    <tr class=\\\"ys-row\\\" ng-repeat=\\\"data in widgetData.locations | orderBy:'location.locationNumber'\\\">\\n                        <td class=\\\"loc-name\\\">{{ data.location.locationNumber }} {{ data.location.locationName }}</td>\\n                        <td><span ng-if=\\\"data.numberOfReciepts\\\">{{ data.numberOfReciepts | number:0}}</span></td>\\n                        <td><span ng-if=\\\"data.salesPriceTotalIncVat\\\">{{ data.salesPriceTotalIncVat | number:1}}</span></td>\\n                        <td><span ng-if=\\\"data.grossProfitTotal\\\">{{ data.grossProfitTotal | number:1}}</span></td>\\n                        <td><span ng-if=\\\"data.grossProfitPercent\\\">{{ data.grossProfitPercent * 100 | number:1}}%</span></td>\\n                        <td><span ng-if=\\\"data.averageCostPerReceipt\\\">{{ data.averageCostPerReceipt | number:1}}</span></td>\\n                        <td ng-if=\\\"anyVisitors()\\\"><span ng-if=\\\"data.numberOfVisitors\\\">{{ data.numberOfVisitors | number:0}}</span></td>\\n                        <td ng-if=\\\"anyVisitors()\\\"><span ng-if=\\\"data.receiptPerVisitor\\\">{{ data.receiptPerVisitor * 100 | number:1}}%</span></td>\\n                    </tr>\\n                </table>           \\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">{{ selectedLocation }}</p>\\n                <h1 class=\\\"text-center\\\" ng-if=\\\"widgetData.salesPriceTotal\\\">{{widgetData.salesPriceTotal | number:0}} kr</h1>\\n                <p class=\\\"text-center\\\">\\n                    <span ng-if=\\\"widgetData.salesPriceTotal>0 && widgetData.salesPriceGroupSale>0\\\" class=\\\"text-xs\\\">{{(widgetData.salesPriceGroupSale/widgetData.salesPriceTotal)*100 | number:1}} <span class=\\\"text-muted\\\"> VGR%</span></span>\\n                    <span class=\\\"text-xs\\\" ng-if=\\\"widgetData.numberOfReciepts\\\"> {{widgetData.numberOfReciepts}} <span class=\\\"text-muted\\\">KUNDER</span></span>\\n                    <span class=\\\"text-xs\\\" ng-if=\\\"widgetData.numberOfReciepts\\\"> {{ widgetData.salesPriceTotal/widgetData.numberOfReciepts| number:0}} <span class=\\\"text-muted\\\">SNITTKÖP</span></span>\\n                </p>\\n                <table class=\\\"table\\\" ng-if=\\\"!selectedLocation && widgetData.locations.length\\\">\\n                     <tr class=\\\"ca-table-grouprow\\\">\\n                        <td style=\\\" text-align: left;\\\"></td>\\n                        <td style=\\\" text-align: right;\\\">TOTAL</td>\\n                        <td style=\\\" text-align: right;\\\">VGR%</td>\\n                        <td style=\\\" text-align: right;\\\">Kunder</td>\\n                        <td style=\\\" text-align: right;\\\">Snittköp</td>\\n                    </tr>\\n                    <tr ng-repeat=\\\"data in widgetData.locations | orderBy:'location.locationName' \\\">\\n                        <td style=\\\" text-align: left;\\\">{{ data.location.locationName }}</td>\\n                        <td style=\\\" text-align: right;\\\" ><span ng-if=\\\"data.salesPriceTotal\\\">{{ data.salesPriceTotal| number:0}}</span></td>\\n                        <td style=\\\" text-align: right;\\\"><span ng-if=\\\"data.salesPriceGroupSale\\\">{{(data.salesPriceGroupSale/data.salesPriceTotal)*100 | number:1}}</span></td>\\n                        <td style=\\\" text-align: right;\\\"><span ng-if=\\\"data.numberOfReciepts\\\">{{ data.numberOfReciepts| number:0}}</span></td>\\n                        <td style=\\\" text-align: right;\\\"><span ng-if=\\\"data.numberOfReciepts\\\">{{ data.salesPriceTotal/data.numberOfReciepts| number:0}}</span></td>\\n                    </tr>\\n                </table>                \\n            </div>\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    tr.ys-headerrow > th {\\n        font-size: small;\\n        text-align: left;\\n        position: sticky; \\n        top:0px;\\n        background-color: white;\\n        padding-bottom:5px;\\n        user-select: none;\\n    }\\n    tr.ys-headerrow > th:hover {\\n        background-color:whitesmoke;\\n    }\\n    tr.ys-row:hover {\\n        background-color:whitesmoke;\\n    }\\n    tr.ys-row > td > a {\\n        color:lightskyblue;\\n    }\\n    tr.ys-row:hover > td > a {\\n        color:cornflowerblue;\\n    }\\n    tr.ys-row > td {\\n        font-size: smaller;\\n        text-align: left;\\n        padding-bottom:5px;\\n        padding-top:5px;\\n    }\\n</style>\\n<div class=\\\"wgt\\\" style=\\\"padding-right: 10px\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\" style=\\\"overflow: auto; height:90%; padding-top: 0px;padding-right: 10px;padding-bottom: 20px;top: 0px;bottom: 50px;\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <h4 class=\\\"m-l-sm\\\">\\n                    <span ng-if=\\\"!selectedLocation  \\\">{{ 'common.allLocations' | translate }}</span>\\n                    <span ng-if=\\\"selectedLocation\\\">{{ selectedLocation }}</span>\\n                </h4>\\n            </div>\\n        </div>\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <div class=\\\"col-lg-12\\\" ng-class=\\\"{ 'b-b' : filterShow }\\\">\\n                    <a ng-click=\\\"filterShow = !filterShow\\\" style=\\\"font-size: smaller;\\\">\\n                        <i class=\\\"fa\\\" ng-class=\\\"filterShow ? 'fa-angle-down' : 'fa-angle-right'  \\\"></i>\\n                        <b ng-hide=\\\"filterShow\\\">{{ 'common.show' | translate }}</b> \\n                        <b ng-show=\\\"filterShow\\\">{{ 'productimport.hide' | translate }}</b> \\n                        <b>{{ 'analysis.filter' | translate }}</b> \\n                    </a>\\n                    <i ng-hide=\\\"filterShow\\\" style=\\\"font-size: smaller; color:lightgrey\\\">\\n                        &emsp; <span ng-if=\\\"filter.orderType !== 'all'\\\"> {{ 'flexmonster.orderType' | translate }}: {{ filter.orderType === 'automatic' ? ('orderType.Automatic' | translate) : ('orderType.AutomaticInternal' | translate) }}</span>\\n                        &emsp; <span ng-if=\\\"filter.businessArea.id > 0\\\"> {{ 'product.businessareas' | translate }}: {{ filter.businessArea.name }} </span>\\n                        &emsp; <span ng-if=\\\"filter.brand.id > 0\\\"> {{ 'article.brand' | translate }}: {{ filter.brand.name }} </span>\\n                    </i>\\n                </div>\\n                <div ng-if=\\\"filterShow\\\" style=\\\"font-size: smaller;\\\">\\n                    <div>&nbsp;</div>\\n                    <div class=\\\"col-lg-12\\\">{{ 'flexmonster.orderType' | translate }}:\\n                        <select id=\\\"orderTypeSelect\\\" ng-model=\\\"filter.orderType\\\" ng-change=\\\"filterData()\\\">\\n                            <option value=\\\"all\\\" selected>{{ 'common.all' | translate }}</option>\\n                            <option value=\\\"automatic\\\">{{ 'orderType.Automatic' | translate }}</option>\\n                            <option value=\\\"automaticInternal\\\">{{ 'orderType.AutomaticInternal' | translate }}</option>\\n                        </select>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"distinctBusinessAreaIds.length > 0\\\">\\n                        {{ 'product.businessareas' | translate }}:\\n                        <ca-singleselect model=\\\"filter.businessArea\\\" change-callback=\\\"filterData()\\\" choices=\\\"distinctBusinessAreaIds\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\"/>\\n                    </div>\\n                    <div class=\\\"col-lg-12\\\" ng-show=\\\"distinctBrandIds.length > 0\\\">\\n                        {{ 'article.brand' | translate }}:\\n                        <ca-singleselect model=\\\"filter.brand\\\" change-callback=\\\"filterData()\\\" choices=\\\"distinctBrandIds\\\" order-by=\\\"'name'\\\" item-renderer=\\\"'name'\\\"/>\\n                    </div>\\n                    <div>&nbsp;</div>\\n                </div>\\n                <div class=\\\"col-lg-12 b-t\\\" style=\\\"font-size: smaller;\\\">\\n                    {{ 'common.totalResults' | translate }}: {{widgetData.length}}\\n                </div>\\n            </div>\\n        </div>\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                <table class=\\\"table\\\" style=\\\"width: 100%; height: 100%;\\\">\\n                    <thead>\\n                        <tr class=\\\"ys-headerrow\\\">\\n                            <th ng-click=\\\"changeSortOrder('orderNumber')\\\" \\n                            uib-tooltip=\\\"{{ 'widget.ordersorton' | translate}} {{ 'order.ordernumber' | translate}}\\\" \\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" tooltip-enable=\\\"!hideTooltip\\\">{{ 'order.ordernumber' | translate }}:\\n                                <span ng-if=\\\"orderAutoOrder_OrderBy === 'orderNumber' && orderAutoOrder_Reverse !== undefined\\\">\\n                                    <i class=\\\"fa\\\" ng-class=\\\"orderAutoOrder_Reverse ? 'fa-sort-desc' : 'fa-sort-asc'\\\" aria-hidden=\\\"true\\\"></i>\\n                                </span>\\n                                <i style=\\\"color:lightgrey;\\\" ng-if=\\\"orderAutoOrder_OrderBy !== 'orderNumber' || orderAutoOrder_Reverse === undefined\\\" class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\"></i>\\n                            </th>\\n                            <th ng-click=\\\"changeSortOrder('fromName')\\\" \\n                            uib-tooltip=\\\"{{ 'widget.ordersorton' | translate}} {{ 'widget.from' | translate}}\\\" \\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" tooltip-enable=\\\"!hideTooltip\\\">{{ 'widget.from' | translate }}:\\n                                <span ng-if=\\\"orderAutoOrder_OrderBy === 'fromName' && orderAutoOrder_Reverse !== undefined\\\">\\n                                    <i class=\\\"fa\\\" ng-class=\\\"orderAutoOrder_Reverse ? 'fa-sort-desc' : 'fa-sort-asc'\\\" aria-hidden=\\\"true\\\"></i>\\n                                </span>\\n                                <i style=\\\"color:lightgrey;\\\" ng-if=\\\"orderAutoOrder_OrderBy !== 'fromName' || orderAutoOrder_Reverse === undefined\\\" class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\"></i>\\n                            </th>\\n                            <th ng-click=\\\"changeSortOrder('toName')\\\" \\n                            uib-tooltip=\\\"{{ 'widget.ordersorton' | translate}} {{ 'widget.to' | translate}}\\\" \\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" tooltip-enable=\\\"!hideTooltip\\\">{{ 'widget.to' | translate }}:\\n                                <span ng-if=\\\"orderAutoOrder_OrderBy === 'toName' && orderAutoOrder_Reverse !== undefined\\\">\\n                                    <i class=\\\"fa\\\" ng-class=\\\"orderAutoOrder_Reverse ? 'fa-sort-desc' : 'fa-sort-asc'\\\" aria-hidden=\\\"true\\\"></i>\\n                                </span>\\n                                <i style=\\\"color:lightgrey;\\\" ng-if=\\\"orderAutoOrder_OrderBy !== 'toName' || orderAutoOrder_Reverse === undefined\\\" class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\"></i>\\n                            </th>\\n                            <th ng-click=\\\"changeSortOrder('orderSystemStatusName')\\\" \\n                            uib-tooltip=\\\"{{ 'widget.ordersorton' | translate}} {{ 'order.status' | translate}}\\\" \\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" tooltip-enable=\\\"!hideTooltip\\\">{{ 'order.status' | translate }}:\\n                                <span ng-if=\\\"orderAutoOrder_OrderBy === 'orderSystemStatusName' && orderAutoOrder_Reverse !== undefined\\\">\\n                                    <i class=\\\"fa\\\" ng-class=\\\"orderAutoOrder_Reverse ? 'fa-sort-desc' : 'fa-sort-asc'\\\" aria-hidden=\\\"true\\\"></i>\\n                                </span>\\n                                <i style=\\\"color:lightgrey;\\\" ng-if=\\\"orderAutoOrder_OrderBy !== 'orderSystemStatusName' || orderAutoOrder_Reverse === undefined\\\" class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\"></i>\\n                            </th>\\n                            <th ng-click=\\\"changeSortOrder('orderSystemTypeName')\\\" \\n                            uib-tooltip=\\\"{{ 'widget.ordersorton' | translate}} {{ 'order.ordertype' | translate}}\\\" \\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" tooltip-enable=\\\"!hideTooltip\\\">{{ 'order.ordertype' | translate }}:\\n                                <span ng-if=\\\"orderAutoOrder_OrderBy === 'orderSystemTypeName' && orderAutoOrder_Reverse !== undefined\\\">\\n                                    <i class=\\\"fa\\\" ng-class=\\\"orderAutoOrder_Reverse ? 'fa-sort-desc' : 'fa-sort-asc'\\\" aria-hidden=\\\"true\\\"></i>\\n                                </span>\\n                                <i style=\\\"color:lightgrey;\\\" ng-if=\\\"orderAutoOrder_OrderBy !== 'orderSystemTypeName' || orderAutoOrder_Reverse === undefined\\\" class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\"></i>\\n                            </th>\\n                            <th ng-click=\\\"changeSortOrder('orderCreatedDate')\\\" style=\\\"text-align: right\\\" \\n                            uib-tooltip=\\\"{{ 'widget.ordersorton' | translate}} {{ 'reports.transit.order.createdDate' | translate}}\\\" \\n                            tooltip-placement=\\\"top\\\" tooltip-append-to-body=\\\"true\\\" tooltip-enable=\\\"!hideTooltip\\\">{{ 'reports.transit.order.createdDate' | translate }}:\\n                                <span ng-if=\\\"orderAutoOrder_OrderBy === 'orderCreatedDate' && orderAutoOrder_Reverse !== undefined\\\">\\n                                    <i class=\\\"fa\\\" ng-class=\\\"orderAutoOrder_Reverse ? 'fa-sort-desc' : 'fa-sort-asc'\\\" aria-hidden=\\\"true\\\"></i>\\n                                </span>\\n                                <i style=\\\"color:lightgrey;\\\" ng-if=\\\"orderAutoOrder_OrderBy !== 'orderCreatedDate' || orderAutoOrder_Reverse === undefined\\\" class=\\\"fa fa-sort\\\" aria-hidden=\\\"true\\\"></i>\\n                            </th>\\n                        </tr>\\n                    </thead>\\n                    <tbody>\\n                        <tr class=\\\"ys-row\\\" ng-repeat=\\\"data in widgetData | orderBy: orderAutoOrder_OrderBy : orderAutoOrder_Reverse\\\" ng-click=\\\"goToOrder(data.id)\\\"  \\n                        tooltip-placement=\\\"right\\\" tooltip-append-to-body=\\\"true\\\"  tooltip-enable=\\\"!hideTooltip\\\"\\n                        uib-tooltip=\\\"{{ 'widget.autoorderclicktooltip' | translate }}\\\" tooltip-popup-delay=\\\"50\\\">\\n                            <td><a>{{ data.orderNumber }}</a></td>\\n                            <td>{{ data.fromName }}</td>\\n                            <td>{{ data.toName }}</td>\\n                            <td>{{ data.orderSystemStatusName }}</td>\\n                            <td>{{ data.orderSystemTypeName }}</td>\\n                            <td style=\\\"text-align: right\\\">{{ data.orderCreatedDate | date:'yyyy-MM-dd hh:mm:ss' }}</td>\\n                        </tr>\\n                    </tbody>\\n                </table>\\n            </div>\\n\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\r\\n    <div class=\\\"wgt-heading\\\">\\r\\n        {{ 'widget.' + item.name | translate}}\\r\\n    </div>\\r\\n    <div class=\\\"wgt-body\\\">\\r\\n        <p class=\\\"wgt-location\\\" ng-show=\\\"selectedLocation\\\">{{ selectedLocation }}</p>\\r\\n        <table class=\\\"table\\\">\\r\\n            <tr ng-repeat=\\\"i in importFiles\\\">\\r\\n                <td style=\\\" text-align: left;\\\"><a ng-click=\\\"gotoImportFile(i.importFileId)\\\">{{ i.fileName }}</a></td>\\r\\n                <td> {{ i.importDate }}</td>\\r\\n                <td ng-show=\\\"selectedLocation\\\"> \\r\\n                    <button ng-click=\\\"printImportFile(i.importFileId)\\\" class=\\\"btn btn-xs\\\" style=\\\"margin-top: 0px;\\\" ng-class=\\\"{ true : 'btn-default', false : 'btn-primary' }[vm.readyForImport]\\\" type=\\\"button\\\">{{ 'order.print' | translate }}</button>\\r\\n                </td>\\r\\n            </tr>\\r\\n        </table>\\r\\n    </div>\\r\\n</div>\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    .table{\\n        font-size: 13px;\\n    }\\n</style>\\n<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}} foo\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n\\n            <div ng-if=\\\"!isLoaded && !hasError\\\">\\n                <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n            </div>\\n            <div class=\\\"wgt-wrapper\\\">\\n                <p class=\\\"wgt-location\\\">{{ selectedLocation }}</p>\\n                <table class=\\\"table\\\">\\n                    <tr ng-repeat=\\\"x in widgetData\\\">\\n                        <td ng-if=\\\"x.article.alternativeArticleNumber !== null\\\">{{ x.article.alternativeArticleNumber}}</td>\\n                        <td ng-if=\\\"x.article.alternativeArticleNumber === null\\\">{{ x.article.articleNumber}}</td>\\n                        <td>{{ x.article.articleName}}</td>\\n                        <td>{{ x.quantity}}</td>\\n                    </tr>\\n                </table>\\n\\n            </div>\\n\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}}\\n    </div>\\n    <div class=\\\"wgt-body\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div class=\\\"wgt-wrapper\\\">\\n                {{ widgetData.selectedLocation}}\\n                <chartist class=\\\"ct-chart\\\" chartist-data=\\\"toplistChartData\\\" chartist-chart-options=\\\"toplistChartOptions\\\" chartist-chart-type=\\\"Bar\\\"></chartist>\\n            </div>\\n        </div>\\n\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"wgt\\\">\\n    <div class=\\\"wgt-heading\\\">\\n        {{ 'widget.' + item.name | translate}} {{ selectedLocation }}\\n    </div>\\n    <div class=\\\"wgt-body\\\" style=\\\"overflow: auto;padding-top: 0px;padding-bottom: 20px;top: 0px;bottom: 50px;\\\">\\n        <div class=\\\"wgt-row\\\">\\n            <div ng-if=\\\"!isLoaded && !hasError\\\">\\n                <i class=\\\"fa fa-2x fa-spinner fa-spin\\\"></i>\\n            </div>\\n            <div class=\\\"wgt-wrapper\\\">\\n                <table class=\\\"table\\\" style=\\\"width: 100%;height: 100%;\\\">\\n                    <thead>\\n                    <tr>\\n                        <th style=\\\"text-align: left;position:sticky; top:0px;background-color: white;\\\">{{'order.ordernumber' | translate}}</th>\\n                        <th style=\\\"text-align: left;position:sticky; top:0px;background-color: white;\\\">{{'order.externalordernumber' | translate}}</th>\\n                        <th style=\\\"text-align: left;position:sticky; top:0px;background-color: white;\\\">{{'location.name' | translate}}</th>\\n                        <th style=\\\"text-align: left;position:sticky; top:0px;background-color: white;\\\">{{'brand.company' | translate}}</th>\\n                        <th style=\\\"text-align: left;position:sticky; top:0px;background-color: white;\\\">{{'order.planneddeliverydate' | translate}}</th>\\n                        <th style=\\\"text-align: right;position:sticky; top:0px;background-color: white;\\\">{{'order.undeliveredQuantity' | translate}}</th>\\n                    </tr>\\n                    </thead>\\n                    <tbody ng-repeat=\\\"w in widgetData\\\">\\n                    <tr>\\n                        <td style=\\\"text-align: left;\\\"><a ng-click=\\\"goToOrder(w.id)\\\">{{w.orderNumber}}</a></td>\\n                        <td style=\\\"text-align: left;text-overflow: ellipsis; overflow:hidden; max-width:200px; white-space: nowrap;\\\"\\n                            uib-tooltip=\\\"{{w.orderNumberExternal}}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\"\\n                            ><a ng-click=\\\"goToOrder(w.id)\\\">{{w.orderNumberExternal}}</a></td>\\n                        <td style=\\\"text-align: left;\\\">{{w.locationName}}</td>\\n                        <td style=\\\"text-align: left;text-overflow: ellipsis; overflow:hidden; max-width:200px; white-space: nowrap;\\\"\\n                            uib-tooltip=\\\"{{w.supplier.companyName}}\\\" tooltip-append-to-body=\\\"true\\\" tooltip-placement=\\\"top-left\\\"\\n                            >{{w.supplier.companyName}}</td>\\n                        <td style=\\\"text-align: left;\\\">{{w.orderPlannedDeliveryDate | date:'yyyy-MM-dd'}}</td>\\n                        <td style=\\\"text-align: right;\\\">\\n                            <span tooltip-placement=\\\"top-right\\\" uib-tooltip=\\\"{{'order.orderedQuantity' | translate}}: {{w.orderedQuantity}} - {{'order.deliveredquantity' | translate}}: {{w.deliveredQuantity}}\\\">\\n                                <span ng-if=\\\"(w.orderedQuantity - w.deliveredQuantity) >= 0\\\">{{ (w.orderedQuantity - w.deliveredQuantity) }}</span>\\n                                <span ng-if=\\\"(w.orderedQuantity - w.deliveredQuantity) < 0\\\">{{ '+ ' + (abs(w.orderedQuantity - w.deliveredQuantity)) }}</span> <!-- Handling of overdelivery -->\\n                            </span>\\n                        </td>\\n                    </tr>\\n                    </tbody>\\n                </table>\\n            </div>\\n\\n            <div ng-if=\\\"hasError\\\">\\n                <h4>Error loading widget.</h4>\\n                <button class=\\\"btn btn-primary\\\" ng-click=\\\"reload()\\\">Reload</button>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"load-spinner\\\" ng-class=\\\"{ 'loading': isLoading }\\\">\\n    <div class=\\\"block\\\" ng-if=\\\"spinnerMessage && spinnerMessage.length > 0\\\">\\n        <div class=\\\"centered\\\">{{ spinnerMessage }}</div>\\n    </div>\\n    <span us-spinner=\\\"{speed:2,trail:20,corners:1,radius:15, width:5, length: 10,lines:15}\\\" spinner-key=\\\"{{spinnerName}}\\\"></span>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\"> {{'common.confirm' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            <div style=\\\"max-height: 300px; overflow: auto;\\\"> Är du säker att du vill fakturera ordern?</div>\\n        </label>\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            <div>\\n                <span>Välj faktureringsdatum: &nbsp </span>\\n              \\n                <span>\\n                    <wj-input-date\\n                        value=\\\"vm.deliveryDate\\\"\\n                        initialized=\\\"\\\"\\n                        format=\\\"yyyy-MM-dd\\\">\\n                    </wj-input-date>\\n                </span>\\n            </div>\\n            <!-- <div>(Ej tidigare än senaste inventering: {{ vm.earliestAllowedDeliveryDate }}):</div> -->\\n        </label>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.no' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.yes' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<!-- When we decide to migrate this dialog to react -->\\n<!-- <colour-change\\n    article-id=\\\"vm.articleId\\\"\\n    initial-article-colours=\\\"vm.articleColours\\\">\\n</colour-change> -->\\n\\n<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\"> {{'article.changeColour' | translate}} </div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div style=\\\"margin-bottom: 30px\\\">\\n            <div class=\\\"col-sm-6\\\">\\n                <ca-singleselect model=\\\"vm.selectedColour\\\" choices=\\\"vm.uniqueColourNames\\\" item-renderer=\\\"'colourName'\\\" mandatory=\\\"true\\\" />\\n            </div>\\n            <div class=\\\"col-sm-6\\\">\\n                <input\\n                    type=\\\"text\\\"\\n                    class=\\\"form-control\\\" \\n                    ng-model=\\\"vm.replacementColourName\\\"\\n                    placeholder=\\\"{{'article.newColourName' | translate}}\\\">\\n            </div>\\n        </div>\\n        <div>\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveColourChange()\\\" ng-disabled=\\\"vm.ongoingRequest || vm.replacementColourName == '' || vm.colourNameIsTheSame()\\\">{{'common.save' | translate}}</button>\\n        </div>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning', 'ca-danger-dialog': vm.level === 'danger'}\\\"> {{'common.confirm' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            <div ng-bind-html=\\\"vm.message\\\" style=\\\"max-height: 300px; overflow: auto;\\\">{{ vm.message }}</div>\\n        </label>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.no' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning', 'ca-danger-dialog': vm.level === 'danger' }\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.yes' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\"> {{'common.confirm' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            <div ng-bind-html=\\\"vm.message\\\" style=\\\"max-height: 300px; overflow: auto;\\\">{{ vm.message }}</div>\\n        </label>\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            <div>\\n                <span>Välj leveransdatum</span>\\n                <span>\\n                    <wj-input-date\\n                        value=\\\"vm.deliveryDate\\\"\\n                        initialized=\\\"vm.setWijmoInputDateLimits(s)\\\"\\n                        format=\\\"yyyy-MM-dd\\\">\\n                    </wj-input-date>\\n                </span>\\n            </div>\\n            <div>(Ej tidigare än senaste inventering: {{ vm.earliestAllowedDeliveryDate }}):</div>\\n        </label>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.no' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.yes' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<style>\\n    button.time-btn{\\n        width: 30px; \\n        padding:0px; \\n        font-weight: bold;\\n    }\\n</style>\\n<div class=\\\"form-box\\\">\\n    <form name =\\\"deliveryDocumentDownloadForm\\\">\\n        <div class=\\\"header\\\">\\n            {{'order.print.deliverydocument' | translate}}\\n        </div>\\n        <div class=\\\"body bg-gray\\\">\\n            <div>\\n                <div style=\\\"font-size:smaller; float: right\\\">\\n                    <span ng-repeat=\\\"option in vm.deliveryTimeOptions\\\">\\n                        <button ng-click=\\\"vm.deliveryTimeType = option.value\\\" ng-style=\\\"{'background-color' : vm.deliveryTimeType === option.value ? 'khaki' : 'white'}\\\" \\n                            class=\\\"btn btn-default btn-sm time-btn\\\" ng-disabled=\\\"vm.isFetchingData\\\">{{option.name}}\\n                        </button>\\n                    </span>\\n                </div>\\n                <label for=\\\"timeamount\\\">\\n                    {{'order.deliverydocument.timespan' | translate}}: \\n                </label>\\n                <input type=\\\"number\\\" \\n                    name=\\\"timeamount\\\"\\n                    step=\\\"any\\\"\\n                    class=\\\"form-control enterAsTab\\\"\\n                    ng-model=\\\"vm.deliveryTimeProximity\\\" \\n                    ng-model-options=\\\"{debounce: 1000}\\\"\\n                    enter-as-tab\\n                    ng-disabled=\\\"vm.isFetchingData\\\"/>\\n            </div>\\n            <div class=\\\"m-b\\\" style=\\\"text-align: center; font-size:smaller\\\">\\n                <i>({{'order.deliverydocument.timespanExplanation' | translate}})</i>\\n            </div>\\n            <div class=\\\"b-t\\\">\\n                {{'order.deliverydocument.deliveries' | translate}}: \\n                <ca-singleselect\\n                model=\\\"vm.deliveryDate\\\"\\n                choices=\\\"vm.deliveryDates\\\"\\n                order-by=\\\"startDate\\\"\\n                mandatory=\\\"true\\\"\\n                item-renderer=\\\"'description'\\\"\\n                disabled-by=\\\"vm.isFetchingData\\\"/>\\n            </div>\\n        </div>\\n        <div class=\\\"footer\\\">\\n            <div style=\\\"display: flex; align-items: space-between;\\\">\\n                <button class=\\\"btn btn-default\\\" style=\\\"flex: 1\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n                <div style=\\\"flex: 5\\\">\\n                    <i class=\\\"fa fa-spinner fa-spin\\\" style=\\\"font-size:24px;text-align:center;display: inline-block; width: 100%;\\\" aria-hidden=\\\"true\\\" ng-if=\\\"vm.isFetchingData\\\"></i>\\n                </div>\\n                <button class=\\\"btn btn-primary\\\" style=\\\"flex: 2\\\" style=\\\"float:right;\\\" ng-click=\\\"vm.downloadDocument()\\\" ng-disabled=\\\"!vm.deliveryDate.startDate || vm.isFetchingData\\\">{{'order.print.deliverydocument' | translate}}</button>\\n            </div>\\n        </div>\\n    </form>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\r\\n    <!-- <div class=\\\"header\\\"> {{'productimport.updateprices' | translate}}</div> -->\\r\\n    <div class=\\\"header\\\"> &nbsp; </div>\\r\\n    <div class=\\\"body bg-gray\\\">\\r\\n        <div class=\\\"col-lg-12\\\"> \\r\\n            <label class=\\\"col-lg-12 control-label\\\">\\r\\n                <div style=\\\"max-height: 300px; overflow: auto;\\\"> {{'productimport.therearerelatedprices' | translate}}</div>\\r\\n            </label>\\r\\n        </div>\\r\\n        <div class=\\\"col-lg-12\\\"> \\r\\n            <ui-select ng-model=\\\"vm.selected\\\" theme=\\\"bootstrap\\\" enter-as-tab>\\r\\n                <ui-select-match placeholder=\\\"\\\">{{ $select.selected.label | translate }}</ui-select-match>\\r\\n                <ui-select-choices repeat=\\\"item in vm.selectionChoices\\\">\\r\\n                    <span>{{ item.label | translate }}</span>\\r\\n                </ui-select-choices>\\r\\n            </ui-select>\\r\\n        </div>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"pull-right\\\">\\r\\n        <div class=\\\"col-lg-12\\\">\\r\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.confirm' | translate}}</button>\\r\\n        </div>\\r\\n    </div>\\r\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\r\\n</div>\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\"> {{'common.information' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            <div ng-bind-html=\\\"vm.message\\\" style=\\\"max-height: 300px; overflow: auto;\\\">{{ vm.message }}</div>\\n        </label>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.close' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">{{'common.corrections' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div style=\\\"overflow: auto;\\\">\\n            <wj-flex-grid\\n                initialized=\\\"vm.captureVariantsGrid(s)\\\"\\n                beginning-edit=\\\"vm.beginEditing(s, e)\\\"\\n                class=\\\"orders-flex-grid\\\"\\n                cell-edit-ended=\\\"vm.editEnded(s, e)\\\"\\n                id=\\\"variantsGrid\\\">\\n            </wj-flex-grid>\\n        </div>\\n\\n        <div class=\\\"col-lg-12\\\">\\n            &nbsp;\\n        </div>\\n\\n        <div class=\\\"pull-right\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.saveChanges()\\\">{{'common.save' | translate}}</button>\\n        </div>\\n\\n        <div>\\n            &nbsp;\\n        </div>\\n        <div>\\n            &nbsp;\\n        </div>\\n\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\"> {{'order.printlabel' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div class=\\\"col-sm-9\\\">\\n            <ca-singleselect model=\\\"vm.selectedDate\\\" choices=\\\"vm.selectableDates\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\" />\\n        </div>\\n    </div>\\n\\n    <div style=\\\"clear:both; height:1px;\\\">&nbsp;</div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button ng-click=\\\"vm.printOrderLabels()\\\" class=\\\"btn btn-sm btn-default\\\" style=\\\"display:inline-block;\\\"> {{'order.print' | translate}} </button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <!--<div class=\\\"header\\\">{{'login.header' | translate}}</div>-->\\n    <div class=\\\"header\\\">\\n        <span>\\n            <img src=\\\"./assets/images/CleverApps_FullLogo.png\\\" style=\\\"max-height: 192px; width:150px;\\\" class=\\\"img-full\\\" alt=\\\"{{'login.header' | translate}}\\\">\\n        </span>\\n    </div>\\n    <div class=\\\"body bg-gray\\\">\\n        <form name=\\\"form\\\" class=\\\"form-validation\\\">\\n            <div class=\\\"alert alert-warning\\\" ng-show=\\\"vm.authMessage\\\">\\n                {{vm.authMessage}}\\n            </div>\\n            <div class=\\\"alert alert-danger\\\" ng-show=\\\"vm.authError\\\">\\n                {{vm.authError}}\\n            </div>\\n            <div class=\\\"list-group list-group-sm\\\">\\n                <div class=\\\"list-group-item\\\" ng-show=\\\"vm.showTenantInputField\\\">\\n                    <input type=\\\"text\\\" placeholder=\\\"{{'login.tenant' | translate}}\\\" class=\\\"form-control no-border\\\" ng-model=\\\"vm.tenantName\\\">\\n                </div>\\n                <div class=\\\"list-group-item\\\">\\n                    <input type=\\\"text\\\" placeholder=\\\"{{'login.username' | translate}}\\\" class=\\\"form-control no-border\\\" ng-model=\\\"vm.user.username\\\">\\n                </div>\\n                <div class=\\\"list-group-item\\\">\\n                    <input type=\\\"password\\\" placeholder=\\\"{{'login.password' | translate}}\\\" class=\\\"form-control no-border\\\" ng-model=\\\"vm.user.password\\\">\\n                </div>\\n            </div>\\n            <button type=\\\"submit\\\" ng-click=\\\"vm.login()\\\" class=\\\"btn btn-lg btn-primary btn-block\\\">{{'common.login' | translate}}</button>\\n            <button class=\\\"btn btn-lg btn-default btn-block\\\" ng-click=\\\"vm.showDialogTimeStamping()\\\">\\n                <i class=\\\"fa fa-clock-o\\\"></i>\\n            </button>\\n            <div style=\\\"margin-top:10px;\\\">\\n                <span ng-click=\\\"vm.showDialogResetPassword()\\\" style=\\\"color:blue; font-style:italic;\\\">{{'common.resetPasswordQuestion' | translate}}</span>\\n            </div>\\n        </form>\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">{{'stock.newinventory' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n\\n        <div class=\\\"col-lg-12\\\">\\n\\n            <div class=\\\"form-group row\\\">\\n                <label class=\\\"col-lg-4 control-label\\\">{{'inventory.inventorydescription' | translate}}</label>\\n                <div class=\\\"col-lg-8\\\">\\n                    <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                           type=\\\"text\\\"\\n                           placeholder=\\\"\\\"\\n                           ng-model=\\\"vm.newInventoryRequestData.inventoryDescription\\\"/>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                <label class=\\\"col-sm-4 control-label\\\"> {{'stock.location' | translate}}: </label>\\n                <div class=\\\"col-lg-8\\\">\\n                    <wj-auto-complete\\n                            selected-index-changed=\\\"vm.locationChanged(s)\\\"\\n                            show-drop-down-button=\\\"true\\\"\\n                            items-source=\\\"vm.locations\\\"\\n                            display-member-path=\\\"locationName\\\"\\n                            is-editable=\\\"false\\\"\\n                            required=\\\"true\\\">\\n                    </wj-auto-complete>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                <label class=\\\"col-sm-4 control-label\\\"> {{'stock.inventorytype' | translate}}: </label>\\n                <div class=\\\"col-lg-8\\\">\\n                    <wj-auto-complete\\n                            selected-index-changed=\\\"vm.inventoryTypeChanged(s)\\\"\\n                            show-drop-down-button=\\\"true\\\"\\n                            items-source=\\\"vm.inventoryTypes\\\"\\n                            display-member-path=\\\"inventoryTypeName\\\"\\n                            is-editable=\\\"false\\\"\\n                            required=\\\"true\\\">\\n                    </wj-auto-complete>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                <label class=\\\"col-sm-4 control-label\\\">{{'stock.inventorydate' | translate}}: </label>\\n                <div class=\\\"col-lg-4\\\">\\n                    <wj-input-date\\n                            value=\\\"vm.newInventoryRequestData.inventoryDate\\\"\\n                            min=\\\"2000-01-01\\\"\\n                            format=\\\"yyyy-MM-dd\\\">\\n                    </wj-input-date>\\n                </div>\\n                <div class=\\\"col-lg-4\\\">\\n                    <wj-input-time\\n                            value=\\\"vm.newInventoryRequestData.inventoryDate\\\"\\n                            format=\\\"HH:mm\\\"\\n                            step=\\\"60\\\">\\n                    </wj-input-time>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                &nbsp;\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                <label class=\\\"col-sm-12 control-label\\\"> {{'stock.maingroupitemgroupexplanation' | translate}} </label>\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                <label class=\\\"col-sm-4 control-label\\\"> {{'article.maingroup' | translate}}: </label>\\n                <div class=\\\"col-sm-8\\\">\\n                    <ca-multiselect model=\\\"vm.newInventoryRequestData.mainGroups\\\" choices=\\\"vm.mainGroups\\\" order-by=\\\"'mainGroupDescription'\\\" placeholder=\\\"'article.addMaingroup'\\\" item-renderer=\\\"['mainGroupCode','mainGroupDescription']\\\"/>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                <label class=\\\"col-sm-4 control-label\\\"> {{'article.brand' | translate}}: </label>\\n                <div class=\\\"col-sm-8\\\">\\n                        <ca-multiselect model=\\\"vm.newInventoryRequestData.brands\\\" choices=\\\"vm.brands\\\" order-by=\\\"'brandDescription'\\\" placeholder=\\\"'article.addBrand'\\\" item-renderer=\\\"['brandCode','brandDescription']\\\"/>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"form-group row\\\">\\n                &nbsp;\\n            </div>\\n        </div>\\n\\n        <div class=\\\"pull-right\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.save()\\\">{{'common.save' | translate}}</button>\\n        </div>\\n\\n        <div>\\n            &nbsp;\\n        </div>\\n        <div>\\n            &nbsp;\\n        </div>\\n\\n    </div>\\n</div>\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\"> {{'common.print' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div class=\\\"col-lg-12 control-label\\\">\\n            <label>\\n                {{ 'inventory.print.confirmPrintInventoryReport' | translate }}\\n            </label>\\n\\n            <ca-form-group-row label=\\\"'common.language'\\\">\\n                <button class=\\\"btn\\\" ng-click=\\\"vm.setLanguage('se')\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'se', 'btn-default': vm.printLanguage !== 'se' }\\\">Svenska</button>\\n                <button class=\\\"btn\\\" ng-click=\\\"vm.setLanguage('en')\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'en', 'btn-default': vm.printLanguage !== 'en' }\\\">English</button>\\n            </ca-form-group-row>\\n\\n            <ca-form-group-row label=\\\"'common.printFormat'\\\">\\n                <button class=\\\"btn\\\" ng-click=\\\"vm.setPrintFormat('pdf')\\\" ng-class=\\\"{ 'btn-primary': vm.printFormat == 'pdf', 'btn-default': vm.printFormat !== 'pdf' }\\\">PDF</button>\\n                <button class=\\\"btn\\\" ng-click=\\\"vm.setPrintFormat('csv')\\\" ng-class=\\\"{ 'btn-primary': vm.printFormat == 'csv', 'btn-default': vm.printFormat !== 'csv' }\\\">CSV</button>\\n                <!-- <button class=\\\"btn\\\" ng-click=\\\"vm.setPrintFormat('xls')\\\" ng-class=\\\"{ 'btn-primary': vm.printFormat == 'xls', 'btn-default': vm.printFormat !== 'xls' }\\\">XLS</button> -->\\n            </ca-form-group-row>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.no' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.yes' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\"> {{'common.confirm' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div class=\\\"col-lg-6\\\">\\n            <label>{ 'common.language' | translate }:</label>\\n            <button class=\\\"btn\\\" ng-click=\\\"vm.setLanguage('se')\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'se', 'btn-default': vm.printLanguage !== 'se' }\\\">Svenska</button>\\n            <button class=\\\"btn\\\" ng-click=\\\"vm.setLanguage('en')\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'en', 'btn-default': vm.printLanguage !== 'en' }\\\">English</button>\\n        </div>\\n        <div class=\\\"col-lg-6\\\">\\n            <label>Vikt-format:</label>\\n            <button class=\\\"btn\\\" ng-click=\\\"vm.setWeightSetting('g')\\\" ng-class=\\\"{ 'btn-primary': vm.weightSetting == 'g', 'btn-default': vm.weightSetting !== 'g' }\\\">Gram</button>\\n            <button class=\\\"btn\\\" ng-click=\\\"vm.setWeightSetting('kg')\\\" ng-class=\\\"{ 'btn-primary': vm.weightSetting == 'kg', 'btn-default': vm.weightSetting !== 'kg' }\\\">Kilogram</button>\\n        </div>\\n        <div>&nbsp;</div>\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            <!-- <div ng-bind-html=\\\"vm.message\\\">{{ vm.message }}</div> -->\\n            {{ 'customerinvoice.confirmFinalizeInvoice' | translate }}\\n        </label>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.no' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.yes' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\" ng-bind-html=\\\"vm.message\\\">{{ vm.message }}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div class=\\\"col-lg-12 control-label\\\">\\n            <ca-form-group-row label=\\\"'common.language'\\\">\\n                <button class=\\\"btn\\\" ng-click=\\\"vm.setLanguage('se')\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'se', 'btn-default': vm.printLanguage !== 'se' }\\\">Svenska</button>\\n                <button class=\\\"btn\\\" ng-click=\\\"vm.setLanguage('en')\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'en', 'btn-default': vm.printLanguage !== 'en' }\\\">English</button>\\n            </ca-form-group-row>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.no' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.yes' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\"> {{'common.confirm' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div class=\\\"col-lg-12 control-label\\\">\\n            <label>\\n                <!-- <div ng-bind-html=\\\"vm.message\\\">{{ vm.message }}</div> -->\\n                {{ 'order.print.confirmPrintPickingList' | translate }}\\n            </label>\\n\\n            <ca-form-group-row label=\\\"'common.language'\\\">\\n                <button class=\\\"btn\\\" ng-click=\\\"vm.setLanguage('se')\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'se', 'btn-default': vm.printLanguage !== 'se' }\\\">Svenska</button>\\n                <button class=\\\"btn\\\" ng-click=\\\"vm.setLanguage('en')\\\" ng-class=\\\"{ 'btn-primary': vm.printLanguage == 'en', 'btn-default': vm.printLanguage !== 'en' }\\\">English</button>\\n            </ca-form-group-row>\\n\\n            <ca-form-group-row label=\\\"'stock.print.includeStorageItems'\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeStorageLocation\\\" />\\n                    <i></i>\\n                </label>\\n            </ca-form-group-row>\\n            <ca-form-group-row label=\\\"'stock.print.includeIsPhotographed'\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeIsPhotographed\\\" />\\n                    <i></i>\\n                </label>\\n            </ca-form-group-row>\\n\\n            <ca-form-group-row label=\\\"'stock.print.includePrices'\\\">\\n                <label class=\\\"i-checks m-t-xs\\\">\\n                    <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includePrices\\\" />\\n                    <i></i>\\n                </label>\\n            </ca-form-group-row>\\n\\n            <ca-form-group-row label=\\\"'stock.groupinglevel'\\\">\\n                <div class=\\\"col-sm-4\\\" style=\\\"padding-left: 0px;\\\">\\n                    <ca-singleselect model=\\\"vm.selectedGrouping\\\" choices=\\\"vm.groupings\\\" order-by=\\\"'id'\\\" item-renderer=\\\"'description'\\\" mandatory=\\\"true\\\"/>\\n                </div>\\n            </ca-form-group-row>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.no' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.yes' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\"> {{'common.filter' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <!-- <div style=\\\"text-align: right; margin-bottom: 10px;\\\">\\n        <button ng-click=\\\"vm.clearFilter()\\\" class=\\\"btn btn-sm\\\" style=\\\"margin-right: 10px;\\\">{{ 'purchaseorderanalysis.resetfilter' | translate }}</button>\\n    </div> -->\\n\\n        <table style=\\\"width: 100%;\\\">\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{'purchaseorderanalysis.supplier' | translate}}:</td>\\n                <td>\\n                    <ui-select ng-model=\\\"vm.selectedSupplier\\\" theme=\\\"bootstrap\\\" class=\\\"fixedMinWidth enterAsTab\\\" enter-as-tab>\\n                        <ui-select-match placeholder=\\\"\\\">{{$select.selected.companyName}}</ui-select-match>\\n                        <ui-select-choices repeat=\\\"supplier in vm.suppliers | filter:{'companyName': $select.search}\\\">\\n                            <span>{{ supplier.companyName }}</span>\\n                        </ui-select-choices>\\n                    </ui-select>                \\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{'common.resultsPerPage' | translate}}:</td>\\n                <td>\\n                    <!-- <ca-singleselect model=\\\"vm.selectedNumberOfResultsPerPage\\\" choices=\\\"vm.numberOfResultsPerPage\\\" /> -->\\n                    <ui-select ng-model=\\\"vm.selectedNumberOfResultsPerPage\\\" theme=\\\"bootstrap\\\" class=\\\"fixedMinWidth enterAsTab\\\" enter-as-tab>\\n                        <ui-select-match placeholder=\\\"\\\">{{$select.selected}}</ui-select-match>\\n                        <ui-select-choices repeat=\\\"num in vm.numberOfResultsPerPage\\\">\\n                            <span>{{ num }}</span>\\n                        </ui-select-choices>\\n                    </ui-select>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ 'article.articlecollection' | translate }}:</td>\\n                <td>\\n                    <ui-select ng-model=\\\"vm.selectedArticleCollection\\\" ng-disabled=\\\"vm.showAllCollections\\\" theme=\\\"bootstrap\\\" class=\\\"fixedMinWidth enterAsTab\\\" enter-as-tab>\\n                        <ui-select-match placeholder=\\\"\\\">{{ $select.selected.collectionCode + ': ' + $select.selected.collectionDescription }}</ui-select-match>\\n                        <ui-select-choices repeat=\\\"articleCollection in vm.articleCollections | filter:{'collectionCode': $select.search}\\\">\\n                            <span>{{ articleCollection.collectionCode + ': ' + articleCollection.collectionDescription }}</span>\\n                        </ui-select-choices>\\n                    </ui-select>                \\n                    <div>\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showAllCollections\\\" />\\n                            <i></i>\\n                        </label>\\n                        {{ 'stock.showall' | translate }}\\n                    </div>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ 'article.maingroup' | translate }}:</td>\\n                <td>\\n                    <ui-select ng-model=\\\"vm.selectedMainGroup\\\" theme=\\\"bootstrap\\\" class=\\\"fixedMinWidth enterAsTab\\\" enter-as-tab>\\n                        <ui-select-match placeholder=\\\"\\\">{{ $select.selected.mainGroupCode }} {{ $select.selected.mainGroupDescription }}</ui-select-match>\\n                        <ui-select-choices repeat=\\\"mainGroup in vm.mainGroups\\\">\\n                            <span>{{ mainGroup.mainGroupCode }} {{ mainGroup.mainGroupDescription }}</span>\\n                        </ui-select-choices>\\n                    </ui-select>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ vm.showWeeks ? 'purchaseorderanalysis.weeksLeftInStock' : 'purchaseorderanalysis.monthsLeftInStock' | translate }}</td>\\n                <td>\\n                    <ui-select ng-model=\\\"vm.selectedWeekLimit\\\" theme=\\\"bootstrap\\\" class=\\\"fixedMinWidth enterAsTab\\\" enter-as-tab>\\n                        <ui-select-match placeholder=\\\"\\\">{{ vm.showWeeks ? $select.selected : $select.selected / 4 }} {{ vm.showWeeks ? 'purchaseorderanalysis.weeksLeft' : 'purchaseorderanalysis.monthsLeft' | translate }}</ui-select-match>\\n                        <ui-select-choices repeat=\\\"week in vm.weekLimit\\\">\\n                            <span>{{ vm.showWeeks ? week : week / 4 }} {{ vm.showWeeks ? 'purchaseorderanalysis.weeksLeft' : 'purchaseorderanalysis.monthsLeft' | translate }}</span>\\n                        </ui-select-choices>\\n                    </ui-select>\\n                    <div>\\n                        <label class=\\\"i-checks m-t-xs\\\">\\n                            <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.keepProductTogether\\\" ng-change=\\\"vm.filterAnalysisRows()\\\" />\\n                            <i></i>\\n                        </label>\\n                        {{ 'purchaseorderanalysis.keepProductTogether' | translate }}\\n                    </div>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td colspan=\\\"3\\\">&nbsp;</td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ 'purchaseorderanalysis.showWeeks' | translate }}</td>\\n                <td>\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showWeeks\\\" />\\n                        <i></i>\\n                    </label>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ 'purchaseorderanalysis.groupByProduct' | translate }}</td>\\n                <td>\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.showProduct\\\" />\\n                        <i></i>\\n                    </label>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ 'purchaseorderanalysis.showInactive' | translate }} {{ 'article.articles' | translate }}</td>\\n                <td>\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeInactive\\\" />\\n                        <i></i>\\n                    </label>\\n                </td>\\n            </tr>\\n        </table>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.filter' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\">{{'user.resetPasswordTitle' | translate}} <button class=\\\"btn btn-default pull-right\\\" ng-click=\\\"vm.closeModal()\\\"> X </button> </div>\\n    <div class=\\\"body bg-gray\\\">\\n        <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showPage === 0\\\">\\n            <form name=\\\"resetPasswordForm\\\">\\n            <div class=\\\"col-lg-12\\\">\\n                <span style=\\\"font-size:2em; float:left;\\\">1.</span>\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                 {{'user.resetPasswordInstruction' | translate}}\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                &nbsp;\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                <input type=\\\"text\\\" ng-model=\\\"vm.currentUser.tenantName\\\" class=\\\"form-control\\\" placeholder=\\\"{{'login.tenant' | translate}}\\\">\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                <input type=\\\"text\\\" ng-model=\\\"vm.usernameOrEmail\\\" class=\\\"form-control\\\" placeholder=\\\"{{'address.usernameOrEmail' | translate}}\\\" />\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                <button class=\\\"btn btn-default pull-right\\\" ng-disabled=\\\"vm.clickedResetPasswordButton === true\\\" ng-click=\\\"vm.resetPassword()\\\"> {{'user.resetPassword' | translate}} </button>\\n            </div>\\n            </form>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                &nbsp;\\n            </div>\\n        </div>\\n        <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showPage === 1\\\">\\n            <form name=\\\"resetPasswordConfirmForm\\\">\\n            <div class=\\\"col-lg-12\\\">\\n                <span style=\\\"font-size:2em; float:left;\\\">2.</span>\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                {{'user.resetPasswordConfirmInstruction' | translate}}\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                &nbsp;\\n            </div>\\n            \\n            <div class=\\\"col-lg-12\\\">\\n                <input type=\\\"text\\\" disabled ng-model=\\\"vm.currentUser.tenantName\\\" class=\\\"form-control\\\" placeholder=\\\"{{'login.tenant' | translate}}\\\">\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                <input type=\\\"text\\\" ng-model=\\\"vm.currentUser.securityCode\\\" class=\\\"form-control\\\" placeholder=\\\"{{'login.securityCode' | translate}}\\\">\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                <input type=\\\"text\\\" ng-model=\\\"vm.currentUser.newPassword\\\" class=\\\"form-control\\\" placeholder=\\\"{{'login.newPassword' | translate}}\\\">\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                <input type=\\\"text\\\" ng-model=\\\"vm.currentUser.confirmPassword\\\" class=\\\"form-control\\\" placeholder=\\\"{{'login.confirmPassword' | translate}}\\\">\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                <button class=\\\"btn btn-default pull-right\\\" ng-click=\\\"vm.confirmNewPassword()\\\"> {{'user.confirmNewPassword' | translate}} </button>\\n            </div>\\n            </form>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                &nbsp;\\n            </div>\\n        </div>\\n        <div class=\\\"col-lg-12\\\" ng-show=\\\"vm.showPage === 2\\\">\\n            <div class=\\\"col-lg-12\\\">\\n                <span style=\\\"font-size:1.5em;\\\">3.</span>\\n            </div>\\n            <div class=\\\"col-lg-12\\\">\\n                {{'user.resetPasswordFinalInstruction' | translate}}\\n            </div>\\n\\n            <div class=\\\"col-lg-12\\\">\\n                &nbsp;\\n            </div>\\n        </div>\\n        <div class=\\\"form-group row\\\">\\n            &nbsp;\\n        </div>\\n    </div>\\n    <div class=\\\"form-group row\\\">\\n        &nbsp;\\n    </div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\"> {{'common.filter' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <!-- <div style=\\\"text-align: right; margin-bottom: 10px;\\\">\\n        <button ng-click=\\\"vm.clearFilter()\\\" class=\\\"btn btn-sm\\\" style=\\\"margin-right: 10px;\\\">{{ 'purchaseorderanalysis.resetfilter' | translate }}</button>\\n    </div> -->\\n\\n        <table style=\\\"width: 100%;\\\">\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{'salestotal.periodStart' | translate}}:</td>\\n                <td>\\n                    <wj-input-date class=\\\"col-sm-12\\\" id=\\\"wjStartDate\\\"\\n                        value=\\\"vm.periodStartDate\\\"\\n                        format=\\\"yyyy-MM-dd\\\">\\n                    </wj-input-date>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{'salestotal.periodEnd' | translate}}:</td>\\n                <td>\\n                    <wj-input-date class=\\\"col-sm-12\\\" id=\\\"wjEndDate\\\"\\n                        value=\\\"vm.periodEndDate\\\"\\n                        format=\\\"yyyy-MM-dd\\\">\\n                    </wj-input-date>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ 'salestotal.store' | translate }}:</td>\\n                <td>\\n                    <ca-singleselect model=\\\"vm.selectedLocation\\\" choices=\\\"vm.locations\\\" item-renderer=\\\"['locationName']\\\"></ca-singleselect>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ 'salestotal.showApproved' | translate }}:</td>\\n                <td>\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeApproved\\\" />\\n                        <i></i>\\n                    </label>\\n                </td>\\n            </tr>\\n            <tr>\\n                <td style=\\\"vertical-align: top;\\\">{{ 'salestotal.showForProcessing' | translate }}:</td>\\n                <td>\\n                    <label class=\\\"i-checks m-t-xs\\\">\\n                        <input type=\\\"checkbox\\\" namef=\\\"a\\\" ng-model=\\\"vm.includeForProcessing\\\" />\\n                        <i></i>\\n                    </label>\\n                </td>\\n            </tr>\\n        </table>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.filter' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\"> {{'common.confirm' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            <div ng-bind-html=\\\"vm.message\\\" style=\\\"text-align: center;max-height: 300px; overflow: auto;\\\">{{ vm.message }}</div>\\n        </label>\\n\\n        <div style=\\\"margin-left:43%; width:14%\\\" ng-if=\\\"vm.fieldType === 'number'\\\">\\n            <input type=\\\"number\\\"\\n                step=\\\"1\\\"\\n                min=\\\"{{vm.minValue}}\\\"\\n                max=\\\"{{vm.maxValue}}\\\"\\n                class=\\\"form-control\\\"\\n                ng-model=\\\"vm.numberValue\\\">\\n        </div>\\n        <div style=\\\"width:100px\\\" ng-if=\\\"vm.fieldType === 'date'\\\">\\n            <wj-input-date\\n                value=\\\"vm.dateValue\\\"\\n                min=\\\"{{vm.minValue}}\\\"\\n                max=\\\"{{vm.maxValue}}\\\"\\n                format=\\\"yyyy-MM-dd\\\">\\n            </wj-input-date>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.no' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\" ng-click=\\\"vm.closeModal(true)\\\">{{'common.yes' | translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\"> {{'common.confirm' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n        <label class=\\\"col-lg-12 control-label\\\">\\n            {{ vm.message }}\\n        </label>\\n        <div>\\n            <ca-address address=\\\"vm.address\\\" is-editing=\\\"true\\\" show-tools=\\\"false\\\"></ca-address>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\" ng-click=\\\"vm.save()\\\">{{'common.save'| translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"<div class=\\\"form-box\\\">\\n    <div class=\\\"header\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\"> {{'order.editnotes' | translate}}</div>\\n    <div class=\\\"body bg-gray\\\">\\n            <div class=\\\"col-lg-12\\\" style=\\\"max-width:1178px;border: 1px solid #eaeff0; margin: 20px; padding: 20px\\\">\\n                    <label style=\\\"font-weight:bold; vertical-align: text-top; padding-right:10px;\\\"> {{'order.note'| translate}}: </label>\\n                    <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                        type=\\\"text\\\"\\n                        placeholder=\\\"{{'order.note' | translate}}\\\"\\n                        ng-model=\\\"vm.note\\\"/>\\n                    <label style=\\\"font-weight:bold; vertical-align: text-top; padding-right:10px;\\\">{{'order.externalordernumber' | translate}}:</label>\\n                    <input class=\\\"editable-input form-control ng-pristine ng-valid ng-touched\\\"\\n                        type=\\\"text\\\"\\n                        placeholder=\\\"{{'order.externalordernumber' | translate}}\\\"\\n                        ng-model=\\\"vm.orderNumberExternal\\\"/>\\n                </div>\\n    </div>\\n\\n    <div class=\\\"pull-right\\\">\\n        <div class=\\\"col-lg-12\\\">\\n            <button class=\\\"btn btn-default\\\" ng-click=\\\"vm.closeModal(false)\\\">{{'common.cancel' | translate}}</button>\\n            <button class=\\\"btn btn-primary\\\" ng-class=\\\"{ 'ca-warning-dialog': vm.level === 'warning' }\\\" ng-click=\\\"vm.save()\\\">{{'common.save'| translate}}</button>\\n        </div>\\n    </div>\\n    <div style=\\\"clear:both;\\\">&nbsp;</div>\\n</div>\\n\";\n// Exports\nmodule.exports = code;","// extracted by mini-css-extract-plugin\nexport {};","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 82682,\n\t\"./ar-sa.js\": 82682,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","var map = {\n\t\"./app/app.js\": 1842,\n\t\"./app/bridge/components.js\": 98350,\n\t\"./app/core/config/config.js\": 28356,\n\t\"./app/core/core.js\": 87530,\n\t\"./app/core/init/angularData.js\": 38614,\n\t\"./app/core/init/init.js\": 14348,\n\t\"./app/core/values/values.js\": 20756,\n\t\"./app/core/versionService.js\": 35370,\n\t\"./app/login/auth.api.js\": 65559,\n\t\"./app/login/login.module.js\": 24594,\n\t\"./app/main/analysis/analysis.api.js\": 11880,\n\t\"./app/main/analysis/analysis.module.js\": 21074,\n\t\"./app/main/analysis/pdfTemplate/pdfTemplate.js\": 87941,\n\t\"./app/main/analysis/reports/reports.js\": 29297,\n\t\"./app/main/analysis/userReports/userReport.component.js\": 16335,\n\t\"./app/main/analysis/userReports/userReports.js\": 48705,\n\t\"./app/main/base/accounts/account/account.js\": 63749,\n\t\"./app/main/base/accounts/accounts.api.js\": 82006,\n\t\"./app/main/base/accounts/accounts.module.js\": 81720,\n\t\"./app/main/base/articlecollections/articlecollection/articlecollection.js\": 65862,\n\t\"./app/main/base/articlecollections/articlecollections.api.js\": 52028,\n\t\"./app/main/base/articlecollections/articlecollections.module.js\": 55326,\n\t\"./app/main/base/articletypes/articletype/articletype.js\": 14882,\n\t\"./app/main/base/articletypes/articletypes.api.js\": 79364,\n\t\"./app/main/base/articletypes/articletypes.module.js\": 82134,\n\t\"./app/main/base/base.module.js\": 31804,\n\t\"./app/main/base/countries/countries.api.js\": 99580,\n\t\"./app/main/base/countries/countries.module.js\": 51582,\n\t\"./app/main/base/countries/country/country.js\": 57059,\n\t\"./app/main/base/currencies/currencies.api.js\": 61980,\n\t\"./app/main/base/currencies/currencies.module.js\": 89854,\n\t\"./app/main/base/currencies/currency/currency.js\": 37718,\n\t\"./app/main/base/customergroups/customergroup/customergroup.js\": 27741,\n\t\"./app/main/base/customergroups/customergroups.api.js\": 83926,\n\t\"./app/main/base/customergroups/customergroups.module.js\": 26840,\n\t\"./app/main/base/dashboard/dashboard.api.js\": 33468,\n\t\"./app/main/base/dashboard/dashboard.module.js\": 41950,\n\t\"./app/main/base/deliveryplanningtemplates/deliveryplanningtemplate/deliveryplanningtemplate.js\": 39461,\n\t\"./app/main/base/deliveryplanningtemplates/deliveryplanningtemplates.api.js\": 88952,\n\t\"./app/main/base/deliveryplanningtemplates/deliveryplanningtemplates.module.js\": 46850,\n\t\"./app/main/base/deliveryterms/deliveryterm/deliveryterm.js\": 90508,\n\t\"./app/main/base/deliveryterms/deliveryterms.api.js\": 74148,\n\t\"./app/main/base/deliveryterms/deliveryterms.module.js\": 98518,\n\t\"./app/main/base/invoicetypes/invoicetype/invoicetype.js\": 20961,\n\t\"./app/main/base/invoicetypes/invoicetypes.api.js\": 82342,\n\t\"./app/main/base/invoicetypes/invoicetypes.module.js\": 10472,\n\t\"./app/main/base/ordercollections/ordercollection/ordercollection.js\": 99148,\n\t\"./app/main/base/ordercollections/ordercollections.api.js\": 78316,\n\t\"./app/main/base/ordercollections/ordercollections.module.js\": 79310,\n\t\"./app/main/base/ordertypes/ordertype/ordertype.js\": 91240,\n\t\"./app/main/base/ordertypes/ordertypes.api.js\": 17752,\n\t\"./app/main/base/ordertypes/ordertypes.module.js\": 15650,\n\t\"./app/main/base/paymentterms/paymentterm/paymentterm.js\": 8400,\n\t\"./app/main/base/paymentterms/paymentterms.api.js\": 31468,\n\t\"./app/main/base/paymentterms/paymentterms.module.js\": 61518,\n\t\"./app/main/base/paymenttypes/paymenttype/paymenttype.js\": 7778,\n\t\"./app/main/base/paymenttypes/paymenttypes.api.js\": 70724,\n\t\"./app/main/base/paymenttypes/paymenttypes.module.js\": 60310,\n\t\"./app/main/base/returnreasons/returnreason/returnreason.js\": 36096,\n\t\"./app/main/base/returnreasons/returnreasons.api.js\": 5988,\n\t\"./app/main/base/returnreasons/returnreasons.module.js\": 42614,\n\t\"./app/main/base/shippingmethods/shippingmethod/shippingmethod.js\": 88325,\n\t\"./app/main/base/shippingmethods/shippingmethods.api.js\": 97268,\n\t\"./app/main/base/shippingmethods/shippingmethods.module.js\": 66214,\n\t\"./app/main/base/vats/vat/vat.js\": 98177,\n\t\"./app/main/base/vats/vats.api.js\": 43302,\n\t\"./app/main/base/vats/vats.module.js\": 21896,\n\t\"./app/main/budget/budget.module.js\": 20116,\n\t\"./app/main/budget/budgets.api.js\": 85557,\n\t\"./app/main/budget/budgets/budgets.js\": 38590,\n\t\"./app/main/budget/budgets/components/budgetImport.component.js\": 61396,\n\t\"./app/main/contacts/bulkoperation/bulkoperation.js\": 11866,\n\t\"./app/main/contacts/companies/companies.api.js\": 52748,\n\t\"./app/main/contacts/companies/companies.module.js\": 46542,\n\t\"./app/main/contacts/companies/company/company.js\": 83854,\n\t\"./app/main/contacts/components/addressform.component.js\": 38357,\n\t\"./app/main/contacts/components/contactinfoform.component.js\": 36153,\n\t\"./app/main/contacts/components/newaddressform.component.js\": 49941,\n\t\"./app/main/contacts/components/newcontactinfoform.component.js\": 49273,\n\t\"./app/main/contacts/contacts.js\": 15456,\n\t\"./app/main/contacts/locations/location/location.js\": 44133,\n\t\"./app/main/contacts/locations/locations.api.js\": 72528,\n\t\"./app/main/contacts/locations/locations.module.js\": 49962,\n\t\"./app/main/contacts/roles/role/role.js\": 84598,\n\t\"./app/main/contacts/roles/roles.api.js\": 82480,\n\t\"./app/main/contacts/roles/roles.module.js\": 60906,\n\t\"./app/main/contacts/users/user/user.js\": 26929,\n\t\"./app/main/contacts/users/users.api.js\": 19672,\n\t\"./app/main/contacts/users/users.module.js\": 84194,\n\t\"./app/main/customerinvoice/customerinvoice.api.js\": 41638,\n\t\"./app/main/customerinvoice/customerinvoice.module.js\": 28904,\n\t\"./app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicecontent.cmp.js\": 82788,\n\t\"./app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicerows.cmp.js\": 58036,\n\t\"./app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicesearch.cmp.js\": 81105,\n\t\"./app/main/customerinvoice/customerinvoicesearch/customerinvoicerowsearch.js\": 64778,\n\t\"./app/main/customerinvoice/customerinvoicesearch/customerinvoicesearch.js\": 85988,\n\t\"./app/main/customerorder/customerorder.api.js\": 39906,\n\t\"./app/main/customerorder/customerorder.module.js\": 16076,\n\t\"./app/main/customerorder/customerordersearch/customerordercontent/customerordercontent.cmp.js\": 81966,\n\t\"./app/main/customerorder/customerordersearch/customerordercontent/customerorderdeliveries.cmp.js\": 35587,\n\t\"./app/main/customerorder/customerordersearch/customerordercontent/customerorderpayments.cmp..js\": 85468,\n\t\"./app/main/customerorder/customerordersearch/customerordercontent/customerorderrefunds.cmp.js\": 12720,\n\t\"./app/main/customerorder/customerordersearch/customerordercontent/customerorderrows.cmp.js\": 61426,\n\t\"./app/main/customerorder/customerordersearch/customerordercontent/customerordersearch.cmp.js\": 74643,\n\t\"./app/main/customerorder/customerordersearch/customerordersearch.js\": 53243,\n\t\"./app/main/discountManagement/component/discountMultiselect.component.js\": 54757,\n\t\"./app/main/discountManagement/discountManagement.module.js\": 50350,\n\t\"./app/main/discountManagement/discounts/discount/discount.js\": 71504,\n\t\"./app/main/discountManagement/discounts/discounts.api.js\": 19605,\n\t\"./app/main/discountManagement/discounts/discounts.module.js\": 74621,\n\t\"./app/main/economy/economy.api.js\": 43174,\n\t\"./app/main/economy/economy.module.js\": 92040,\n\t\"./app/main/economy/siefileexport/siefileexport.js\": 45243,\n\t\"./app/main/main.js\": 21378,\n\t\"./app/main/order/order.module.js\": 49464,\n\t\"./app/main/order/orderDialogs/orderRowCommentDialog/orderRowCommentDialog.js\": 32495,\n\t\"./app/main/order/orderService.js\": 70321,\n\t\"./app/main/order/orderarticles.api.js\": 87817,\n\t\"./app/main/order/orderdelivery/components/barcodescanninginput.component.js\": 78950,\n\t\"./app/main/order/orderdelivery/components/orderarticles.component.js\": 71886,\n\t\"./app/main/order/orderdelivery/components/ordermetadata.component.js\": 25736,\n\t\"./app/main/order/orderdelivery/components/orderrowsdelivery.component.js\": 90088,\n\t\"./app/main/order/orderdelivery/components/orderrowsedit.component.js\": 42004,\n\t\"./app/main/order/orderdelivery/components/orderscannernavigation.component.js\": 26735,\n\t\"./app/main/order/orderdelivery/components/ordertotals.component.js\": 15966,\n\t\"./app/main/order/orderdelivery/orderdelivery.js\": 93819,\n\t\"./app/main/order/orderdeliveryplanning/editDeliveryPlanningDialog/editDeliveryPlanningDialog.js\": 85237,\n\t\"./app/main/order/orderdeliveryplanning/orderdeliveryplanning.js\": 6599,\n\t\"./app/main/order/orders.api.js\": 86777,\n\t\"./app/main/order/ordersearch/components/orderarticledeliveries.component.js\": 78665,\n\t\"./app/main/order/ordersearch/components/orderarticlerows.component.js\": 18104,\n\t\"./app/main/order/ordersearch/components/ordercontent.component.js\": 6858,\n\t\"./app/main/order/ordersearch/components/ordersearchresult.component.js\": 76260,\n\t\"./app/main/order/ordersearch/ordersearch.js\": 72055,\n\t\"./app/main/order/purchaseorder/components/articlessummarygrid.component.js\": 84855,\n\t\"./app/main/order/purchaseorder/components/opentobuygrid.component.js\": 70845,\n\t\"./app/main/order/purchaseorder/components/purchaseorderdistributiongrid.component.js\": 32393,\n\t\"./app/main/order/purchaseorder/components/purchaseorderextraoptions.component.js\": 42471,\n\t\"./app/main/order/purchaseorder/components/singlearticlesummarygrid.component.js\": 1624,\n\t\"./app/main/order/purchaseorder/purchaseorder.js\": 28843,\n\t\"./app/main/order/purchaseorderanalysis.api.js\": 70805,\n\t\"./app/main/order/purchaseorderanalysis/purchaseorderanalysis.js\": 73675,\n\t\"./app/main/order/purchaseordersearch/purchaseordersearch.js\": 55591,\n\t\"./app/main/order/reports/intrastatReports.js\": 40523,\n\t\"./app/main/order/reports/rms2Reports.api.js\": 72329,\n\t\"./app/main/order/reports/transitReports.js\": 34240,\n\t\"./app/main/order/rms2Orders.api.js\": 29253,\n\t\"./app/main/product/articleimport/articleimport.js\": 90176,\n\t\"./app/main/product/articles/article/article.js\": 38516,\n\t\"./app/main/product/articles/article/components/articlevariantsgrid.component.js\": 37166,\n\t\"./app/main/product/articles/article/components/articlevariantsgridcell.component.js\": 66690,\n\t\"./app/main/product/articles/articleAddNewArticleVariantDialog/articleAddNewArticleVariantDialog.js\": 55616,\n\t\"./app/main/product/articles/articleChangeItemGroupDialog/articleChangeItemGroupDialog.js\": 68654,\n\t\"./app/main/product/articles/articleChangeVariantDetailDialog/articleChangeVariantDetailDialog.js\": 23958,\n\t\"./app/main/product/articles/articleLabelsPrintDialog/articleLabelsPrintDialog.js\": 82226,\n\t\"./app/main/product/articles/articleNewIntrastatDialog/articleNewIntrastatDialog.js\": 87740,\n\t\"./app/main/product/articles/articles.js\": 56416,\n\t\"./app/main/product/articles/pricelistmanagement/pricelistmanagement.js\": 72776,\n\t\"./app/main/product/articles/pricelistmgmt.js\": 62967,\n\t\"./app/main/product/brands/brand/brand.js\": 6501,\n\t\"./app/main/product/brands/brands.api.js\": 6064,\n\t\"./app/main/product/brands/brands.module.js\": 14538,\n\t\"./app/main/product/businessareas/businessarea/businessarea.js\": 35835,\n\t\"./app/main/product/businessareas/businessareas.api.js\": 23346,\n\t\"./app/main/product/businessareas/businessareas.module.js\": 74204,\n\t\"./app/main/product/components/articlesearchmultiselect.component.js\": 36728,\n\t\"./app/main/product/components/itemGroupInline.component.js\": 65722,\n\t\"./app/main/product/departments/department/department.js\": 38810,\n\t\"./app/main/product/departments/departments.api.js\": 86878,\n\t\"./app/main/product/departments/departments.module.js\": 71472,\n\t\"./app/main/product/importeditor/importeditor.js\": 45034,\n\t\"./app/main/product/importfileslist/importfileslist.js\": 42012,\n\t\"./app/main/product/intrastats/intrastat.api.js\": 93747,\n\t\"./app/main/product/intrastats/intrastat/intrastat.js\": 92140,\n\t\"./app/main/product/intrastats/intrastats.module.js\": 63928,\n\t\"./app/main/product/maingroups/maingroup/maingroup.js\": 16362,\n\t\"./app/main/product/maingroups/maingroups.api.js\": 33926,\n\t\"./app/main/product/maingroups/maingroups.module.js\": 12296,\n\t\"./app/main/product/pricelisteditor/components/articleselection.component.js\": 14196,\n\t\"./app/main/product/pricelisteditor/components/pricelistsgrid.component.js\": 58794,\n\t\"./app/main/product/pricelisteditor/components/pricerangeinput.component.js\": 41566,\n\t\"./app/main/product/pricelisteditor/components/volumediscountrule.component.js\": 98375,\n\t\"./app/main/product/pricelisteditor/pricelisteditor.js\": 92740,\n\t\"./app/main/product/pricelists/pricelist/pricelist.js\": 20537,\n\t\"./app/main/product/pricelists/pricelists.api.js\": 61716,\n\t\"./app/main/product/pricelists/pricelists.module.js\": 9222,\n\t\"./app/main/product/product.module.js\": 54960,\n\t\"./app/main/product/productService.js\": 31033,\n\t\"./app/main/product/productimport/components/filelist.component.js\": 10308,\n\t\"./app/main/product/productimport/components/mapordate.component.js\": 68213,\n\t\"./app/main/product/productimport/components/maporselect.component.js\": 71049,\n\t\"./app/main/product/productimport/productimport.js\": 27656,\n\t\"./app/main/product/productimporteditor/components/importeditorsummary.component.js\": 42333,\n\t\"./app/main/product/productimporteditor/components/importeditortextdropdown.component.js\": 93465,\n\t\"./app/main/product/productimporteditor/components/importeditorvalidationerrors.component.js\": 41955,\n\t\"./app/main/product/productimporteditor/components/importrowsgrid.component.js\": 68067,\n\t\"./app/main/product/productimporteditor/productimporteditor.js\": 74352,\n\t\"./app/main/product/products.api.js\": 50385,\n\t\"./app/main/product/psychologicalprices/psychologicalprice/psychologicalprice.js\": 11864,\n\t\"./app/main/product/psychologicalprices/psychologicalprices.api.js\": 55226,\n\t\"./app/main/product/psychologicalprices/psychologicalprices.module.js\": 98900,\n\t\"./app/main/product/rms2Products.api.js\": 23309,\n\t\"./app/main/product/saleschannels/saleschannel/saleschannel.js\": 22315,\n\t\"./app/main/product/saleschannels/saleschannels.api.js\": 53750,\n\t\"./app/main/product/saleschannels/saleschannels.module.js\": 16920,\n\t\"./app/main/product/subcategories/subcategories.api.js\": 52574,\n\t\"./app/main/product/subcategories/subcategories.module.js\": 69104,\n\t\"./app/main/product/subcategories/subcategory/subcategory.js\": 61577,\n\t\"./app/main/product/variantgroups.api.js\": 57504,\n\t\"./app/main/product/variantgroups/variantgroup/variantgroup.js\": 92900,\n\t\"./app/main/product/variantgroups/variantgroups.js\": 21676,\n\t\"./app/main/product/variants.api.js\": 19291,\n\t\"./app/main/product/variants/variant/variant.js\": 27489,\n\t\"./app/main/product/variants/variants.js\": 66130,\n\t\"./app/main/product/volumediscounts/volumediscount/volumediscount.js\": 90710,\n\t\"./app/main/product/volumediscounts/volumediscounts.api.js\": 38370,\n\t\"./app/main/product/volumediscounts/volumediscounts.module.js\": 55660,\n\t\"./app/main/resellerorder/genericcomponents/readonlyorderheader.cmp.js\": 74101,\n\t\"./app/main/resellerorder/genericcomponents/resellerorderbreadcrumbs.cmp.js\": 46664,\n\t\"./app/main/resellerorder/genericcomponents/resellerordersearch.cmp.js\": 65820,\n\t\"./app/main/resellerorder/genericcomponents/resellerreturnorderbreadcrumbs.cmp.js\": 19918,\n\t\"./app/main/resellerorder/genericcomponents/scannernavigation.cmp.js\": 65810,\n\t\"./app/main/resellerorder/resellerorder.module.js\": 28172,\n\t\"./app/main/resellerorder/resellerordercreate/components/createorderheader.cmp.js\": 41951,\n\t\"./app/main/resellerorder/resellerordercreate/resellerordercreate.js\": 37329,\n\t\"./app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createDeliveryDate.cmp.js\": 42084,\n\t\"./app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createVariantDeliveryDateDialog.js\": 24613,\n\t\"./app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/createVariantFulfillmentDialog.js\": 1578,\n\t\"./app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/createfulfillmentvariants.cmp.js\": 60025,\n\t\"./app/main/resellerorder/resellerorderfulfillment/createfulfillment/createfulfillment.js\": 11640,\n\t\"./app/main/resellerorder/resellerorderfulfillment/manageorders/manageorders.js\": 71090,\n\t\"./app/main/resellerorder/resellerorderfulfillment/manageproducts/manageproducts.js\": 32672,\n\t\"./app/main/resellerorder/resellerordermodify/components/addlineitems.cmp.js\": 95069,\n\t\"./app/main/resellerorder/resellerordermodify/components/articlelist_amount.component.js\": 63710,\n\t\"./app/main/resellerorder/resellerordermodify/components/articlelist_overview.component.js\": 87253,\n\t\"./app/main/resellerorder/resellerordermodify/components/articlelist_quantity.component.js\": 18931,\n\t\"./app/main/resellerorder/resellerordermodify/components/resellerorderproductsearchmultiselect.component.js\": 517,\n\t\"./app/main/resellerorder/resellerordermodify/resellerordermodify.js\": 4581,\n\t\"./app/main/resellerorder/resellerordersearch/resellerordersearch.js\": 21317,\n\t\"./app/main/resellerorder/resellerorderservice.api.js\": 33771,\n\t\"./app/main/resellerorder/resellerorderview/components/resellerordercontent.cmp.js\": 90350,\n\t\"./app/main/resellerorder/resellerorderview/components/resellerorderrows.cmp.js\": 46290,\n\t\"./app/main/resellerorder/resellerorderview/resellerorderview.js\": 91105,\n\t\"./app/main/resellerorder/resellerreturnordercreate/components/createreturnorderheader.cmp.js\": 28847,\n\t\"./app/main/resellerorder/resellerreturnordercreate/resellerreturnordercreate.js\": 84789,\n\t\"./app/main/resellerorder/resellerreturnordermodify/components/addlineitems.cmp.js\": 53707,\n\t\"./app/main/resellerorder/resellerreturnordermodify/components/articlelist_amount.component.js\": 72572,\n\t\"./app/main/resellerorder/resellerreturnordermodify/components/articlelist_overview.component.js\": 89855,\n\t\"./app/main/resellerorder/resellerreturnordermodify/components/articlelist_quantity.component.js\": 14965,\n\t\"./app/main/resellerorder/resellerreturnordermodify/components/resellerorderproductsearchmultiselect.component.js\": 10791,\n\t\"./app/main/resellerorder/resellerreturnordermodify/resellerreturnordermodify.js\": 6013,\n\t\"./app/main/sales/sales.api.js\": 27478,\n\t\"./app/main/sales/sales.module.js\": 99160,\n\t\"./app/main/sales/salestotal/salestotal.js\": 21849,\n\t\"./app/main/stock/articles/article/article.js\": 20051,\n\t\"./app/main/stock/articles/articleStocksHistory/articleStocksHistory.component.js\": 25946,\n\t\"./app/main/stock/articles/articleStocksHistory/articleStocksHistory.dialog.js\": 56933,\n\t\"./app/main/stock/articles/articles.js\": 97365,\n\t\"./app/main/stock/articles/modelinventory/modelinventory.js\": 83527,\n\t\"./app/main/stock/inventorying.api.js\": 15858,\n\t\"./app/main/stock/pickinglist/stockPickingList.js\": 5625,\n\t\"./app/main/stock/reports/saleThroughputReports.js\": 88210,\n\t\"./app/main/stock/reports/soldStockReports.js\": 69199,\n\t\"./app/main/stock/reports/stockValueReports.js\": 44404,\n\t\"./app/main/stock/scannerinventorying/inventory/articledetails/articledetails.js\": 72317,\n\t\"./app/main/stock/scannerinventorying/inventory/inventory.js\": 90856,\n\t\"./app/main/stock/scannerinventorying/scannerinventorying.js\": 1449,\n\t\"./app/main/stock/stock.api.js\": 28750,\n\t\"./app/main/stock/stock.module.js\": 89376,\n\t\"./app/main/stocklogistics/articletransfer/articletransfer.js\": 93826,\n\t\"./app/main/stocklogistics/eshopreplenishment/eshopreplenishment.js\": 77646,\n\t\"./app/main/stocklogistics/masshandlingorderingpoints/masshandlingorderingpoints.js\": 55188,\n\t\"./app/main/stocklogistics/orderingpoints/autoMonthMultiplierDialog.js\": 64277,\n\t\"./app/main/stocklogistics/orderingpoints/orderingpoints.js\": 95702,\n\t\"./app/main/stocklogistics/stocklogistics.api.js\": 47318,\n\t\"./app/main/stocklogistics/stocklogistics.module.js\": 5016,\n\t\"./app/main/support/support.api.js\": 68814,\n\t\"./app/main/support/support.module.js\": 24864,\n\t\"./app/main/support/supportcases/addvariantdetail/addvariantdetail.js\": 28339,\n\t\"./app/main/support/supportcases/changebarcode/changebarcode.js\": 64479,\n\t\"./app/main/support/supportcases/changebarcodes/changebarcodes.js\": 67179,\n\t\"./app/main/support/supportcases/changeisgroupsalearticle/changeisgroupsalearticle.js\": 3265,\n\t\"./app/main/support/supportcases/changeitemgroup/changeitemgroup.js\": 23319,\n\t\"./app/main/support/supportcases/changevariantdetail/changevariantdetail.js\": 94963,\n\t\"./app/main/support/supportcases/createlocation/createlocation.js\": 84439,\n\t\"./app/main/support/supportcases/deleteproduct/deleteproduct.js\": 70807,\n\t\"./app/main/support/supportcases/mergeproducts/mergeproducts.js\": 90555,\n\t\"./app/main/support/supportcases/missingreceipts/missingreceipts.js\": 42839,\n\t\"./app/main/support/supportcases/originalbalanceimport/originalbalanceimport.js\": 95691,\n\t\"./app/main/support/supportcases/supportcases.module.js\": 88574,\n\t\"./app/main/support/supportcases/triggertochangelog/triggertochangelog.js\": 49443,\n\t\"./app/main/support/supportcases/updateinventorystatus/updateinventorystatus.js\": 76575,\n\t\"./app/main/timedOutLoginDialog/timedOutLoginDialog.js\": 76232,\n\t\"./app/main/timestamp/timeStampsAdministrationDialog/timeStampsAdministrationDialog.js\": 29691,\n\t\"./app/main/timestamp/timestamp.module.js\": 86676,\n\t\"./app/main/timestamp/timestamping.api.js\": 68604,\n\t\"./app/main/timestamp/timestampingusers/timestamping/timestamping.js\": 1086,\n\t\"./app/main/timestamp/timestampingusers/timestampingusers.js\": 8287,\n\t\"./app/main/timestamp/userTimeStampingDialog/userTimeStampingDialog.js\": 69675,\n\t\"./common/components/components.module.js\": 72710,\n\t\"./common/components/dashboard/widgets/wgtIntegrationStatus/wgtIntegrationStatus.component.js\": 24689,\n\t\"./common/components/dashboard/widgets/wgtRefunds/wgtRefunds.component.js\": 33147,\n\t\"./common/components/dashboard/widgets/wgtSeasonalityCurve/wgtSeasonalityCurve.component.js\": 78387,\n\t\"./common/components/dashboard/widgets/wgtTopSold/wgtTopSold.component.js\": 90511,\n\t\"./common/components/genericcomponents/address.component.js\": 19543,\n\t\"./common/components/genericcomponents/articlelist.component.js\": 65197,\n\t\"./common/components/genericcomponents/articlesearchsingleselect.component.js\": 84621,\n\t\"./common/components/genericcomponents/confirmbutton.component.js\": 80151,\n\t\"./common/components/genericcomponents/contactinfo.component.js\": 60707,\n\t\"./common/components/genericcomponents/errorlist.component.js\": 39821,\n\t\"./common/components/genericcomponents/formgrouprow.component.js\": 15350,\n\t\"./common/components/genericcomponents/formgrouprowother.component.js\": 98860,\n\t\"./common/components/genericcomponents/genericcomponents.service.js\": 67282,\n\t\"./common/components/genericcomponents/multiselect.component.js\": 91518,\n\t\"./common/components/genericcomponents/searchlist/searchlist-contactinfo.component.js\": 53199,\n\t\"./common/components/genericcomponents/singleselect.component.js\": 96333,\n\t\"./common/components/genericcomponents/sortingtabledataheader.component.js\": 28372,\n\t\"./common/components/genericcomponents/variantdetailsearchsingleselect.component.js\": 58987,\n\t\"./common/components/navigation/navigation.api.js\": 9487,\n\t\"./common/components/navigation/navigationNode.component.js\": 89576,\n\t\"./common/decorators/bootstrapModal/bootstrapModal.js\": 72197,\n\t\"./common/directives/dashboard/dashboard.js\": 88609,\n\t\"./common/directives/dashboard/widgetBody.js\": 93393,\n\t\"./common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettings.js\": 94358,\n\t\"./common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsBusinessArea.js\": 3009,\n\t\"./common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsHideTooltipLocation.js\": 10708,\n\t\"./common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsMultipleLocations.js\": 49408,\n\t\"./common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsTimePeriod.js\": 77614,\n\t\"./common/directives/dashboard/widgets/wgtArticleNegativeBalance/wgtAtricleNegativeBalance.js\": 21768,\n\t\"./common/directives/dashboard/widgets/wgtCalHeatmap/wgtCalHeatmap.js\": 96391,\n\t\"./common/directives/dashboard/widgets/wgtChart/wgtChart.js\": 53242,\n\t\"./common/directives/dashboard/widgets/wgtInfoLatestTransaction/wgtInfoLatestTransaction.js\": 30464,\n\t\"./common/directives/dashboard/widgets/wgtInfoQuickSaleFact/wgtInfoQuickSaleFact.js\": 70478,\n\t\"./common/directives/dashboard/widgets/wgtInfoSaleBusinessArea/wgtInfoSaleBusinessArea.js\": 12040,\n\t\"./common/directives/dashboard/widgets/wgtInfoSaleToLastYear/wgtInfoSaleToLastYear.js\": 76564,\n\t\"./common/directives/dashboard/widgets/wgtInfoTodayOrder/wgtInfoTodayOrder.js\": 64708,\n\t\"./common/directives/dashboard/widgets/wgtInfoUndeliveredInternalOrder/wgtInfoUndeliveredInternalOrder.js\": 72128,\n\t\"./common/directives/dashboard/widgets/wgtInfoYesterdaySale/wgtInfoYesterdaySale.js\": 29708,\n\t\"./common/directives/dashboard/widgets/wgtInfoYesterdaySaleBrv/wgtInfoYesterdaySaleBrv.js\": 63372,\n\t\"./common/directives/dashboard/widgets/wgtOrderAutoOrders/wgtOrderAutoOrders.js\": 61162,\n\t\"./common/directives/dashboard/widgets/wgtPrintableImports/wgtPrintableImports.js\": 31296,\n\t\"./common/directives/dashboard/widgets/wgtSaleTop/wgtSaleTop.js\": 17578,\n\t\"./common/directives/dashboard/widgets/wgtSaleTwoWeek/wgtSaleTwoWeek.js\": 73664,\n\t\"./common/directives/dashboard/widgets/wgtUndeliveredOrders/wgtUndeliveredOrders.js\": 57678,\n\t\"./common/directives/directives.js\": 30218,\n\t\"./common/directives/editableInputs/editableDecimal/editableDecimal.js\": 88881,\n\t\"./common/directives/formInput/enterAsTab.js\": 19522,\n\t\"./common/directives/loadSpinner/loadSpinner.js\": 82149,\n\t\"./common/directives/percentInput/percentInput.js\": 73829,\n\t\"./common/directives/restrictAccess/restrictAccess.js\": 70819,\n\t\"./common/directives/smartDecimal/smartDecimal.js\": 81619,\n\t\"./common/directives/ui-nav.js\": 85482,\n\t\"./common/directives/ui-toggleclass.js\": 98047,\n\t\"./common/filters/filters.js\": 44504,\n\t\"./common/filters/multiPartFilter.js\": 61129,\n\t\"./common/filters/propsFilter.js\": 58071,\n\t\"./common/resources/filedataimport.api.js\": 5204,\n\t\"./common/resources/filedataimport.v2.api.js\": 79140,\n\t\"./common/resources/fileoperations.api.js\": 67491,\n\t\"./common/resources/resources.js\": 66568,\n\t\"./common/services/authService/authservice.js\": 36515,\n\t\"./common/services/barcodeService/barcodeService.js\": 4639,\n\t\"./common/services/dialogs/InvoiceConfirmationDialog/InvoiceConfirmationDialog.js\": 85197,\n\t\"./common/services/dialogs/colourChangeDialog/colourChangeDialog.js\": 5523,\n\t\"./common/services/dialogs/confirmationDialog/confirmationDialog.js\": 26877,\n\t\"./common/services/dialogs/deliveryConfirmationDialog/deliveryConfirmationDialog.js\": 16029,\n\t\"./common/services/dialogs/deliveryDocumentDownloadDialog/deliveryDocumentDownloadDialog.js\": 47357,\n\t\"./common/services/dialogs/dialogs.js\": 81583,\n\t\"./common/services/dialogs/importFinalizationDialog/importFinalizationDialog.js\": 35837,\n\t\"./common/services/dialogs/informationDialog/informationDialog.js\": 93545,\n\t\"./common/services/dialogs/inventoryCorrectionsDialog/inventoryCorrectionsDialog.js\": 91229,\n\t\"./common/services/dialogs/labelPrintingDialog/labelPrintingDialog.js\": 75149,\n\t\"./common/services/dialogs/loginDialog/loginDialog.js\": 81793,\n\t\"./common/services/dialogs/newInventoryDialog/newInventoryDialog.js\": 7619,\n\t\"./common/services/dialogs/printInventoryReportDialog/printInventoryReportDialog.js\": 89353,\n\t\"./common/services/dialogs/printInvoiceDialog/printInvoiceDialog.js\": 92215,\n\t\"./common/services/dialogs/printLanguageConfirmationDialog/printLanguageConfirmationDialog.js\": 20013,\n\t\"./common/services/dialogs/printPickingListDialog/printPickingListDialog.js\": 11295,\n\t\"./common/services/dialogs/purchaseOrderAnalysisFilterDialog/purchaseOrderAnalysisFilterDialog.js\": 9777,\n\t\"./common/services/dialogs/resetLogin/resetLogin.js\": 37383,\n\t\"./common/services/dialogs/salesTotalFilterDialog/salesTotalFilterDialog.js\": 17175,\n\t\"./common/services/dialogs/setFieldConfirmationDialog/setFieldConfirmationDialog.js\": 74413,\n\t\"./common/services/dialogs/updateAddressDialog/updateAddressDialog.js\": 67509,\n\t\"./common/services/dialogs/updateOrderNoteDialog/updateOrderNoteDialog.js\": 93789,\n\t\"./common/services/featureSwitchService/featureSwitchService.js\": 59211,\n\t\"./common/services/helper/flexGridHelper.js\": 61818,\n\t\"./common/services/helper/helper.js\": 53689,\n\t\"./common/services/helper/pricelistsHelper.js\": 44935,\n\t\"./common/services/mock/mockImportFileRowService.js\": 4609,\n\t\"./common/services/services.js\": 84442,\n\t\"./common/services/toasterService/toasterservice.js\": 78083,\n\t\"./index.js\": 70835,\n\t\"./version.js\": 10257\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9185;","var map = {\n\t\"./Front/node_modules/ui-select/src/bootstrap/choices.tpl.html\": 42017,\n\t\"./Front/node_modules/ui-select/src/bootstrap/match-multiple.tpl.html\": 89761,\n\t\"./Front/node_modules/ui-select/src/bootstrap/match.tpl.html\": 57064,\n\t\"./Front/node_modules/ui-select/src/bootstrap/no-choice.tpl.html\": 47700,\n\t\"./Front/node_modules/ui-select/src/bootstrap/select-multiple.tpl.html\": 8774,\n\t\"./Front/node_modules/ui-select/src/bootstrap/select.tpl.html\": 62373,\n\t\"./Front/node_modules/ui-select/src/select2/choices.tpl.html\": 56949,\n\t\"./Front/node_modules/ui-select/src/select2/match-multiple.tpl.html\": 28901,\n\t\"./Front/node_modules/ui-select/src/select2/match.tpl.html\": 51148,\n\t\"./Front/node_modules/ui-select/src/select2/no-choice.tpl.html\": 9632,\n\t\"./Front/node_modules/ui-select/src/select2/select-multiple.tpl.html\": 50530,\n\t\"./Front/node_modules/ui-select/src/select2/select.tpl.html\": 55233,\n\t\"./Front/node_modules/ui-select/src/selectize/choices.tpl.html\": 22949,\n\t\"./Front/node_modules/ui-select/src/selectize/match-multiple.tpl.html\": 89301,\n\t\"./Front/node_modules/ui-select/src/selectize/match.tpl.html\": 48732,\n\t\"./Front/node_modules/ui-select/src/selectize/no-choice.tpl.html\": 89040,\n\t\"./Front/node_modules/ui-select/src/selectize/select-multiple.tpl.html\": 42674,\n\t\"./Front/node_modules/ui-select/src/selectize/select.tpl.html\": 56017,\n\t\"./Front/src/app/app.tpl.html\": 38774,\n\t\"./Front/src/app/main/analysis/analysis.tpl.html\": 77914,\n\t\"./Front/src/app/main/analysis/pdfTemplate/pdfTemplate.tpl.html\": 35365,\n\t\"./Front/src/app/main/analysis/reports/reports.tpl.html\": 94289,\n\t\"./Front/src/app/main/analysis/userReports/userReport.component.tpl.html\": 93395,\n\t\"./Front/src/app/main/analysis/userReports/userReports.tpl.html\": 74945,\n\t\"./Front/src/app/main/base/accounts/account/account.tpl.html\": 35013,\n\t\"./Front/src/app/main/base/accounts/accounts.tpl.html\": 8520,\n\t\"./Front/src/app/main/base/articlecollections/articlecollection/articlecollection.tpl.html\": 89690,\n\t\"./Front/src/app/main/base/articlecollections/articlecollections.tpl.html\": 97222,\n\t\"./Front/src/app/main/base/articletypes/articletype/articletype.tpl.html\": 89206,\n\t\"./Front/src/app/main/base/articletypes/articletypes.tpl.html\": 18446,\n\t\"./Front/src/app/main/base/base.tpl.html\": 94060,\n\t\"./Front/src/app/main/base/countries/countries.tpl.html\": 58662,\n\t\"./Front/src/app/main/base/countries/country/country.tpl.html\": 49703,\n\t\"./Front/src/app/main/base/currencies/currencies.tpl.html\": 742,\n\t\"./Front/src/app/main/base/currencies/currency/currency.tpl.html\": 90250,\n\t\"./Front/src/app/main/base/customergroups/customergroup/customergroup.tpl.html\": 19821,\n\t\"./Front/src/app/main/base/customergroups/customergroups.tpl.html\": 62600,\n\t\"./Front/src/app/main/base/dashboard/dashboard.tpl.html\": 902,\n\t\"./Front/src/app/main/base/deliveryplanningtemplates/deliveryplanningtemplate/deliveryplanningtemplate.tpl.html\": 53045,\n\t\"./Front/src/app/main/base/deliveryplanningtemplates/deliveryplanningtemplates.tpl.html\": 13482,\n\t\"./Front/src/app/main/base/deliveryterms/deliveryterm/deliveryterm.tpl.html\": 48844,\n\t\"./Front/src/app/main/base/deliveryterms/deliveryterms.tpl.html\": 65454,\n\t\"./Front/src/app/main/base/invoicetypes/invoicetype/invoicetype.tpl.html\": 59249,\n\t\"./Front/src/app/main/base/invoicetypes/invoicetypes.tpl.html\": 41656,\n\t\"./Front/src/app/main/base/ordercollections/ordercollection/ordercollection.tpl.html\": 37996,\n\t\"./Front/src/app/main/base/ordercollections/ordercollections.tpl.html\": 19190,\n\t\"./Front/src/app/main/base/ordertypes/ordertype/ordertype.tpl.html\": 82792,\n\t\"./Front/src/app/main/base/ordertypes/ordertypes.tpl.html\": 13802,\n\t\"./Front/src/app/main/base/paymentterms/paymentterm/paymentterm.tpl.html\": 68592,\n\t\"./Front/src/app/main/base/paymentterms/paymentterms.tpl.html\": 34582,\n\t\"./Front/src/app/main/base/paymenttypes/paymenttype/paymenttype.tpl.html\": 36294,\n\t\"./Front/src/app/main/base/paymenttypes/paymenttypes.tpl.html\": 50382,\n\t\"./Front/src/app/main/base/returnreasons/returnreason/returnreason.tpl.html\": 64736,\n\t\"./Front/src/app/main/base/returnreasons/returnreasons.tpl.html\": 22222,\n\t\"./Front/src/app/main/base/shippingmethods/shippingmethod/shippingmethod.tpl.html\": 56229,\n\t\"./Front/src/app/main/base/shippingmethods/shippingmethods.tpl.html\": 66430,\n\t\"./Front/src/app/main/base/vats/vat/vat.tpl.html\": 44609,\n\t\"./Front/src/app/main/base/vats/vats.tpl.html\": 73816,\n\t\"./Front/src/app/main/budget/budget.tpl.html\": 18900,\n\t\"./Front/src/app/main/budget/budgets/budgets.tpl.html\": 28722,\n\t\"./Front/src/app/main/budget/budgets/components/budgetImport.component.tpl.html\": 60596,\n\t\"./Front/src/app/main/contacts/bulkoperation/bulkoperation.tpl.html\": 81374,\n\t\"./Front/src/app/main/contacts/companies/companies.tpl.html\": 24502,\n\t\"./Front/src/app/main/contacts/companies/company/company.tpl.html\": 67122,\n\t\"./Front/src/app/main/contacts/components/addressform.component.tpl.html\": 13685,\n\t\"./Front/src/app/main/contacts/components/contactinfoform.component.tpl.html\": 9705,\n\t\"./Front/src/app/main/contacts/components/newaddressform.component.tpl.html\": 21173,\n\t\"./Front/src/app/main/contacts/components/newcontactinfoform.component.tpl.html\": 11881,\n\t\"./Front/src/app/main/contacts/contacts.tpl.html\": 12256,\n\t\"./Front/src/app/main/contacts/locations/location/location.tpl.html\": 5285,\n\t\"./Front/src/app/main/contacts/locations/locations.tpl.html\": 54402,\n\t\"./Front/src/app/main/contacts/roles/role/role.tpl.html\": 11002,\n\t\"./Front/src/app/main/contacts/roles/roles.tpl.html\": 53346,\n\t\"./Front/src/app/main/contacts/users/user/user.tpl.html\": 55118,\n\t\"./Front/src/app/main/contacts/users/users.tpl.html\": 90410,\n\t\"./Front/src/app/main/customerinvoice/customerinvoice.tpl.html\": 6936,\n\t\"./Front/src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicecontent.cmp.tpl.html\": 48164,\n\t\"./Front/src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicerows.cmp.tpl.html\": 17828,\n\t\"./Front/src/app/main/customerinvoice/customerinvoicesearch/customerinvoicecontent/customerinvoicesearch.cmp.tpl.html\": 94065,\n\t\"./Front/src/app/main/customerinvoice/customerinvoicesearch/customerinvoicerowsearch.tpl.html\": 79166,\n\t\"./Front/src/app/main/customerinvoice/customerinvoicesearch/customerinvoicesearch.tpl.html\": 7428,\n\t\"./Front/src/app/main/customerorder/customerorder.tpl.html\": 25692,\n\t\"./Front/src/app/main/customerorder/customerordersearch/customerordercontent/customerordercontent.cmp.tpl.html\": 11602,\n\t\"./Front/src/app/main/customerorder/customerordersearch/customerordercontent/customerorderdeliveries.cmp.tpl.html\": 83431,\n\t\"./Front/src/app/main/customerorder/customerordersearch/customerordercontent/customerorderpayments.cmp.tpl.html\": 78208,\n\t\"./Front/src/app/main/customerorder/customerordersearch/customerordercontent/customerorderrefunds.cmp.tpl.html\": 36160,\n\t\"./Front/src/app/main/customerorder/customerordersearch/customerordercontent/customerorderrows.cmp.tpl.html\": 14678,\n\t\"./Front/src/app/main/customerorder/customerordersearch/customerordercontent/customerordersearch.cmp.tpl.html\": 1239,\n\t\"./Front/src/app/main/customerorder/customerordersearch/customerordersearch.tpl.html\": 23679,\n\t\"./Front/src/app/main/discountManagement/component/discountMultiselect.component.tpl.html\": 25845,\n\t\"./Front/src/app/main/discountManagement/discountManagement.tpl.html\": 87766,\n\t\"./Front/src/app/main/discountManagement/discounts/discount/discount.tpl.html\": 21152,\n\t\"./Front/src/app/main/discountManagement/discounts/discounts.tpl.html\": 17439,\n\t\"./Front/src/app/main/economy/siefileexport/siefileexport.tpl.html\": 63391,\n\t\"./Front/src/app/main/main-header.tpl.html\": 79006,\n\t\"./Front/src/app/main/main-menu.tpl.html\": 57576,\n\t\"./Front/src/app/main/main.tpl.html\": 14294,\n\t\"./Front/src/app/main/order/order.tpl.html\": 53192,\n\t\"./Front/src/app/main/order/orderDialogs/orderRowCommentDialog/orderRowCommentDialog.tpl.html\": 9123,\n\t\"./Front/src/app/main/order/orderdelivery/components/barcodescanninginput.component.tpl.html\": 46218,\n\t\"./Front/src/app/main/order/orderdelivery/components/orderarticles.component.tpl.html\": 33122,\n\t\"./Front/src/app/main/order/orderdelivery/components/ordermetadata.component.tpl.html\": 27064,\n\t\"./Front/src/app/main/order/orderdelivery/components/orderrowsdelivery.component.tpl.html\": 81352,\n\t\"./Front/src/app/main/order/orderdelivery/components/orderrowsedit.component.tpl.html\": 16836,\n\t\"./Front/src/app/main/order/orderdelivery/components/orderscannernavigation.component.tpl.html\": 73667,\n\t\"./Front/src/app/main/order/orderdelivery/components/ordertotals.component.tpl.html\": 85682,\n\t\"./Front/src/app/main/order/orderdelivery/orderdelivery.tpl.html\": 66015,\n\t\"./Front/src/app/main/order/orderdeliveryplanning/editDeliveryPlanningDialog/editDeliveryPlanningDialog.tpl.html\": 4373,\n\t\"./Front/src/app/main/order/orderdeliveryplanning/orderdeliveryplanning.tpl.html\": 30491,\n\t\"./Front/src/app/main/order/ordersearch/components/orderarticledeliveries.component.tpl.html\": 2089,\n\t\"./Front/src/app/main/order/ordersearch/components/orderarticlerows.component.tpl.html\": 84408,\n\t\"./Front/src/app/main/order/ordersearch/components/ordercontent.component.tpl.html\": 59950,\n\t\"./Front/src/app/main/order/ordersearch/components/ordersearchresult.component.tpl.html\": 32500,\n\t\"./Front/src/app/main/order/ordersearch/ordersearch.tpl.html\": 91307,\n\t\"./Front/src/app/main/order/purchaseorder/components/articlessummarygrid.component.tpl.html\": 41755,\n\t\"./Front/src/app/main/order/purchaseorder/components/opentobuygrid.component.tpl.html\": 97789,\n\t\"./Front/src/app/main/order/purchaseorder/components/purchaseorderdistributiongrid.component.tpl.html\": 889,\n\t\"./Front/src/app/main/order/purchaseorder/components/purchaseorderextraoptions.component.tpl.html\": 96635,\n\t\"./Front/src/app/main/order/purchaseorder/components/singlearticlesummarygrid.component.tpl.html\": 53480,\n\t\"./Front/src/app/main/order/purchaseorder/purchaseorder.tpl.html\": 37615,\n\t\"./Front/src/app/main/order/purchaseorderanalysis/purchaseorderanalysis.tpl.html\": 50671,\n\t\"./Front/src/app/main/order/purchaseordersearch/purchaseordersearch.tpl.html\": 22651,\n\t\"./Front/src/app/main/order/reports/intrastatReports.tpl.html\": 76799,\n\t\"./Front/src/app/main/order/reports/transitReports.tpl.html\": 14064,\n\t\"./Front/src/app/main/product/articleimport/articleimport.tpl.html\": 11296,\n\t\"./Front/src/app/main/product/articles/article/article.tpl.html\": 77540,\n\t\"./Front/src/app/main/product/articles/article/components/articlevariantsgrid.component.tpl.html\": 55490,\n\t\"./Front/src/app/main/product/articles/article/components/articlevariantsgridcell.component.tpl.html\": 29414,\n\t\"./Front/src/app/main/product/articles/articleAddNewArticleVariantDialog/articleAddNewArticleVariantDialog.tpl.html\": 70624,\n\t\"./Front/src/app/main/product/articles/articleChangeItemGroupDialog/articleChangeItemGroupDialog.tpl.html\": 17922,\n\t\"./Front/src/app/main/product/articles/articleChangeVariantDetailDialog/articleChangeVariantDetailDialog.tpl.html\": 29578,\n\t\"./Front/src/app/main/product/articles/articleLabelsPrintDialog/articleLabelsPrintDialog.tpl.html\": 62038,\n\t\"./Front/src/app/main/product/articles/articleNewIntrastatDialog/articleNewIntrastatDialog.tpl.html\": 83852,\n\t\"./Front/src/app/main/product/articles/articles.tpl.html\": 12800,\n\t\"./Front/src/app/main/product/articles/pricelistmanagement/pricelistmanagement.tpl.html\": 13896,\n\t\"./Front/src/app/main/product/articles/pricelistmgmt.tpl.html\": 23531,\n\t\"./Front/src/app/main/product/brands/brand/brand.tpl.html\": 26389,\n\t\"./Front/src/app/main/product/brands/brands.tpl.html\": 13602,\n\t\"./Front/src/app/main/product/businessareas/businessarea/businessarea.tpl.html\": 41423,\n\t\"./Front/src/app/main/product/businessareas/businessareas.tpl.html\": 58508,\n\t\"./Front/src/app/main/product/components/articlesearchmultiselect.component.tpl.html\": 216,\n\t\"./Front/src/app/main/product/components/itemGroupInline.component.tpl.html\": 64702,\n\t\"./Front/src/app/main/product/departments/department/department.tpl.html\": 60910,\n\t\"./Front/src/app/main/product/departments/departments.tpl.html\": 2544,\n\t\"./Front/src/app/main/product/importeditor/importeditor.tpl.html\": 88353,\n\t\"./Front/src/app/main/product/importfileslist/importfileslist.tpl.html\": 29676,\n\t\"./Front/src/app/main/product/intrastats/intrastat/intrastat.tpl.html\": 412,\n\t\"./Front/src/app/main/product/intrastats/intrastats.tpl.html\": 57832,\n\t\"./Front/src/app/main/product/maingroups/maingroup/maingroup.tpl.html\": 50798,\n\t\"./Front/src/app/main/product/maingroups/maingroups.tpl.html\": 88632,\n\t\"./Front/src/app/main/product/pricelisteditor/components/articleselection.component.tpl.html\": 25492,\n\t\"./Front/src/app/main/product/pricelisteditor/components/pricelistsgrid.component.tpl.html\": 56798,\n\t\"./Front/src/app/main/product/pricelisteditor/components/pricerangeinput.component.tpl.html\": 57170,\n\t\"./Front/src/app/main/product/pricelisteditor/components/volumediscountrule.component.tpl.html\": 26619,\n\t\"./Front/src/app/main/product/pricelisteditor/pricelisteditor.tpl.html\": 93204,\n\t\"./Front/src/app/main/product/pricelists/pricelist/pricelist.tpl.html\": 31721,\n\t\"./Front/src/app/main/product/pricelists/pricelists.tpl.html\": 96446,\n\t\"./Front/src/app/main/product/product.tpl.html\": 11280,\n\t\"./Front/src/app/main/product/productimport/components/filelist.component.tpl.html\": 14996,\n\t\"./Front/src/app/main/product/productimport/components/mapordate.component.tpl.html\": 84101,\n\t\"./Front/src/app/main/product/productimport/components/maporselect.component.tpl.html\": 25385,\n\t\"./Front/src/app/main/product/productimport/productimport.tpl.html\": 81448,\n\t\"./Front/src/app/main/product/productimporteditor/components/importeditorsummary.component.tpl.html\": 21613,\n\t\"./Front/src/app/main/product/productimporteditor/components/importeditortextdropdown.component.tpl.html\": 1801,\n\t\"./Front/src/app/main/product/productimporteditor/components/importeditorvalidationerrors.component.tpl.html\": 22871,\n\t\"./Front/src/app/main/product/productimporteditor/components/importrowsgrid.component.tpl.html\": 27319,\n\t\"./Front/src/app/main/product/productimporteditor/productimporteditor.tpl.html\": 43856,\n\t\"./Front/src/app/main/product/psychologicalprices/psychologicalprice/psychologicalprice.tpl.html\": 66472,\n\t\"./Front/src/app/main/product/psychologicalprices/psychologicalprices.tpl.html\": 77428,\n\t\"./Front/src/app/main/product/saleschannels/saleschannel/saleschannel.tpl.html\": 82063,\n\t\"./Front/src/app/main/product/saleschannels/saleschannels.tpl.html\": 89864,\n\t\"./Front/src/app/main/product/subcategories/subcategories.tpl.html\": 83984,\n\t\"./Front/src/app/main/product/subcategories/subcategory/subcategory.tpl.html\": 67449,\n\t\"./Front/src/app/main/product/variantgroups/variantgroup/variantgroup.tpl.html\": 31892,\n\t\"./Front/src/app/main/product/variantgroups/variantgroups.tpl.html\": 252,\n\t\"./Front/src/app/main/product/variants/variant/variant.tpl.html\": 68993,\n\t\"./Front/src/app/main/product/variants/variants.tpl.html\": 90198,\n\t\"./Front/src/app/main/product/volumediscounts/volumediscount/volumediscount.tpl.html\": 28345,\n\t\"./Front/src/app/main/product/volumediscounts/volumediscounts.tpl.html\": 93596,\n\t\"./Front/src/app/main/resellerorder/genericcomponents/readonlyorderheader.cmp.tpl.html\": 69765,\n\t\"./Front/src/app/main/resellerorder/genericcomponents/resellerorderbreadcrumbs.cmp.tpl.html\": 74504,\n\t\"./Front/src/app/main/resellerorder/genericcomponents/resellerordersearch.cmp.tpl.html\": 31228,\n\t\"./Front/src/app/main/resellerorder/genericcomponents/resellerreturnorderbreadcrumbs.cmp.tpl.html\": 87218,\n\t\"./Front/src/app/main/resellerorder/genericcomponents/scannernavigation.cmp.tpl.html\": 8630,\n\t\"./Front/src/app/main/resellerorder/resellerorder.tpl.html\": 5372,\n\t\"./Front/src/app/main/resellerorder/resellerordercreate/components/createorderheader.cmp.tpl.html\": 17043,\n\t\"./Front/src/app/main/resellerorder/resellerordercreate/resellerordercreate.tpl.html\": 21617,\n\t\"./Front/src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createDeliveryDate.cmp.tpl.html\": 46388,\n\t\"./Front/src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/DeliveryDateDialog/createVariantDeliveryDateDialog.tpl.html\": 81061,\n\t\"./Front/src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/createVariantFulfillmentDialog.tpl.html\": 31214,\n\t\"./Front/src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/components/createfulfillmentvariants.cmp.tpl.html\": 46585,\n\t\"./Front/src/app/main/resellerorder/resellerorderfulfillment/createfulfillment/createfulfillment.tpl.html\": 69448,\n\t\"./Front/src/app/main/resellerorder/resellerorderfulfillment/manageorders/manageorders.tpl.html\": 53062,\n\t\"./Front/src/app/main/resellerorder/resellerorderfulfillment/manageproducts/manageproducts.tpl.html\": 59696,\n\t\"./Front/src/app/main/resellerorder/resellerordermodify/components/addlineitems.cmp.tpl.html\": 45949,\n\t\"./Front/src/app/main/resellerorder/resellerordermodify/components/articlelist_amount.component.tpl.html\": 88482,\n\t\"./Front/src/app/main/resellerorder/resellerordermodify/components/articlelist_overview.component.tpl.html\": 54389,\n\t\"./Front/src/app/main/resellerorder/resellerordermodify/components/articlelist_quantity.component.tpl.html\": 17415,\n\t\"./Front/src/app/main/resellerorder/resellerordermodify/components/resellerorderproductsearchmultiselect.component.tpl.html\": 64693,\n\t\"./Front/src/app/main/resellerorder/resellerordermodify/resellerordermodify.tpl.html\": 38885,\n\t\"./Front/src/app/main/resellerorder/resellerordersearch/resellerordersearch.tpl.html\": 25893,\n\t\"./Front/src/app/main/resellerorder/resellerorderview/components/resellerordercontent.cmp.tpl.html\": 34146,\n\t\"./Front/src/app/main/resellerorder/resellerorderview/components/resellerorderrows.cmp.tpl.html\": 55142,\n\t\"./Front/src/app/main/resellerorder/resellerorderview/resellerorderview.tpl.html\": 86273,\n\t\"./Front/src/app/main/resellerorder/resellerreturnordercreate/components/createreturnorderheader.cmp.tpl.html\": 51971,\n\t\"./Front/src/app/main/resellerorder/resellerreturnordercreate/resellerreturnordercreate.tpl.html\": 29781,\n\t\"./Front/src/app/main/resellerorder/resellerreturnordermodify/components/addlineitems.cmp.tpl.html\": 4255,\n\t\"./Front/src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_amount.component.tpl.html\": 8172,\n\t\"./Front/src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_overview.component.tpl.html\": 49315,\n\t\"./Front/src/app/main/resellerorder/resellerreturnordermodify/components/articlelist_quantity.component.tpl.html\": 3381,\n\t\"./Front/src/app/main/resellerorder/resellerreturnordermodify/components/resellerorderproductsearchmultiselect.component.tpl.html\": 14395,\n\t\"./Front/src/app/main/resellerorder/resellerreturnordermodify/resellerreturnordermodify.tpl.html\": 57181,\n\t\"./Front/src/app/main/sales/sales.tpl.html\": 96104,\n\t\"./Front/src/app/main/sales/salestotal/salestotal.tpl.html\": 79449,\n\t\"./Front/src/app/main/stock/articles/article/article.tpl.html\": 31207,\n\t\"./Front/src/app/main/stock/articles/articleStocksHistory/articleStocksHistory.component.tpl.html\": 28654,\n\t\"./Front/src/app/main/stock/articles/articleStocksHistory/articleStocksHistory.dialog.tpl.html\": 63301,\n\t\"./Front/src/app/main/stock/articles/articles.tpl.html\": 92069,\n\t\"./Front/src/app/main/stock/articles/modelinventory/modelinventory.tpl.html\": 13227,\n\t\"./Front/src/app/main/stock/pickinglist/stockPickingList.tpl.html\": 99737,\n\t\"./Front/src/app/main/stock/reports/saleThroughputReports.tpl.html\": 70278,\n\t\"./Front/src/app/main/stock/reports/soldStockReports.tpl.html\": 2755,\n\t\"./Front/src/app/main/stock/reports/stockValueReports.tpl.html\": 5348,\n\t\"./Front/src/app/main/stock/scannerinventorying/inventory/articledetails/articledetails.tpl.html\": 25197,\n\t\"./Front/src/app/main/stock/scannerinventorying/inventory/inventory.tpl.html\": 23288,\n\t\"./Front/src/app/main/stock/scannerinventorying/scannerinventorying.tpl.html\": 67097,\n\t\"./Front/src/app/main/stock/stock.tpl.html\": 71232,\n\t\"./Front/src/app/main/stocklogistics/articletransfer/articletransfer.tpl.html\": 65894,\n\t\"./Front/src/app/main/stocklogistics/eshopreplenishment/eshopreplenishment.tpl.html\": 64642,\n\t\"./Front/src/app/main/stocklogistics/masshandlingorderingpoints/masshandlingorderingpoints.tpl.html\": 41092,\n\t\"./Front/src/app/main/stocklogistics/orderingpoints/autoMonthMultiplierDialog.tpl.html\": 86658,\n\t\"./Front/src/app/main/stocklogistics/orderingpoints/orderingpoints.tpl.html\": 87850,\n\t\"./Front/src/app/main/stocklogistics/stocklogistics.tpl.html\": 98504,\n\t\"./Front/src/app/main/support/support.tpl.html\": 72256,\n\t\"./Front/src/app/main/support/supportcases/addvariantdetail/addvariantdetail.tpl.html\": 44007,\n\t\"./Front/src/app/main/support/supportcases/changebarcode/changebarcode.tpl.html\": 6019,\n\t\"./Front/src/app/main/support/supportcases/changebarcodes/changebarcodes.tpl.html\": 88255,\n\t\"./Front/src/app/main/support/supportcases/changeisgroupsalearticle/changeisgroupsalearticle.tpl.html\": 85137,\n\t\"./Front/src/app/main/support/supportcases/changeitemgroup/changeitemgroup.tpl.html\": 28315,\n\t\"./Front/src/app/main/support/supportcases/changevariantdetail/changevariantdetail.tpl.html\": 81127,\n\t\"./Front/src/app/main/support/supportcases/createlocation/createlocation.tpl.html\": 42075,\n\t\"./Front/src/app/main/support/supportcases/deleteproduct/deleteproduct.tpl.html\": 10811,\n\t\"./Front/src/app/main/support/supportcases/mergeproducts/mergeproducts.tpl.html\": 20079,\n\t\"./Front/src/app/main/support/supportcases/missingreceipts/missingreceipts.tpl.html\": 95003,\n\t\"./Front/src/app/main/support/supportcases/originalbalanceimport/originalbalanceimport.tpl.html\": 35820,\n\t\"./Front/src/app/main/support/supportcases/supportcases.tpl.html\": 10022,\n\t\"./Front/src/app/main/support/supportcases/triggertochangelog/triggertochangelog.tpl.html\": 64151,\n\t\"./Front/src/app/main/support/supportcases/updateinventorystatus/updateinventorystatus.tpl.html\": 34435,\n\t\"./Front/src/app/main/timedOutLoginDialog/timedOutLoginDialog.tpl.html\": 1032,\n\t\"./Front/src/app/main/timestamp/timeStampsAdministrationDialog/timeStampsAdministrationDialog.tpl.html\": 50687,\n\t\"./Front/src/app/main/timestamp/timestampingusers/timestamping/timestamping.tpl.html\": 83090,\n\t\"./Front/src/app/main/timestamp/timestampingusers/timestampingusers.tpl.html\": 75571,\n\t\"./Front/src/app/main/timestamp/userTimeStampingDialog/userTimeStampingDialog.tpl.html\": 22703,\n\t\"./Front/src/common/components/dashboard/widgets/wgtIntegrationStatus/wgtIntegrationStatus.component.tpl.html\": 86305,\n\t\"./Front/src/common/components/dashboard/widgets/wgtRefunds/wgtRefunds.component.tpl.html\": 64015,\n\t\"./Front/src/common/components/dashboard/widgets/wgtSeasonalityCurve/wgtSeasonalityCurve.component.tpl.html\": 96231,\n\t\"./Front/src/common/components/dashboard/widgets/wgtTopSold/wgtTopSold.component.tpl.html\": 66675,\n\t\"./Front/src/common/components/genericcomponents/address.component.tpl.html\": 70427,\n\t\"./Front/src/common/components/genericcomponents/articlelist.component.tpl.html\": 8541,\n\t\"./Front/src/common/components/genericcomponents/articlesearchsingleselect.component.tpl.html\": 39501,\n\t\"./Front/src/common/components/genericcomponents/confirmbutton.component.tpl.html\": 85019,\n\t\"./Front/src/common/components/genericcomponents/contactinfo.component.tpl.html\": 68007,\n\t\"./Front/src/common/components/genericcomponents/errorlist.component.tpl.html\": 68077,\n\t\"./Front/src/common/components/genericcomponents/formgrouprow.component.tpl.html\": 1162,\n\t\"./Front/src/common/components/genericcomponents/formgrouprowother.component.tpl.html\": 24556,\n\t\"./Front/src/common/components/genericcomponents/multiselect.component.tpl.html\": 80354,\n\t\"./Front/src/common/components/genericcomponents/searchlist/searchlist-contactinfo.component.tpl.html\": 15459,\n\t\"./Front/src/common/components/genericcomponents/singleselect.component.tpl.html\": 47789,\n\t\"./Front/src/common/components/genericcomponents/sortingtabledataheader.component.tpl.html\": 53684,\n\t\"./Front/src/common/components/genericcomponents/variantdetailsearchsingleselect.component.tpl.html\": 62575,\n\t\"./Front/src/common/components/navigation/navigationNode.component.tpl.html\": 86440,\n\t\"./Front/src/common/directives/dashboard/dashboard.tpl.html\": 95633,\n\t\"./Front/src/common/directives/dashboard/widgetBody.tpl.html\": 70081,\n\t\"./Front/src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettings.tpl.html\": 96330,\n\t\"./Front/src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsBusinessArea.tpl.html\": 58049,\n\t\"./Front/src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsHideTooltipLocation.tpl.html\": 2532,\n\t\"./Front/src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsMultipleLocations.tpl.html\": 13312,\n\t\"./Front/src/common/directives/dashboard/widgets/dialogs/wgtSettings/wgtSettingsTimePeriod.tpl.html\": 76706,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtArticleNegativeBalance/wgtArticleNegativeBalance.tpl.html\": 12136,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtCalHeatmap/wgtCalHeatmap.tpl.html\": 53252,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtChart/wgtChart.tpl.html\": 68926,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtInfoLatestTransaction/wgtInfoLatestTransaction.tpl.html\": 69824,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtInfoQuickSaleFact/wgtInfoQuickSaleFact.tpl.html\": 95906,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtInfoSaleBusinessArea/wgtInfoSaleBusinessArea.tpl.html\": 92808,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtInfoSaleToLastYear/wgtInfoSaleToLastYear.tpl.html\": 76580,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtInfoTodayOrder/wgtInfoTodayOrder.tpl.html\": 76116,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtInfoUndeliveredInternalOrder/wgtInfoUndeliveredInternalOrder.tpl.html\": 70720,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtInfoYesterdaySale/wgtInfoYesterdaySale.tpl.html\": 87516,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtInfoYesterdaySaleBrv/wgtInfoYesterdaySaleBrv.tpl.html\": 82268,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtOrderAutoOrders/wgtOrderAutoOrders.tpl.html\": 67406,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtPrintableImports/wgtPrintableImports.tpl.html\": 12032,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtSaleTop/wgtSaleTop.tpl.html\": 71630,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtSaleTwoWeek/wgtSaleTwoWeek.tpl.html\": 39136,\n\t\"./Front/src/common/directives/dashboard/widgets/wgtUndeliveredOrders/wgtUndeliveredOrders.tpl.html\": 73506,\n\t\"./Front/src/common/directives/loadSpinner/loadSpinner.tpl.html\": 45877,\n\t\"./Front/src/common/services/dialogs/InvoiceConfirmationDialog/InvoiceConfirmationDialog.tpl.html\": 52781,\n\t\"./Front/src/common/services/dialogs/colourChangeDialog/colourChangeDialog.tpl.html\": 21783,\n\t\"./Front/src/common/services/dialogs/confirmationDialog/confirmationDialog.tpl.html\": 91325,\n\t\"./Front/src/common/services/dialogs/deliveryConfirmationDialog/deliveryConfirmationDialog.tpl.html\": 72477,\n\t\"./Front/src/common/services/dialogs/deliveryDocumentDownloadDialog/deliveryDocumentDownloadDialog.tpl.html\": 66365,\n\t\"./Front/src/common/services/dialogs/importFinalizationDialog/importFinalizationDialog.tpl.html\": 55069,\n\t\"./Front/src/common/services/dialogs/informationDialog/informationDialog.tpl.html\": 3625,\n\t\"./Front/src/common/services/dialogs/inventoryCorrectionsDialog/inventoryCorrectionsDialog.tpl.html\": 78109,\n\t\"./Front/src/common/services/dialogs/labelPrintingDialog/labelPrintingDialog.tpl.html\": 22285,\n\t\"./Front/src/common/services/dialogs/loginDialog/loginDialog.tpl.html\": 19105,\n\t\"./Front/src/common/services/dialogs/newInventoryDialog/newInventoryDialog.tpl.html\": 15431,\n\t\"./Front/src/common/services/dialogs/printInventoryReportDialog/printInventoryReportDialog.tpl.html\": 65417,\n\t\"./Front/src/common/services/dialogs/printInvoiceDialog/printInvoiceDialog.tpl.html\": 34123,\n\t\"./Front/src/common/services/dialogs/printLanguageConfirmationDialog/printLanguageConfirmationDialog.tpl.html\": 43469,\n\t\"./Front/src/common/services/dialogs/printPickingListDialog/printPickingListDialog.tpl.html\": 67635,\n\t\"./Front/src/common/services/dialogs/purchaseOrderAnalysisFilterDialog/purchaseOrderAnalysisFilterDialog.tpl.html\": 72049,\n\t\"./Front/src/common/services/dialogs/resetLogin/resetLogin.tpl.html\": 90715,\n\t\"./Front/src/common/services/dialogs/salesTotalFilterDialog/salesTotalFilterDialog.tpl.html\": 4203,\n\t\"./Front/src/common/services/dialogs/setFieldConfirmationDialog/setFieldConfirmationDialog.tpl.html\": 12525,\n\t\"./Front/src/common/services/dialogs/updateAddressDialog/updateAddressDialog.tpl.html\": 29301,\n\t\"./Front/src/common/services/dialogs/updateOrderNoteDialog/updateOrderNoteDialog.tpl.html\": 32413\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 76986;","module.exports = angular;","/* (ignored) */","/* (ignored) */"],"names":["stateConfig","$stateProvider","$urlRouterProvider","when","rootRedirect","state","url","templateUrl","data","pageTitle","resolve","currentUser","userResolve","AuthService","getUser","$state","hasToken","transitionTo","then","angular","module","config","React","addElement","removeElement","jsx","_jsx","bridgeConverter","reactComponent","propNames","bindings","Object","fromEntries","map","prop","controller","_class","$element","_classCallCheck","_defineProperty","createRef","container","_createClass","key","value","$onChanges","onChangesObj","_this$bindings","currentBindings","newBindings","entries","_ref","_ref2","_slicedToArray","bindingName","currentValue","_objectSpread","updateProps","$onInit","reactElement","element","createElement","ComponentWrapper","component","initialProps","ref","reactElementRef","$onDestroy","undefined","_this$reactElementRef","current","forwardRef","_ref3","Component","_React$useState","useState","_React$useState2","props","setProps","useImperativeHandle","newProps","reactEvents","jsxs","_jsxs","FooBar","hello","children","onClick","fooBar","dispatch","angularEvents","useEffect","useRef","Formik","Field","Form","FieldArray","useFormikContext","useField","Yup","DatePicker","DropdownField","options","name","isEditing","as","disabled","option","id","formatDate","date","year","getFullYear","month","getMonth","day","getDate","formattedDate","concat","toString","padStart","DatepickerField","_useFormikContext","setFieldValue","_useField","_useField2","field","meta","handleDateChange","dateFormat","selected","Date","onChange","touched","error","className","MetaFieldValueComponent","index","handleChange","e","target","type","parseFloat","readOnly","newOption","updatedOptions","saveMetaFieldValues","values","formattedValues","_field$value","MetaFieldValues","_ref4","initialIsEditing","_useState","_useState2","setIsEditing","formValuesRef","unsub","subscribe","unsubSaveArticle","saveArticle","console","log","validationSchema","object","shape","metaFields","array","of","string","required","mixed","_field$value2","initialValues","onSubmit","formValues","_ref5","handleSubmit","handleFieldChange","metaFieldValue","style","listStyle","marginBottom","_regeneratorRuntime","t","r","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_toPrimitive","toPrimitive","String","Number","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","Array","from","test","isArray","ErrorMessage","Fragment","_Fragment","saveMetaFields","fields","MetaFields","typeOptions","_callee","_callee$","_context","setTimeout","JSON","stringify","_x","remove","metaField","padding","htmlFor","_toConsumableArray","_","optIndex","defaultValue","isVisibleOnPrint","positionX","positionY","_defineProperties","ColourChange","articleId","initialArticleColours","articleColours","setArticleColours","articleColoursHasChanged","newArticleColours","uniqueColourNames","ArticleColours","colour","ColourName","self","indexOf","UniqueColourNames","formikHelpers","onSubmitForm","renderForm","formikState","isSubmitting","colourName","articleVariantId","placeholder","_x2","_onSubmitForm","setSubmitting","saveColourChange","ArticleColour","angularDataConfig","DSProvider","ENV","defaults","basePath","BASE_PATH","rms2Path","RMS2_BASE_PATH","httpProviderConfig","$httpProvider","interceptors","httpInterceptor","$injector","$q","responseError","rejection","get","ToasterService","$translate","status","logOut","showError","instant","reject","translationConfig","$translateProvider","translations","useSanitizeValueStrategy","useLocalStorage","useUrlLoader","preferredLanguage","fallbackLanguage","constant","process","env","NAME","FLEXMONSTER_KEY","factory","require","ResourceInit","DS","defineResource","idAttribute","endpoint","relations","hasMany","subcategory","localField","foreignKey","belongsTo","mainGroup","parent","localKey","run","setRootScopeVariables","$rootScope","canAccess","initializeAuthService","setToken","eventSubscribers","loadSpinnerService","VersionService","$on","toState","toParams","fromState","fromParams","$applyAsync","start","event","hasVersionChanged","allowReloadOnStateChange","reload","force","isDefined","token","$timeout","$http","$window","currentPromise","started","checkInterval","service","cancel","checkVersion","location","getTime","response","version","$emit","AuthApiService","DSHttpAdapter","ResourcesService","getToken","username","password","tenantName","deferred","defer","POST","handleError","promise","handleResourceError","LoginController","$location","showLogin","path","AnalysisApiService","getReports","apiFactory","saveReport","getDataSources","getUserReports","saveUserReport","deleteUserReport","getSharedReports","getPdfTemplates","savePdfTemplate","getReportGroups","saveUserReportSortOrder","getLocalization","getUserReportsToConvert","saveConvertedUserReport","getLocations","report","PUT","userReport","pdfTemplate","reports","MainAnalysisController","vm","AnalysisPdfTemplateController","templates","selectedTemplate","head","selectTemplate","save","template","copy","showSuccess","reportsResolver","dataSources","dataSourcesResolver","userReports","userReportsResolver","sharedReports","sharedReportsResolver","localization","localizationResolver","AnalysisReportsController","$cookies","$uibModal","$scope","editReportTemplates","showUserReportList","isLoadingReport","selectedDataSource","selectedReport","description","reportObject","selectedUserReport","selectedUserReport1","userReportName","reportComboBox","initUserReports","selectedSharedReport","decription","showSharedReportList","initSharedReports","reportLevels","selectUserReports","loadReport","loadUserReport","saveNewUserReport","canSaveUserReport","loadUserReports","editUserReport","comboBoxInitialized","cancelEditUserReport","editFormSelectedReportChanged","expandRows","collapseRows","selectSharedReports","selectedSharedReportChanged","loadSharedReports","cbSelectLevelChanged","removeMeasures","convertAllReports","pivot","createPivot","user","substr","splice","find","cb","cbEditUserReport","_tbx","cbSharedReport","reportId","dataSourceId","dataUrl","getObject","reportText","startsWith","fmCovertXmlReport","jsonReport","parse","dataSource","filename","assureDataSourceType","measures","measure","availableAggregations","setReport","closeFieldsList","clear","refresh","message","cbSaveUserReport","loadSharedReport","dataSourceType","reportObj","getReport","newReport","newReportName","reportTemplate","canSave","$select","isDroppedDown","selectedValue","formatStr","moment","format","expand","firstLevel","getRows","expandData","uniqueName","collapseAllData","getAllMeasures","m","removeCalculatedMeasure","pivotObj","$","flexmonster","componentFolder","width","height","toolbar","global","on","onPivotUpdate","onPivotError","reportString","ReportGroupName","sales","ReportName","salesWhen","controllerAs","$anchorScroll","confirmationDialogService","Constants","reportGroups","selectedGroup","loadedReportPath","showNavigation","selectedTab","activeTabIndex","loadedReport","isLoading","onInit","onChanges","onDestroy","navigate","moveUp","moveDown","selectTab","copySelectedReport","deleteReport","isValidDate","canPublishReport","sortDescending","sortAscending","generate","startDate","activate","useFiltering","dispose","empty","setDate","getAuth0Token","accessToken","loadReportGroups","changes","fm","licenseKey","load","group","some","first","exception","requestHeaders","Authorization","setOptions","grid","title","position","arrayMove","scrollTo","preventDefault","newSorting","orderBy","saveSortOrder","to","containerId","elementId","up","document","getElementById","offsetTop","offsetHeight","animate","scrollTop","tabName","findIndex","isShared","reportGroupType","changed","isLoadedReport","userReportGroup","showDialog","result","pull","valid","momentDate","isValid","isBefore","AnalysisUserReportsController","views","account","isNewAccount","accountResolver","$stateParams","AccountsApiService","getAccount","accountId","languagesResolver","getLanguages","AccountController","accountCopy","enableEditing","cancelEditing","saveAccount","deleteAccount","isAccountNumberValid","isAllInformationValid","toggleDisplayForm","prepareData","appendLocalizations","languages","obj","localizations","language","saveNewAccount","updateAccount","createAccount","go","confirmation","showEditForm","accountNumber","isNumeric","isFinite","getAccounts","update","accounts","accountsResolver","searchTerm","searchTermesolver","page","pageSize","AccountsController","selectedAccountId","currentPage","searchTermChange","$watch","params","newValue","oldValue","parseInt","loadAccounts","request","itemsPerPage","collection","collectionCode","collectionDescription","articleCollectionType","currentBehaviour","currentRank","duration","isArticleSeason","isOrderSeason","offset","currencies","isNewCollection","collectionResolver","ArticleCollectionsApiService","getArticleCollectionById","collectionId","ArticleCollectionController","collectionCopy","currentBehaviours","articleCollectionTypes","saveCollection","selectedCurrentBehaviour","selectedArticleCollectionType","collections","listAllArticleCollections","toDate","sortBy","lastCollection","lastToDate","fromDate","setCurrentBehaviours","setArticleCollectionTypes","trim","focus","saveConfirmedCollection","updateConfirmedCollection","getFullDate","saveArticleCollection","articleCollectionId","zeroFill","number","join","updateArticleCollection","listAllCurrencies","collectionsResolver","ArticleCollectionsController","selectedCollectionId","loadCollections","articleType","articleTypesResolver","createNew","ArticleTypesApiService","getArticleType","articleTypeId","ArticleTypeController","isNew","articleTypeCopy","deleteArticleType","deleteConfirmed","getAll","isEmpty","GET","articleTypes","searchTermResolver","ArticleTypesController","selectedArticleTypeId","searchTermChanged","loadArticleTypes","BaseController","CountriesApiService","getCountries","getCountryById","createCountry","updateCountry","deleteCountry","countries","countriesResolver","CountriesController","selectedCountryId","countryId","loadCountries","country","isNewCountry","vats","vatsResolver","countryResolver","VatsApiService","getVats","CountryController","countryCopy","saveCountry","isCountryCodeValid","appendVats","vat","countryVats","countryVat","vatRate","saveNewCountry","CurrenciesApiService","getCurrency","deleteCurrency","currency","currenciesResolver","CurrenciesController","selectedCurrencyId","loadCurrencies","currencyId","CurrencyController","currencyCopy","code","customergroup","isNewCustomerGroup","customergroupResolver","CustomerGroupsApiService","getCustomerGroup","customergroupId","CustomerGroupController","customergroupCopy","saveCustomerGroup","deleteCustomerGroup","isCustomerGroupCodeValid","saveNewCustomerGroup","updateCustomerGroup","createCustomerGroup","getCustomerGroups","customergroups","customergroupsResolver","CustomerGroupsController","selectedCustomerGroupId","customerGroupId","loadCustomerGroups","DashboardApiService","getWidgetDefinitions","getWidgets","getWidgetData","saveWidgets","widget_id","settings","isString","locationIds","hideTooltip","businessAreaId","selectedWidgetTimeFrame","jsonRequest","toJson","setting","initialData","all","widgetDefinitions","widgets","MainDashboardController","remplateUrl","deliveryplanningtemplate","isNewDeliveryPlanningTemplate","deliveryplanningtemplateResolver","DeliveryPlanningTemplatesApiService","getDeliveryPlanningTemplate","deliveryplanningtemplateId","DeliveryPlanningTemplateController","deliveryplanningtemplateCopy","saveDeliveryPlanningTemplate","deleteDeliveryPlanningTemplate","saveNewDeliveryPlanningTemplate","updateDeliveryPlanningTemplate","createDeliveryPlanningTemplate","getDeliveryPlanningTemplates","deliveryplanningtemplates","deliveryplanningtemplatesResolver","DeliveryPlanningTemplatesController","selectedDeliveryPlanningTemplateId","deliveryPlanningTemplateId","loadDeliveryPlanningTemplates","deliveryterm","isNewDeliveryTerm","deliverytermResolver","DeliveryTermsApiService","getDeliveryTerm","deliverytermId","DeliveryTermController","deliverytermCopy","saveDeliveryTerm","deleteDeliveryTerm","isDeliveryTermCodeValid","saveNewDeliveryTerm","updateDeliveryTerm","createDeliveryTerm","getDeliveryTerms","deliveryterms","deliverytermsResolver","DeliveryTermsController","selectedDeliveryTermId","deliveryTermId","loadDeliveryTerms","invoicetype","isNewInvoiceType","printDocumentTemplates","printDocumentResolver","invoicetypeResolver","InvoiceTypesApiService","getInvoiceType","invoicetypeId","getPrintDocumentTemplates","InvoiceTypeController","invoicetypeCopy","saveInvoiceType","deleteInvoiceType","saveNewInvoiceType","updateInvoiceType","createInvoiceType","getInvoiceTypes","invoicetypes","invoicetypesResolver","InvoiceTypesController","selectedInvoiceTypeId","invoiceTypeId","loadInvoiceTypes","currencySettings","currencyResolver","OrderCollectionsApiService","getOrderCollectionById","OrderCollectionController","listAllOrderCollections","currencyCode","currencyRate","saveOrderCollection","orderCollectionId","updateOrderCollection","existingCurrency","newCurrencySetting","OrderCollectionsController","ordertype","deliveryPlanningTemplate","deliveryPlanningTemplatesResolver","locations","locationsResolver","isNewOrderType","ordertypeResolver","OrderTypesApiService","getOrderType","ordertypeId","OrderTypeController","OrdersApiService","ordertypeCopy","enableDeliveryPlanning","saveOrderType","deleteOrderType","appendLocations","initDeliveryPlanningTemplate","isDeliveryPlanningEnabled","locationName","saveNewOrderType","updateOrderType","createOrderType","getOrderTypes","ordertypes","ordertypesResolver","OrderTypesController","selectedOrderTypeId","orderTypeId","loadOrderTypes","paymentterm","isNewPaymentTerm","paymenttermResolver","PaymentTermsApiService","getPaymentTerm","paymenttermId","PaymentTermController","paymenttermCopy","savePaymentTerm","deletePaymentTerm","isPaymentTermCodeValid","saveNewPaymentTerm","updatePaymentTerm","createPaymentTerm","getPaymentTerms","paymentterms","paymenttermsResolver","PaymentTermsController","selectedPaymentTermId","paymentTermId","loadPaymentTerms","paymentType","isNewPaymentType","paymentTypeResolver","PaymentTypesApiService","getPaymentType","paymentTypeId","PaymentTypeController","paymentTypeCopy","savePaymentType","deletePaymentType","isPaymentTypeCodeValid","actipaymentTypee","updatePaymentType","paymentTypeCode","getPaymentTypes","createPaymentType","paymentTypes","paymentTypesResolver","PaymentTypesController","selectedPaymentTypeId","loadPaymentTypes","returnreason","isNewReturnReason","returnreasonResolver","ReturnReasonsApiService","getReturnReason","returnreasonId","ReturnReasonController","FeatureSwitchService","returnreasonCopy","locationCopy","featureStockLocationEnabled","hasAdvancedReturnReason","saveReturnReason","deleteReturnReason","isReturnReasonCodeValid","unshift","getNoLocationLocation","stockLocationId","adjustStock","saveNewReturnReason","updateReturnReason","createReturnReason","getReturnReasons","GetLocations","returnreasons","returnreasonsResolver","ReturnReasonsController","selectedReturnReasonId","returnReasonId","loadReturnReasons","shippingmethod","isNewShippingMethod","shippingmethodResolver","ShippingMethodsApiService","getShippingMethod","shippingmethodId","ShippingMethodController","shippingmethodCopy","saveShippingMethod","deleteShippingMethod","isShippingMethodCodeValid","saveNewShippingMethod","updateShippingMethod","createShippingMethod","getShippingMethods","shippingmethods","shippingmethodsResolver","ShippingMethodsController","selectedShippingMethodId","shippingMethodId","loadShippingMethods","isNewVat","vatResolver","getVat","vatId","VatController","vatCopy","saveVat","deleteVat","isVatCodeValid","saveNewVat","updateVat","createVat","vatCode","apiRms2Factory","VatsController","selectedVatId","loadVats","MainBudgetController","BudgetsApiService","getSalesBudgets","getBudgetsForItemGroupAndCollection","getBudgetForItemGroupLocationAndCollection","getBudgetForCollection","getBudgetsForCompany","importBudgets","args","itemGroupId","locationId","companyId","BudgetsController","budgets","totalItems","onBudgetImported","loadBudgets","results","total","disabledBy","GenericComponentService","importData","fileInputDomElement","addEventListener","handleFile","file","files","reader","FileReader","onload","onLoadFunction","readAsArrayBuffer","bytes","Uint8Array","byteLength","fromCharCode","workbook","XLSX","read","firstSheetName","SheetNames","workSheet","Sheets","utils","sheet_to_json","BulkOperationController","UsersApiService","LocationsApiService","RolesApiService","flexGrid","originalRowData","rowData","rowCollection","wijmo","CollectionView","currentUserClaims","claims","dataSourceChoice","dataSourceChoices","translationKey","captureGrid","saveData","selectAll","selectNone","isAllowedToSave","getData","initialize","autoGenerateColumns","selectionMode","SelectionMode","Row","allowDragging","AllowDragging","None","allowResizing","AllowResizing","itemsSource","prepareUsersAndLocationData","saveUserAndLocationData","generateUsersAndLocationDataRows","clearGridColumns","showInactiveUsers","responses","rowHeader","Column","binding","header","allowSorting","isReadOnly","columns","locationNumber","clearRowData","firstName","lastName","userLocation","stringMatchesSearchTerm","invalidate","changedRows","getChangedRows","requests","row","locationIdentifiers","without","identifier","requestPromises","updateUserInfo","rows","gridRow","dataItem","str","splitSearchTerms","split","matchResults","term","toLower","originalData","originalRow","addRowIfValueChanged","CompaniesApiService","listAll","getCompany","createCompany","updateCompany","getCompanyTypes","getSuppliers","getSuppliersBrief","getAddressTypes","getContactInfoTypes","getCurrencies","getActiveUsers","getPricingModels","getPriceListBriefs","companies","companiesResolver","ContactsCompaniesController","selectedCompanyId","goToCompany","brandId","company","isNewCompany","companyTypes","companyTypesResolver","users","usersResolver","shippingMethods","shippingMethodsResolver","deliveryTerms","deliveryTermsResolver","paymentTerms","paymentTermsResolver","pricingModels","pricingModelResolver","priceLists","priceListResolver","companyResolver","CompanyController","$filter","priceModels","commissionPercent","priceModelObject","priceModel","addresses","currAddr","addressType","addressTypes","at","addressTypeId","companyType","purchasingCurrency","companyCopy","newAddress","newContactInfo","availableAddressTypes","availableContactInfoTypes","contactInfoTypes","resellerPriorities","selectedPriority","addNewAddress","removeAddress","addNewContactInfo","removeContactInfo","startEdit","cancelEdit","allInformationIsValid","hasCompanyName","hasDeliveryTerm","hasPaymentTerm","hasShippingMethod","hasResellerPriceList","types","resetTypes","applyResellerPriority","companyName","deliveryTerm","paymentTerm","shippingMethod","resellerPriceList","createCompanyObject","alternativeCompanyId","brands","companySystemType","companyTypeId","contactInfos","deliveryTermsId","languageId","leadTime","organizationNumber","paymentTermsId","primaryPurchaserId","primaryPurchaser","priority","purchasingCurrencyId","resellerPriceListId","saveNewCompany","companyObject","clone","address","typeName","contactInfo","contactInfoType","getAvailableAddressTypes","getAvailableContactInfoTypes","toLowerCase","onAddressUpdated","onAddressDeleted","addressUpdated","deleteAddress","addressLine1","addressLine2","addressLine3","postalCode","city","onContactInfoUpdated","onContactInfoDeleted","contactInfoUpdated","deleteContactInfo","onAddressCreated","createAddress","selectedAddressType","postalcode","onContactInfoCreated","createContactInfo","selectedContactInfoType","MainContactsController","locationResolver","addressTypesResolver","contactInfoTypesResolver","userLocations","userLocationsResolver","pricelists","pricelistsResolver","getLocation","getUsers","getUserLocations","getPricelists","ContactsLocationController","allowUpdate","selectedLocation","selectedLocationCopy","startEditing","updateContactInfo","updateAddress","allowSaveLocation","isAllowedToSetAutoOrder","pricelistName","matchAnyDemand","stocklogistics","includes","updateLocation","addressToUpdate","addr","infoToUpdate","ci","showInactiveLocations","matchEntireSearchTerm","searchTerms","inactive","match","ContactsLocationsController","goToLocation","matchExactly","forceReloadUrl","loadLocations","notify","limit","afterGetAllLocations","role","roleResolver","claimsResolver","widgetsResolver","getRole","roleId","getAllClaims","getAllWidgets","getAllDataSources","RoleController","objectTypes","claimsRowData","claimTypes","saveRole","claim","claimType","objectType","loadClaimsGridData","claimsToSave","foundClaim","updateRole","rowHeaderSystemType","rowHeaderLabel","getAllRoles","roles","rolesResolver","RolesController","selectedRoleId","selectRole","isActive","userResolver","getById","userId","ContactsUserController","HelperService","isNewUser","selectedLocations","selectedBrands","selectedUser","selectedUserCopy","validationErrors","salaryTypes","isEmailValid","mailformat","hasEmail","validateEmail","hasFirstName","hasLastName","hasUserName","hasPassword","hasRole","isEmailInfo","contactInfoTypeEmail","x","systemTypeName","emailContactInfo","getValidRoles","getBrands","intervalId","window","setInterval","saveNewUser","updateUser","propertiesToInspect","setUndefinedToNull","changedData","getChangedData","errors","today","dd","mm","yyyy","newUser","info","email","err","getSelf","inject","bypassCache","partialRight","pick","cacheResponse","employeeNumber","usernamePos","ContactsUsersController","userList","generateUserList","selectedUserId","selectUser","showExtraOptions","loadUsers","list","isCleverAppsUser","cleverAppsLoggedIn","userCopy","mobileNumber","CustomerInvoiceApiService","downloadAsPdf","getAllUnboundInvoiceRow","setStatus","saveCustomerInvoice","dueDateMin","dueDateMax","invoiceDateMin","invoiceDateMax","createdDateMin","createdDateMax","invoiceId","responseType","blob","Blob","contentDisposition","headers","fileName","getFileName","navigator","msSaveBlob","body","appendChild","URL","createObjectURL","href","download","click","revokeObjectURL","parentNode","removeChild","filenameRegex","matches","RegExp","exec","MainCustomerInvoiceController","navigated","componentController","printInvoiceDialogService","customerInvoice","customerInvoiceCopy","showInvoiceHead","toggleInvoiceHead","getStatusTranslation","getTypeTranslation","getSelectedInvoiceAsPdf","showInvoicePrintDialog","saveEdit","invoiceStatusAllowsEdit","text","isRowInvalid","isTextInvalid","intrastatCode","weight","countryOfOriginCode","allRowsValid","rowsAreValid","invoiceRows","invoiceStatus","invoiceSystemStatus","confirmationMessage","replace","invoiceNumber","languageCode","weightSetting","currentRow","rowCopy","goToArticleVariant","goToArticle","getEllipsis","getTotalCustomerinvoiceQuantity","getTotalCustomerinvoiceAmount","getTotalCustomerinvoiceTotalAmount","getTotalCustomerinvoiceVat","getTotalCustomerinvoiceTotalVat","getTotalCustomerinvoiceWeight","getTotalCustomerinvoiceTotalWeight","len","isTextDifferent","sumBy","quantity","sum","invoiceAmountExVat","vatAmount","orderArticleId","onCustomerInvoiceSelected","loadCustomerInvoices","resetFilters","selectInvoice","customerInvoices","invoiceTypes","dueDate","invoiceDate","dueMinStartDate","dueMinEndDate","invoiceMinEndDate","invoiceMaxEndDate","CustomerInvoiceRowSearchController","createdMinEndDate","createdMaxEndDate","selectedInvoiceRow","showSearchFields","invoiceRowDate","loadCustomerInvoiceRows","selectInvoiceRow","toggleSearchFields","goToCompleteInvoices","customerInvoiceRows","showBackButton","invoiceRowId","invoiceRow","customerInvoiceResolver","CustomerInvoiceSearchController","selectedInvoice","transitionToState","goToUnboundInvoiceRows","CustomerOrderApiService","cancelById","getDeliveryNotePdf","orderTypes","selectedFromLocation","fromLocation","onlyOrderNumber","orderId","MainCustomerOrderController","customerOrder","tabSelection","orderRows","orderDeliveries","showOrderHead","changeToOrderRowsTab","changeToOrderPaymentsTab","changeToOrderDeliveriesTab","changeToOrderRefundsTab","toggleOrderHead","cancelOrder","getOrderTypeTranslation","canCancelOrder","isCompanyOrder","printDeliveryNote","showDeliveryMethod","change","setUpGridData","loadGridData","deliveryMethod","setAllTabSelectionsToFalse","orderPayments","customerKind","orderRefunds","hasOrder","hasOrderStatusCancelled","deliveries","textCapital","toUpperCase","getDeliveryStatusTranslation","getDeliveryTotal","getOrderedQuantitySum","getDeliveredQuantitySum","delivery","showRows","deliveryRows","deliveryRow","orderRow","salesPrice","deliveredQuantity","discount","orderedQuantity","getTotalRefundQuantity","getTotalRefundAmount","getTotalQuantityOfAllRefunds","getTotalAmountOfAllRefunds","refund","amount","refunds","o2","hasResellerPrice","currentCustomerOrderId","getOrderRowTotalSum","getOrderRowQuantitySum","showResellerPrice","resellerSalesPrice","resellerVatAmount","onCustomerOrderSelected","filterAll","filterCreated","filterPending","filterDelivered","filterRested","filterPayed","filterCancelled","loadCustomerOrders","searchTermChangeDebounced","debounce","flushDebouncedIfEnterKey","filterAllChanged","selectOrder","customerOrders","setSearchTermOrderTypes","newEmptyLocation","keycode","flush","customerOrderResolver","CustomerOrderSearchController","selectedOrder","showSearchToggle","model","choices","filterBy","itemRenderer","filteredChoices","filterChanged","selectItem","deselectItem","formatRenderer","hideSelected","deselectSelection","selectFilterSelection","areThereItems","isUndefined","renderValue","item","alreadyAdded","choice","filterLength","by","MainDiscountManagementController","searchTermsResolver","discountTypes","discountTypesResolver","createCopy","discountResolver","discountCopyResolver","DiscountsApiService","getDiscountCopy","discountId","getDiscountTypes","getDiscount","showCancelled","canc","showApproved","appr","showCompleted","comp","DiscountController","descriptionMaxLength","links","salesChannels","mainGroups","itemGroups","discountCopy","step","maxSteps","itemGroupValidationErrors","approveDiscount","brandsChanged","mainGroupsChanged","enableEditingFromCopy","deleteDiscount","isApproveDiscountEnabled","approve","itemGroupsEmpty","getSalesChannels","timeSinceLastCall","setStepRotation","changeStep","setStep","transformDiscountPercentToDecimal","itemGroupStillBlocking","validateItemGroups","isSalesChannelSelected","endDateLessThanStartDate","validatePercentRange","removeErrorItemGroups","valueXandYValid","canEdit","canApprove","canCancel","canDelete","claimCanUpdate","claimCanCreate","claimCanDelete","endDate","transformDiscountPercentToDisplayValue","salesChannel","resp","ig","discountPercent","increase","getNecessaryData","stepIndex","getMainGroups","brandIds","brand","getItemGroups","indexes","itemGroup","degrees","maxLength","substring","isNumber","getTimezoneOffset","toISOString","saveDiscount","approveConfirmed","cancelConfirmed","cancelDiscount","minValue","maxValue","discriminator","valueX","valueY","canEditDiscount","canApproveDiscount","canCancelDiscount","canDeleteDiscount","claimCanUpdateDiscount","claimCanCreateDiscount","claimCanDeleteDiscount","getDiscounts","hasLink","rel","link","salesChannelId","tempStartDate","UTC","tempEndDate","mainGroupIds","monthsBack","discountData","sendDiscountData","jsonData","discounts","discountsResolver","currPage","months","showDropDown","show","DiscountsController","selectedDiscountId","filterDropdownIsVisisble","monthsOptions","monthsBackOption","currentDate","totalDiscounts","selectDiscount","listBackgroundStyle","flipDropDownFilter","flipCancelled","flipApproved","flipCompleted","monthChanged","discountsOld","dates","selectedMonth","selectedYear","increaseMonth","decreaseMonth","shouldDisplayDiscount","getColspanForDiscount","shouldSkipRepeat","weekday","recalcDaysInMonths","reloadUrl","loadDiscounts","days","daysInMonth","leapYear","getDay","daysBetween","millisecondsPerDay","colspan","EconomyApiService","$document","getAccountConfigMessages","downloadSIEFile","webkitURL","fromDateString","toDateString","downloadUrl","accountMessages","accountMessagesResolver","SieFileExportController","$interval","organizationNumbers","fetchSieFile","num","orgNr","MainController","UserTimeStampingDialogService","TimeStampingApiService","NavigationApiService","TimedOutLoginDialogService","currentLicense","licenseConfig","menuNodes","latestTimeStamp","loginDialog","tenant","openTimeStampingModal","isReloading","currentTenantLogoPath","supportViewOptionEnabled","getNavigationNodes","nodes","updateLatestTimeStamp","eventTarget","attr","closest","$target","toggleClass","tenantStringIdentifier","isZalando","isFutureOfRetail","isYabie","queueRefreshSession","currentUrl","$$absUrl","getLatestTimeStamps","getTokenExpired","expireDate","timeUntillExpire","timeUntillShowDialog","showRefreshSessionDialog","tokenExpireDate","sessionRefreshed","MainOrderController","OrderRowCommentDialogService","orderArticle","modalDefaults","backdrop","keyboard","size","open","OrderRowCommentDialogController","$uibModalInstance","closeModal","comment","keepChanges","close","OrderService","canShipOrder","canDeleteOrder","canCopyOrder","canEditOrder","canDeliverOrder","canApproveOrder","canPartDeliverOrder","updateCurrencyOnOrderRows","hasQuantity","isInternalOrder","createOrderRowsFromArticleVariants","canConfirmDeliveryPlan","canUndoConfirmDeliveryPlan","canChangePredictedDate","isLeadTimeDeliveryPlan","order","orderType","orderSystemType","orderArticles","purchaseCost","originalPurchasePrice","standardCostAddPercent","totalQuantity","articleVariants","stocks","articleVariantIds","av","orderRowWithComment","orderRowComment","articleVariant","supplierPrice","destination","summarizedDeliveredQuantity","orderStatus","orderSystemStatus","supplierPrices","sp","effectivePurchasePrice","shippingCost","customsPercent","otherCosts","getTotalRowSum","purchasePrice","priceListItems","resellerPriceListCurrencyRate","resellerPriceListItem","pli","price","stock","st","calculateEffectivePurchasePrice","discountAmount","rowItem","pp","ppCurrencyConverted","customsAmount","standardCostAddAmount","OrderArticlesApiService","onOrderArticlesRetrieved","BarcodeService","scannedBarcodes","getArticlesAndQuantites","splitData","textRow","splitRow","getNumberOfItemSets","lenInventory","lenInternOrder","barcodesArray","formatBarcodesString","barcode","cleanBarcode","getOrderArticlesForBarcodes","notFoundBarcodes","nfb","reasonCode","supplierName","articles","handleRetrievedOrderArticles","getStocksForArticleVariants","orderChangeCount","isModifying","onArticleSelected","Rms2OrdersApiService","lastDeliveredOrderArticle","filteredOrderArticles","hiddenDeliveredRows","haveOrderArticlePurchaseCostClaim","havePurchaseCostClaim","displayPrices","ongoingRequest","sortContentBy","sortContentReverse","restCurrentOrderArticle","viewOrderArticle","absolute","hideDeliveredRows","isRowDelivered","updatedQuantity","updatedQuantityToDeliver","canDeliverIn","anyNonVariantArticles","getCurrentDeliveryQuantity","getTotalQuantityLeftToDeliver","deliverNonVariantArticles","isSingleVariantArticle","isMultipleVariantArticle","deliver","isDelivered","hasOnlyOneOrderRow","isRowCreated","setRestFlag","isAllowedToChangeQuantity","shouldBeTreatedAsNonVariant","shouldBeTreatedAsVariant","openOrderRowCommentDialog","hasOrderId","systemStatus","article","recalculateAggregatedData","setInitialPriceDisplayChoice","setInitialQuantitiesToDeliver","every","quantityToDeliver","restOrderArticle","setNextQuantityToDeliver","deliveredDate","now","deliveryRowType","Math","max","qty","oa","deliveringUserId","lineItems","lineNumber","orderLineNumber","parseDate","restDelivery","deliverStoreOrder","deliverAutoOrder","deliverInternalOrder","deliverAutoInternalOrder","deliverReturnOrder","reloadOrder","oldOrderArticle","newOrderArticle","plannedDeliveryDate","orderCopy","nonVariantOrderArticles","shouldDeliverThisArticle","zeroAllNonDeliveryQuantities","stripUnnecessaryOrderData","deliverPartially","input","newDate","ordRow","delRow","deliveringUser","purchaser","windowWidthLimit","windowTooNarrow","innerWidth","isDelivering","isVariant","seepurchasecost","lowestStatusAmongRows","abs","art","lowestSystemStatusAmongRows","summarizedPurchaseCost","summarizedSalesPrice","summarizedQuantity","zeroQuantityAverageOrderRowPurchaseCost","zeroQuantityAverageOrderRowSalesPrice","nonZeroQuantityOrderRowPurchaseCost","nonZeroQuantityOrderRowSalesPrice","nonZeroQuantityOrderRowsCount","averageOrderRowPurchaseCost","averageArticleVariantSalesPrice","summarizedDeliveredCost","nonVariantVariantDetail1Name","variantDetail1","variantDetailName","nonVariantVariantDetail2Name","variantDetail2","nonVariantQuantityToDeliver","refreshGrid","collectionView","updateCommentOnOrderRows","isHidden","isCopying","initOrderType","initCompany","setCollectionAutomatically","setCurrencyRateAutomatically","EditDeliveryPlanningDialogService","errorColor","noErrorColor","allLocations","allUserLocations","destinations","isCreatedOrNew","orderUpdated","getOrderTypeRowStyle","getFromLocationRowStyle","getDestinationRowStyle","getCompanyRowStyle","getCollectionRowStyle","getCurrencyStyle","setCurrencyRate","canChangeCurrency","canChangeCompany","canChangeFromLocation","canChangeDestination","canChangeCollection","openEditDeliveryPlanning","isDeliveryPlanningDisabled","dateChangeDeliveryPlanningDialog","resetDeliveryPlanningTemplate","getCompanies","getCurrencyDefault","defaultCurrency","setCurrencyToDefault","getLocationsDependingOnUser","filterInactiveLocations","setLocationsDependingOnOrderType","getOrderCollections","changeOrderSeason","setOrderMetadataListeners","setDeliveryTermsToCompanyDefault","setCurrencyToCompanyDefault","setPurchaserToCompanyDefault","getResellerPriceList","comparisonDate","hasNoOrderArticles","isNotApproved","approved","hasInitCompany","hasPermittedStatus","allowedByOrderType","isOrderCopy","currencyToSet","purchaserToSet","currencySetting","showEditDeliveryplanDialog","firstEdit","stages","currentOrderArticle","rowsGrid","setWijmoInputDateLimits","captureRowsGrid","deliverOrderSection","transferQuantityDataToOrder","recalculateGridTotals","orderArticleIsDelivered","initializeGridColumns","$$phase","$apply","IsFinalDelivery","resetOrderArticleFlags","setupGrid","earliestAllowedDeliveryDate","min","Columns","frozenColumns","finishEditing","beginningEdit","addHandler","col","deliveryItemExists","has","variantRows","groupBy","variantRowValues","variantRowValue","variantDetails1Name","variantExternalId","externalId","summarizedUndeliveredQuantity","someRowIsUndelivered","reduce","memo","dlvrRow","minWidth","getDataColumns","rowTotalCol","align","variantDetail","inputType","variant","newArray","val","variant2Details","vd","variant1Details","vd1","quantitySum","vd2","orderRowsToCheck","ProductsApiService","hasClaim","hasQuantities","hasDifferentVariantPrices","colorRelatedPurchaseCosts","colorVariantRelatedPurchaseCosts","originalCellValue","pricesGrid","variantPricesGrid","capturePricesGrid","captureVariantPricesGrid","handleNonexistingArticleVariants","transferQuantityGridDataToOrder","transferPurchaseCostDataToOrder","transferVariantPurchaseCostDataToOrder","recalculateVariantGridTotals","hasGridQuantities","hasGridDifferentVariantPrices","beginEditingOrderRow","orderRowEditEnded","hasRetrievedStocks","getStockQuantitiesForCurrentArticle","getCurrencyCodeString","isAllowedToAddProduct","constructVariantPurchaseCostData","constructPurchaseCostData","resetCurrentOrderArticlePresentation","getDefaultCurrency","constructSalesPriceData","rowNumber","selection","columnNumber","columnHeader","sender","colBinding","cellValue","variantStocks","valueSplit","stockStr","getStockForArticle","dataType","hasBeenModifiedSinceLoad","variantRowQuantity","delQuantity","articleStocks","existingStock","existingStockStr","systemName","statusName","isAllowedToEditRow","itemFormatter","panel","cell","regularCellType","CellType","Cell","greyedColumnNumbers","cellType","color","backgroundColor","grouped","representative","sumQuantity","colorVariantRelatedSalesPrices","averageSalesPrice","averagePurchaseCost","quantityCustomized","firstRow","isAllEqual","parsed","purchaseCostRow","purchaseRow","currentPurchaseCostRow","deliverOrder","deliverWholeOrderCode","navigationScannerInput","scanInputKeyPress","focusScanningInputField","scanField","ev","enterKeyCode","keyCode","processNavigationScannerInput","ordArt","alternativeArticleNumber","normalize","orders","shouldShowFromLocation","shouldShowSupplier","shouldShowDestination","deliveredValue","carrier","orderNumber","orderNumberExternal","supplierReference","termsOfDelivery","ourReference","cashRegDiscount","closeHeaderOnOpen","supplierId","orderResolver","usingScannerNavigation","OrderDeliveryController","deliveryConfirmationDialogService","inputOrderSystemType","inputSupplierId","inputArticles","copiedOrderId","barcodesSendList","deliveryDate","orderArticleSwitchingLocked","isShowingScanningForm","showOrderMetadataPanel","visibility","orderHeadInput","orderArticlesAddForm","articlesOnOrder","toggleScanningForm","downloadOrderLabels","getOrderPrintout","toggleMetadataPanelVisibility","disableOrderArticleSwitching","enableOrderArticleSwitching","isAllowedtoOutDeliverOrder","isAllowedToUseScanningForm","saveOrder","showApproveButton","approveOrder","outDeliverOrder","receiveArticles","receiveOrderArticles","finalizeDelivery","returnToState","canDeliverEntireOrder","canAddToOrderDuringEdit","addArticlesToOrder","resetOrderForCopying","fillOutOrderRows","promises","articleFetchPromise","getProduct","quantityToOrder","hasBeenPrinted","createdDate","lowestStatusName","markAsDelivered","useScannerNavigation","showOnlyUndeliveredOrders","markAsUndelivered","isAllowed","isOrderStatusOtherThanDelivered","addDays","dat","valueOf","getDatum","isCompleted","deliverOrderWithDate","createOrderRows","getVariant","variantDetails2Name","orderRowArticleVariantIds","orderToSave","createWholeOrder","responseData","setOrder","updateWholeOrder","orderToSet","currentArticleId","orderIsSaved","approveMessage","hasOrderType","hasCurrency","hasDestination","hasFromLocation","hasCompany","hasCurrencyRate","fakedOrderArticle","LowestSystemStatusAmongRows","missingArticleVariants","artVar","missingOrderRows","missingOrderRow","downloadLabels","fakedOrderArticles","or","preExistingOrderArticle","fakedOrderRow","preExistingOrderRow","deliveryPlanTemplate","EditDeliveryPlanningDialogController","deliveryPlanTemplateCopy","getRowStyle","setLeadTime","recalcLeadTime","changeDateAfterLeadTime","errorLeadTime","leadTimeInDays","plan","nextPlanId","plannedDate","setNextId","sortAdd","nextPlan","sortOrder","nextStage","stage","prevStage","treatAsUTC","setMinutes","getMinutes","round","OrderDeliveryPlanningController","deliveryPlans","deliveryPlansCopy","selectedDeliveryPlanCopy","isEditingPredicted","isEditingConfirmed","recalculate","recalculatedDifference","showPlanned","goBackToOrderView","savePlan","undoPlan","editSavedPlan","getBackgroundColor","getPredictedBackgroundColor","getPredictedButtonBackgroundColor","getConfirmedBackgroundColor","saveMainComment","editingAny","editPredicted","editConfirmed","doRecalculateDiffrence","selectRow","showDifferece","isSelected","canConfirm","canUndoConfirm","canChangePredicted","isLeadTime","mainComment","initMainComment","reloadDeliveryPlan","mainCommentData","getOrderDeliveryPlan","confirmedDate","predictedDate","isEdit","saveOrderDeliveryPlan","completed","createMultipleInternalOrders","createPurchaseOrder","deleteOrder","deleteOrders","downloadAsCsv","downloadDeliveryDocument","downloadLabelsForDate","downloadPickingList","downloadTransitReport","getArticleCollections","getByOrderNumber","getDeliveryDates","getWholeDeliveryDates","getMultipleOrderPdf","getMultipleOrderCsv","getMultipleOrderPickingListPdf","getPacksForArticle","getPurchaseOrder","getPurchaseOrders","getStores","updatePurchaseOrder","updateOrderNote","sendMainCommentData","templateId","orderPlannedDate","orderPlannedDeliveryDate","doRecalculate","planData","sendPlanData","getAllOrders","purchaseOrder","barcodesList","modifiedDeliveryPlanningTemplate","sendOrderData","newStageDate","requestObject","barcodes","deliveryPlanningStages","orderIds","DEL","timeProximity","timeType","ids","incomingRequest","includeStorageLocation","includeIsPhotographed","locale","grouping","reportParameters","includePrices","onlyUndelivered","showUndeliveredOnly","onlyUnprinted","showUnprintedOnly","onlyUnapproved","showUnapprovedOnly","monthBack","getAllOrdersError","wantedTypes","note","externalOrderReference","orderData","jsonorder","toggleDisplay","displayComponent","translateDeliveryRowType","stockTransaction","accountingDate","rowType","gridPostInitialization","previousValue","flexGridData","dr","summarizedOutdeliveredQuantity","rowTotal","rowTotalDeliveredQuantity","rowTotalString","deliveryDocumentDownloadDialogService","labelPrintingDialogService","updateOrderNoteDialogService","printPickingListDialogService","labelPrintingDialogVisible","scrollToSection","scroll","goToOrderDelivery","goToDeliveryPlanning","getOrderAsPdf","getOrderAsCsv","getOrderLabels","showLabelPrintingDialog","showPrintPickingListDialog","selectOrderArticle","goToModifyOrder","goToCopyOrder","calculateDeliveredCost","orderNote","success","selectedOrderArticle","deliveredCost","oRow","dRow","onSearchTermChanged","onOrderSelected","flexGridCurrentlySelectedItem","orderSearchGrid","showAllOrderTypes","scannerInput","contextMenuVisibility","useMonthsBack","gridInitialization","gridSelectionChanged","shouldShowInventoryReasonHeader","changeToStoreOrderSearch","changeToInternalOrderSearch","changeToAutoOrderSearch","changeToAutoOrderNormalSearch","changeToAutoOrderInternalSearch","changeToInventoryOrderSearch","changeToReturnOrderSearch","changeToAllOrderSearch","contextMenuEdit","contextMenuDeliver","contextMenuCopy","contextMenuGetAsPdf","contextMenuGetAsCsv","contextMenuPrintLabel","contextMenuDelete","contextMenuUndo","togglePrintMode","printSelectedOrders","printSelectedOrdersCsv","printSelectedOrderPickingLists","deleteSelectedOrders","isAllowedToDeleteSelected","hideContextMenuListener","setContextMenuShowAll","keydown","enterOrderByScannedBarcode","setInitialOrderTypes","onlyScan","differenceWith","isEqual","currentOrderListing","printModeType","showSelection","disablePrintMode","getSelectedOrderIds","allowedToDelete","collecitonView","areAllOrdersDeleteable","isDeleteable","flex","host","hostElement","contextMenuListener","jqContextMenu","ht","hitTest","pageX","pageY","CellRange","css","clientX","clientY","clickedRowNumber","edit","getAsPdf","getAsCsv","printLabel","undo","scannedCode","destinationIsOk","fromLocationIsOk","MainOrderSearchController","showUndeliveredOnlyInit","showUnprintedOnlyInit","showUnapprovedOnlyInit","loadOrders","afterGetAllOrders","isElasticSearchEnabledTenant","formatPlannedDeliveryDate","articleIds","articlesGrid","captureArticlesGrid","selectArticle","loadPurchaseOrderData","updateAddedArticlesCollection","recalculateArticleTotals","refreshArticlesGrid","addedArticle","ar","otbGrid","companyBudgets","captureOtbGrid","recalculateBudgetData","articleCollection","collectionFiltered","budget","locationGrouped","groupLocation","totalOrderedQuantity","totalOrderedCost","orderedCost","costPriceThisOrder","quantityThisOrder","totalCost","budgetQuantity","budgetCost","openToBuyQuantity","openToBuyCost","openToBuyPercentage","totalsElement","isTotalsRowElement","isNewPurchaseOrder","totalsRow","currentLocation","budgetRow","budgetRows","selectedColorVariant","selectedArticle","onPurchaseOrderChanged","distributionGrid","highlightForeGroundColor","highlightBackgroundColor","summaryCellBackgroundColor","totalQuantityToDistribute","packs","selectedPack","captureDistributionGrid","cellEditEnded","distributeBudgetQuantities","recalculateTotals","recalculateDistributionGridTotals","getAndApplyBudget","setupGridColumns","setupGridData","getArticlePacks","configureGridItemsFormatter","locationColumn","colorColumn","budgetColumn","totalQuantityColumn","sizeVariants","getSizeVariants","sizeVariant","rowTotalColumn","locationsToProcess","addedLocation","rw","isDistributionRowElement","articleName","foundOrder","foundRow","foundOrderArticle","updateLocalPurchaseOrder","writeUpdatesToPurchaseOrder","newOrderRow","columnTotalsRow","colorRow","columnQuantity","colorsRow","rowQuantity","getColorVariants","colorVariants","fontWeight","totalDistributionQuantity","totalSizesDistributionQuantity","totalsSizesRowElement","totalsSizesRowElementKeys","floor","setGridBudgetValues","distributionRow","packArticleVariants","packArticleVariant","rd","StockLogisticsApiService","stockLogisticsHasBeenCreated","toggleExtraOptionsVisibility","createStockLogistics","stockLogistics","getByArticle","getResponse","oldStockLogistics","stlog","stockLogistic","stLog","newEmptyStockLogistic","orderingPointMax","saveStockLogistics","postError","getError","articlevariant","orderingPointMin","packSize","quantityInTransit","monday","tuesday","wednesday","thursday","friday","saturday","sunday","onColorSelected","colorsChoiceAndTotalsGrid","colorsAndTotalsRows","captureColorChoiceAndTotalsGrid","selectColor","colVar","colorName","colorVariant","purchaseOrderResolver","purchaseOrderId","PurchaseOrderController","selectArticles","purchaseOrderChanged","recieveArticles","generateEmptyPurchaseOrder","initializeOrderEditing","minimizedPurchaseOrder","removeUnnecessaryPurchaseOrderData","newPurchaseOrder","goesThroughStorageLocation","storageLocation","orderChange","orderChangeDate","newOrder","PurchaseOrderAnalysisApiService","getPurchaseOrderAnalysis","getSupplierBriefs","getArticleCollectionBriefs","getMainGroupBriefs","suppliers","mainGroupResolver","articleCollections","articleCollectionResolver","PurchaseOrderAnalysisController","purchaseOrderAnalysisFilterDialogService","purchaseOrderAnalysisArticles","purchaseOrderAnalysisArticlesLength","completeListOfPurchageAnalysisRows","showWeeks","showProduct","allMainGroups","weekLimit","selectedWeekLimit","keepProductTogether","numberOfResultsPerPage","selectedMainGroup","showAllCollections","ac","includeInactive","selectedSupplier","selectedArticleCollection","selectedNumberOfResultsPerPage","toggleShowProduct","canCreateOrder","createOrder","calculateMonth","toggleArticleRows","sumRowsWeek","sumRowsMonth","sumQuantityToOrder","sumTotalQuantityToOrder","sumWarehouseStock","sumStoreStock","sumOrderedQuantity","sumWeeksLeftInStock","sumMonthsLeftInStock","sumRowWeeksLeftInStock","sumRowMonthsLeftInStock","weeksLeftInStockAfterOrder","monthsLeftInStockAfterOrder","clearFilter","filterAnalysisRows","averageSalesPerMonth","averageSalesPerWeek","showChangedWeekAverage","showChangedMonthAverage","showFilterDialog","goToFirst","goToPrevious","goToNext","goToLast","getPageNumber","loadPurchaseOrderAnalysis","pageNumber","previous","last","reloadArticles","refilterArticles","includeAllArticleCollections","completeListOfArticleVariants","showRow","mainGroupId","weeksLeftInStock","mg","mainGroupCode","mainGroupDescription","listOfArticles","productNumber","productName","averageSales","weeksLeft","currentWarehouseStockQuantity","monthsLeft","week1","week2","week3","week4","week5","week6","week7","week8","week9","week10","week11","week12","weekNo","monthNo","currentStoreStockQuantity","toFixed","PurchaseOrderSearchController","purchaseOrders","onlyOrderChangeOrders","IntrastatReportsController","Rms2ReportsApiService","getIntrastatReport","reportRequest","fromDeliveryDate","toDeliveryDate","content","TransitReportsController","selectedCompanies","printLanguage","getTransitReport","showWarning","transactionId","crypto","randomUUID","deliveryRequest","lineItem","closeDelivery","orderRowIds","FileDataImportApiService","ArticleImportController","JSonAdaptedSheetData","inDataColumnNames","articlesOrdersImportRequest","articlesOrdersImportRows","selectedCollection","isCurrent","mapping","articleDescription","variant1Name","variant2Name","previousPrice","itemGroupString","subCategory","articleTypeString","departmentCode","articlesOrdersImport","sendRequestData","saveMapping","hasError","getArticlesOrdersImportColumnMapping","columnName","hasNoCollectionCode","hasNoBarcodeMapping","hasNoCompany","extractInDataColumnNames","createRequestData","mappingKeys","rowObject","requestDto","mapKey","mapValue","mappingRequest","setArticlesOrdersImportColumnMapping","createArticlesOrders","importFileId","showErrorToaster","sheetData","ArticleAddNewArticleVariantDialogService","variantGroups","articleObject","ArticleAddNewArticleVariantDialogController","VariantsApiService","selectedVariantGroup","selectedVariant","sizes","colors","isBarcodeGenerationAllowed","fromSizeOption","newArticleVariants","newColorName","newSalesColorName","colorError","newArticleCollection","newPurchaseCost","newSalesPrice","newPreviousPrice","resetValuesFromArticle","updateValues","removeVariantDetail","updateFromSizes","addSelectedVariant","validateNewColor","validateSizes","validateBarcode","anyVariantsSelected","anyErrorOnVariants","hasWarning","isAddButtonDisabled","getErrorTooltip","addArticleVariantsToProduct","addWatchesForSelect","addUniqueColors","addUniqueSizes","firstInit","variantGroup2","vg","brandCategory","severity","messageKey","colorObj","initializeNewArticleVariants","fromSizes","sortedSizes","sort","b","addNewArticleVariant","atIndex","removeable","salesColour","useThisVariant","isRemoveable","errorBarcodeGenerationNotAllowed","existingColor","sizesOnColor","newArticleVariant","resetValues","shouldClose","newAv","select","normalizeString","newArtVar","sizeId","errorOnSize","sizeExist","checkErrorOnVariant","errorBarcodeExists","errorBarcodeDuplicate","checkIfBarcodeOnSelectedArticle","checkIfBarcodeExistsAlready","checkIfBarcodeDuplicatesInNewVariants","filteredAVlength","filteredAVBlength","articleVariantBarcodes","checkIfBarcodeExists","variantDetails","retVal","r2","ArticleChangeItemGroupDialogService","ArticleChangeItemGroupDialogController","FileOperationsApiService","selectedArticleCopy","newArticleVariantsForNewSuppliers","hasChanged","isNewItemGroup","isNewSupplier","changesToSupplier","includeSupplierPrices","availableSubCategories","availableDepartments","newSuppliers","sameSuppliers","removedSuppliers","changeItemGroup","copyToAllPrices","saveNewItemGroup","setSupplierData","copyAllNewVariantsForSupplierPrices","loadItemGroupData","getItemGroup","loadMainGroupData","preferredSupplier","newSupp","oldSupp","sameSupp","Boolean","itemGroupCode","setDefaults","getMainGroup","subCategories","subCategoryCode","departments","department","resolveIntrastats","selectDefaultDepartment","selectDefaultSubCatgory","selectDefaultAccounts","variant2","selectDefaultVat","selectDefaultIntrastat","selectDefaultVariantGroup","selecteDefaultIsVariant","selectDefaultSalechannels","supplier","newVariant","preferredSupplierId","intrastats","unionBy","intrastat","internalDescription","intersectionBy","discountAccount","salesAccount","groupId","variantGroup","changeVariantGroup","sourceArticleVariant","newItemGroupId","newPreferredSupplierId","newArticleVariantSupplierPrices","salesChannelsIds","artVarSupp","newSupplierId","itemGroupLongName","ArticleChangeVariantDetailDialogService","articleChangeVariantDetailObject","getArticleChangeVariantDetailObject","ArticleChangeVariantDetailDialogController","changeVariantDetailObject","articleVariantDetailObjects","dobj","newVariantDetailName","anyError","isValidating","saveNewVariantDetails","anyChanges","getColourText","validate","newVariantDetailObject","withNewObj","variantDetailObject","hasIntersectingColours","coloursOnArticleVariant","aColours","bColours","intersecting","productId","articleVariantDetailObjectsChanged","changeArticleVariantDetail","colours","cutoff","returnString","ArticleLabelsPrintDialogService","getProductStocks","ArticleLabelsPrintDialogController","print","printData","flexGridIsEditing","submittingEnabled","stockData","stockLocations","getStockDataFromLocation","selectedLocationChanged","newLocation","relatedStock","getStockFor","variantDetail1Name","variantDetail2Name","startLoadingSpinner","labelsRequests","totalQty","column","downloadArticleVariantLabels","stopLoadingSpinner","ArticleNewIntrastatDialogService","ArticleNewIntrastatDialogController","saveIntrastat","saveNewIntrastat","itemGroupsResolver","articleCollectionsResolver","salesChannelsResolver","productClasses","productClassesResolver","currenciesResvolver","defaultCurrencyResolver","hasSimpleWms","hasSimpleWmsResolver","metaFieldValues","metaFieldValuesResolver","metaFieldsResolver","articleResolver","getItemGroupFlats","getArticleTypes","getProductClasses","getMetaFieldValues","getMetaFields","ArticleController","ProductService","colourChangeDialogService","environment","rowSupplierPricesData","articleChangeCount","selectedArticleVariantFilter","selectedSupplierFilter","supplierRowData","isNewArticle","searchedVariant","mayReadStockLogistics","stocklocations","showStocklocationsTab","tenantsWithStocklocationTab","tenantsWithoutPriceListTab","firstTimeLoadOfPrices","priceListPriceDisplaySelections","label","priceListPriceDisplaySelection","getMargin","initSupplierPricesGrid","downloadArticleLabels","openLabelsModal","openItemGroupModal","openNewIntrastatModal","addAdditionalArticleVariants","isNewWithItemGroup","loadSuppliers","changeToArticleTab","changeToArticleVariantsTab","changeToSupplierPricesTab","changeToBarcodesTab","changeToStocklocationsTab","changeToPriceListsTab","changeToMetaFieldsTab","loadSupplierPricesGridData","filterSupplierRowData","filterArticleVariantData","calculatePurchasePrice","calculateCostPrice","copyToAllVisibleSupplierPrices","getStockLocations","updateAllArticleVariantHeights","updateAllArticleVariantLengths","updateAllArticleVariantWeights","updateAllArticleVariantWidths","updateAllArticleVariantMeursingCodes","updateAllIntrastats","updateAllArticleVariantCollections","isSearchedVariant","showPriceListsTab","hasCurrencyConversions","productStateGo","openColourChangeModal","isAlreadyPersisting","unsubEvent","$digest","unsubSaveMetaFieldsEvent","upsertMetaFields","unsubSaveMetaFieldValuesEvent","upsertMetaFieldValues","currentArticleCollection","searchedBarcode","bc","bc2","initArticleVariantBarcodes","resolveAccounts","canReadPrices","loadPrices","getProductPrices","productPrices","variants","pl","priceListId","priceListName","priceListCode","getProductStockLocations","items","variantId","storageLocations","isPhotographed","supplierList","origValue","variantHeight","productHeight","variantLength","productLength","variantWeight","productWeight","variantWidth","productWidth","meursingCode","supplierRow","initFilters","uniqBy","variants1","selectedVariant1","variants2","selectedVariant2","variantDetail1Id","variantDetail2Id","resetSupplierPricesGridWithData","sumCountBarcodes","barcodesZerofill","prefSupp","vatMultiplier","brv","saveNewArticle","updateArticle","updateProduct","createProduct","initSupplierPricesGridData","supplierPricesRowdata","supplierPriceRow","companyRows","filteredRows","newRow","alternativeProductNumber","existingRow","createMissingArticleVariants","allVariant1Details","allVariant2Details","missingVariantCombinations","vc","sourceRow","targetRow","stringState","variantDetail1s","variantDetail2s","gridData","canAddNewColor","gridEditTypes","loadGridEditTypes","selectedGridEditType","changeGridEditType","getNewColorInputStyle","updateVariant1","getVariant1EditStyle","openAddArticleVariantDialog","isAllowedToChangeColoursOnProducts","constructGridData","articleVariantArray","populateVariantDetailsArrays","artVars","currentColorArray","varDet2","isGeneratedArticleVariant","setCanAddNewColor","alreadyExistingVariant","gridEditType","varDet1","newVariantDetail1Name","firstArticleVariantId","isDuplicate","isDetailNameDuplicate","gridRowArticleVariant","onArticleVariantUpdated","changeCount","handleMultipleArticleVariants","inputBoxDisplayValue","inputValueChanged","reloadInputBoxValue","ArticlesController","goToNew","PricelistsApiService","PriceListController","newPrice","removeOverridePrice","foundExistingPrice","loadPriceForCurrentLocation","defaultLocation","relevantArticleVariantPrice","articleVariantPrices","articleVariantPrice","updateOverridePrice","PriceListManagementController","mainGroupsResolver","isNewBrand","brandCategories","brandCategoriesResolver","barcodeTypes","barcodeTypesResolver","tenantConfig","tenantConfigResolver","variantGroupsResolver","salesChannelResolver","brandResolver","BrandsApiService","getBrand","getBrandCategories","getBarcodeTypes","getTenantConfig","getVariantGroups","BrandController","brandCopy","selectedMainGroups","removedCompanies","addMainGroups","removeCompany","saveBrand","isBrandCodeValid","isBrandCategoryValid","isBarcodeTypeValid","isBrandDescriptionValid","createItemGroups","saveNewBrand","updateBrand","createBrand","tempMainGroups","igrp","isBrandCodeAlreadyAssigned","assignedBrandCodes","brandCode","articleBrandCodeLength","barcodeType","brandDescription","addedCompanies","brandsResolver","BrandsController","selectedBrandId","sortingKey","sortingDesc","sortBrands","loadBrands","businessarea","isNewBusinessArea","businessareaResolver","BusinessAreasApiService","getBusinessArea","businessareaId","BusinessAreaController","businessareaCopy","saveBusinessArea","deleteBusinessArea","isBusinessAreaCodeValid","saveNewBusinessArea","updateBusinessArea","createBusinessArea","getBusinessAreas","businessareas","businessareasResolver","BusinessAreasController","selectedBusinessAreaId","loadBusinessAreas","selectSameTwiceAllowed","articlesToExclude","onArticlesRetrieved","searchResultArticles","articlesToAdd","refreshArticles","addArticles","getProducts","excludeList","itemGroupInlineController","variantGroup1s","variant1","variantGroup2s","departmentsResolver","DepartmentsApiService","getDepartment","departmentId","DepartmentController","departmentCopy","subCategoryId","getPage","DepartmentsController","selectedDepartmentId","totalRows","pageChanged","loadDepartments","importFile","importFileResolver","getImportFile","ArticleImportEditorController","overviewGrid","articleGroupingsGrid","intrastatCodeLength","oldArticleGroupingRowValues","warningColor","importFileCollection","orderInfo","collectionCodes","itemGroupNamesAndCodes","articleTypeNames","captureOverviewGrid","saveImportFile","saveAndFinalize","wjAutoCompleteSetDefaultValue","setWjDefaultItemGroup","setWjDefaultArticleType","getAlternativeArticleNumberStyle","getItemGroupStyle","getArticleTypeStyle","getColorVariantStyle","getSizeVariantStyle","getBarcodeStyle","getCollectionStyle","getPricesStyle","getIntrastatStyle","getDepartmentStyle","distinctAltArticleNumbers","distinctArticleNames","altArticleNumberChange","articleNameChange","changeAllAltArticleNumbers","changeAllArticleNames","rowsGroupedByArticle","captureArticleGroupingsGrid","registerOldArticleGroupingInfo","copyArticleGroupInformationToAllRelatedRows","distinctColors","colorChange","changeAllColors","rowsGroupedByColor","collectionChanged","itemGroupChanged","articleTypeChanged","switchToOverview","switchToArticles","switchToArticleVariants","switchToColors","switchToSizes","switchToSubCategories","viewVisibility","overview","setIsEditingTrue","setIsEditingFalse","isFileDataOkay","isBarcodeOnWrongArticle","showWarningToaster","isAnyBarcodeOnWrongArticle","printDebug","tempvar","containsCompany","itemGroupShortName","shouldGenerateOrder","validateOrderInformation","applyScope","articleTypeName","setVisibilityToNone","refreshOverviewGrid","constructDistinctArticleData","groupRowsByArticle","constructDistinctColorData","groupRowsByColor","importRow","updateArticlesOrdersImportFile","updateAndFinalizeArticlesOrdersImportFile","propertyName","startingItem","cellItem","itemsWithSameBarcode","existsDifferentArticleWithSameBarcode","uniqueObjectsWithAltArticleNumbers","uniq","uniqueObjectsWithArticleNames","fullArticleGrouping","getArticleGroupingKey","groupingKeys","rowsToChange","currentEditItem","rowsToUpdate","rowToUpdate","uniqueObjectsByColor","selectedItem","returnValue","articleNumberIsntTheSame","articleDidntExistButArticleVariantDid","articleIdIsntTheSame","someRowsAreWithoutQuantity","someQuantitiesAreMalformed","ImportFilesListController","loadImportFiles","importFiles","editImportFile","deleteImportFile","getImportFiles","importId","deleteArticlesOrdersImportFile","deletedItem","IntrastatApiService","getIntrastats","getIntrastat","deleteIntrastat","isNewIntrastat","intrastatResolver","intrastatId","IntrastatController","intrastatCopy","intrastatsResolver","IntrastatsController","selectedIntrastatId","loadIntrastats","attributeVisibility","meursing","isNewMainGroup","variantsResolver","subCategoriesResolver","businessAreas","businessAreasReasolver","MaingroupsApiService","getVariants","getDepartments","getSubCategories","MainGroupController","mainGroupCopy","addBrands","saveMainGroup","isVatValid","isMainGroupVatValid","isMainGroupCodeValid","isMainGroupDescriptionValid","filterVariant1","preferredVariantGroups2","saveNewMainGroup","updateMainGroup","createMainGroup","tempBrands","isMainGroupCodeAlreadyAssigned","assignedMainGroupCodes","articleMainGroupCodeLength","MainGroupsController","selectedMainGroupId","sortMainGroups","loadMainGroups","onSearchContextChanged","defaultSalesChannel","salesChannelDescription","defaultArticleCollection","shouldGetOnlyNewArticles","shouldGetOnlyCurrentArticles","shouldGetOnlyArticlesWithSetPrices","shouldGetOnlyArticlesWithVolumeDiscounts","minPrice","maxPrice","usePriceRange","selectedSalesChannel","search","shouldOnlyGetArticlesWithManualPrices","shouldOnlyGetArticlesWithVolumeDiscounts","getProductIds","searchContext","saleschannelId","PricelistsHelperService","editorArticles","priceListHeads","useVariantDetail1Level","useVariantDetail2Level","volumeDiscounts","showVolumeDiscountRules","itemsPerPageAlternatives","priceListSort","handlePriceChange","loadArticles","clearArticles","showSku","showBarcode","getVolumeDiscounts","volumeDiscount","savePriceListEditorArticles","priceListItem","editorArticle","priceRangeToUpdate","priceListPrices","priceListPrice","fieldName","isCalculatedPrice","priceList","priceListHead","exchangeRate","originalPriceMin","priceFactor","originalPriceMax","isSystemPrice","recalculateRowPrices","getPriceListEditorArticles","editorArticlesTotal","priceRangeItem","maxPriceFieldName","minPriceFieldName","onPriceRangeItemChanged","inputBox","oldPriceRangeItem","valueBeforeEditing","inputBoxFocused","inputBoxBlurred","handleInputChange","captureInputBox","getInputBoxStyle","handleKeypress","markForRemoval","constructDisplayValue","previousMaxPrice","previousMinPrice","storePriceRangeItem","storeInputValue","inputValueToNumber","toNumber","revertInputValue","ib","charCode","revertPriceRangeItem","shouldBeDeleted","isPriceOnAnyPriceList","changeVolumeDiscount","volumeDiscountAllowed","selectedVolumeDiscount","firstVolumeDiscount","generatePlaceholderVolumeDiscount","placeholderVolumeDiscount","uniqueVolumeDiscounts","firstLoop","PriceListEditorController","selectedArticleIds","selectedArticleCollectionId","selectedSalesChannelId","searchContextChanged","pricelist","isNewPricelist","psychologicalPrices","psychologicalPriceResolver","customerGroups","customerGroupsResolver","pricelistResolver","getPricelistBrief","pricelistId","getPsychologicalPrices","PricelistController","pricelistCopy","isPricelistCodeValid","isPricelistNameValid","isSalesChannelCodeValid","hasChosenCurrency","savePricelist","leastNetProfitPercentage","psychologicalPrice","saveNewPricelist","updatePricelist","createPricelist","pricelistCode","salesChannelCode","getPricelist","getPricelistBriefs","PricelistsController","selectedPricelistId","loadPricelists","MainProductsController","importType","onImportFileChanged","FileDataImportApiServiceV2","showReload","reloadFile","goToOrder","goToEditor","handleImportFileChanged","importFileName","revalidate","deleteProductImportFile","dateModel","dateMin","dateMax","columnNames","columnModel","columnOrderBy","columnItemRenderer","columnFilterBy","columnPlaceholder","multiplicity","mandatory","filterColumn","resolveRenderer","columnRenderItem","resolveSelectRenderer","query","getSelectFilter","choiceModel","choiceOrderBy","choiceItemRenderer","choiceFilterBy","choicePlaceholder","filterChoice","choiceRenderItem","suppliersResolver","orderCollections","orderCollectionsResolver","ProductImportController","$sce","importFileType","importSku","usePricesFromExistingProducts","forPurchaseCost","forSalesPrice","forPreviousPrice","importFileColumnNames","importMapping","productImportRequest","importRows","orderCollection","errorList","assumptionList","readyForSave","readyForImport","useMainGroupAndBrand","isAllowedToImportSku","handleImportFile","saveSupplierMapping","validateImportFile","mandatoryAccordionAvailable","mappingsAccordionAvailable","confirmGoToEditor","changeToImportNewFileView","changeToUseExistingFileView","isPurchasingCurrencyCodePopulated","getPricesFromProductWarningMessage","coll","getColumnMapping","filteredKeys","dbColumnNames","nameStr","newColumn","matchedColumns","fileCol","dbColumns","dbCol","dbc","matchedCol","fileColumn","companyCode","locationCode","articleCollectionCode","orderCollectionCode","foo","trustAsHtml","cleanColumnNames","extractImportFileColumnNames","sheetIndex","keyIndex","origKey","keyStr","mapCol","externalSku","supplierSku","countryCode","saveColumnMapping","validateMandatoryFields","columnsToCheckForEmptyFields","importMappingColumnsToCheck","errorStr","addErrorList","findMultipleSeparatorsPattern","findMultipleSeparatorsRegExp","findLastCommaPattern","findLastCommaRegExp","findNonDigitCharactersPattern","findNonDigitCharactersRegExp","findFirstCommaAndAllNumbersBehindItPattern","findFirstCommaAndAllNumbersBehindItRegExp","addAssumptionList","canParseDate","outputErrors","ass","assumption","assumptionMessage","isImportingSku","requestRowDto","createProductImportEntry","updateSummary","showSummaries","summaries","recalculateSummaries","count","products","productVariants","variant1s","variant2s","selectionOptions","groupRow","editProperty","onSelectionChanged","onFocus","onBlur","filterFunction","backgroundClass","numberOfResults","placeholderModel","localSelectionOptions","selectionChanged","refreshSearchItems","dropDownToggled","initializePlaceholderModel","fullName","splitTerms","regexes","selectionOption","regex","take","isOpen","selectFileRows","deselectFileRows","validationErrorChangeCount","numberOfFilteredRows","warnings","hiddenWarningDisplayMessages","showWarnings","showErrors","selectValidationError","hideWarning","getNumberOfShownErrors","getNumberOfShownWarnings","resetWarnings","$watchCollection","validationError","warning","w","displayMessage","hide","fileRows","checkResults","selectedFileRowIds","tenantCurrency","onGroupRowChanged","componentRegistrationHandler","lastFocusedFileRow","lastBlurredFileRow","highlightingPriorities","numberOfLoadingRows","currentDisplayedGroups","itemGroupOptions","CompanyOptions","departmentOptions","subCategoryOptions","articleTypeOptions","articleCollectionOptions","orderCollectionOptions","displayedColumns","displayedGroups","fixedItemsPerPageChoices","gridColumnIdentifiers","groupingLevels","groupingType","currentGroupingLevel","deleteFileRow","textInputBoxFocused","textInputBoxBlurred","fileRowChanged","groupRowChanged","deleteGroupRow","saveFileRow","saveGroupRow","updatePage","updateValue","getRowInputStyle","getRowInputClass","getInputTooltip","getPriceInTenantCurrency","filterChoices","isInputReadOnly","cleanBarcodes","setGridColumnIdentifiers","getDropdownSelections","sortFileRows","setDisplayedRows","validateImportFileWithId","relevantFileRows","fileRow","handleInformationHighlighting","checkImportFileDataExistence","validationResults","handleValidationErrors","res","relevantEditProperties","groupRowsByRelevantEditProperties","groupRowsByImportFileRow","editPropertyName","lastRowExists","isPristine","updateFileRow","resetValidationErrors","newValidationErrors","validationErrorRow","fr","groupings","groupingString","counter","groupElements","tenantCurrencyCode","numberOfRows","gr","sourceCollection","numberOfItems","startPosition","endPosition","onlyCurrentCollections","getItemGroupsOnFileId","companyNamnes","itemGroupElement","selectionElements","departmentDescription","departmentElement","sc","subCategoryName","subCategoryElement","articleSystemType","articleTypeElement","oc","orderCollectionElement","articleCollectionElement","CompanyElement","saleChannelOptions","saleChannelElement","countryOptions","countryElement","relatedCheckRow","chk","importRowId","relatedErrorRows","errorFileRow","setHighlightingAndType","dataCheckRow","highlighting","consolidateDataCheckAndValidationErrors","highlightRow","highlightType","minBy","dataCheckMatchesRow","validationErrorsForThisProperty","properties","validationErrorMatchesRow","getHighestHighlightPriority","shouldShowError","barcodeExists","externalSkuExists","getDataAlreadyExistsErrorMessage","shouldHighlight","alternativeArticleNumberExists","getDataAlreadyExistsMessage","currentPriority","errorSeverity","errorPriority","green","orange","red","white","black","transparent","borderWidth","borderStyle","highlightElement","doubleWidthColumns","caClass","tooltipText","rowCurrencyCode","rowCurrency","foreignPrice","tenantDefaultCurrency","shouldCalculateLocalCurrency","removeDisallowedCharacters","inputElementType","ProductImportEditorController","informationDialogService","importFinalizationDialogService","criticalSeverityLevels","dataCheckResults","importUpdateCount","selectedDisplayMessage","showAdvancedFunctionsPanel","hasAdvancedImportModule","hasAdvancedImport","importGridComponent","resetSelectedImportRows","isAllowedToFinalize","shouldShowValidationErrorsPanel","finalizeImportFile","showFinalizeDialog","updateImportSummary","checkForConnectionWithArticleData","getMissingSiblingRows","getPdfLabels","registerImportGridComponent","removeIncorrectCharactersFromBarcodes","setAllRowsPristine","showColumn","maxResults","field1","field2","columnVisible","vitalChanges","vitalChange","showItemGroupCode","currentItemGroupCode","suggestedItemGroupCode","showAlternativeArticleNumber","currentAlternativeArticleNumber","suggestedAlternativeArticleNumber","showArticleName","currentArticleName","suggestedArticleName","showArticleDescription","currentArticleDescription","suggestedArticleDescription","showVariant1Name","currentVariant1Name","suggestedVariant1Name","showVariant2Name","currentVariant2Name","suggestedVariant2Name","showDepartmentCode","currentDepartmentCode","suggestedDepartmentCode","showSubCategoryCode","currentSubCategoryCode","suggestedSubCategoryCode","connectWithArticleData","productImportId","isAutoGeneratedSiblingRow","refreshView","criticalErrors","getCriticalErrors","fileRowsToSave","updateFileRows","localRow","showErrorsPanel","nonHiddenWarnings","existsSiblingPrices","dialogResponse","priceUpdateGroupingLevel","finalizeImport","errorType","getItemGroupBriefs","getProductVariants","getProductVariantsInTransitValues","getProductVariantsStocks","getRights","getMultipliers","ReadMultipliersToEdit","updateMonthMultiplier","createMonthMultiplier","deleteMonthMultiplier","changeMultiplierOnArticle","getAllArticleVariants","getVariantDetailOptions","getVariantDetailOptionsPaged","showInactiveArticles","metaFieldsData","onlyWithNegativeEshopStock","articleVariantsAndLocationIds","labelRequests","warehouseId","variantDetailType","requestId","stockLogisticsMonthMultipliersDto","isNewPsychologicalPrice","PsychologicalPricesApiService","getPsychologicalPrice","psychologicalPriceId","PsychologicalPriceController","psychologicalPriceCopy","savePsychologicalPrice","isPsychologicalPriceNameValid","addInterval","removeInterval","clearIntervals","priceIntervals","newInterval","resultValue","interval","getNewRowDefaults","fromInterval","diff","saveNewPsychologicalPrice","updatePsychologicalPrice","createPsychologicalPrice","hasPriceIntervals","psychologicalPricesResolver","PsychologicalPricesController","selectedPsychologicalPriceId","loadPsychologicalPrices","Rms2ProductsApiService","getArticleColours","createColourChange","isNewSalesChannel","SalesChannelsApiService","getSalesChannel","SalesChannelController","salesChannelCopy","saveSalesChannel","saveNewSalesChannel","updateSalesChannel","createSalesChannel","SalesChannel","isSalesChannelCodeAlreadyAssigned","assignedSalesChannelCodes","SalesChannelsController","loadSalesChannels","SubCategoriesApiService","getSubCategory","getMaingroups","SubCategoriesController","selectedSubCategoryId","loadSubCategories","SubCategoryController","subCategoryCopy","VariantGroupsApiService","getVariantBriefs","getVariantDetails","getVariantGroupBriefs","getVariantGroup","saveVariantGroup","groupName","variantResolver","variantGroupResolver","variantGroupId","VariantGroupController","variantGroupCopy","orgDetails","addedVariantDetails","loadVariantDetails","unionWith","updateVariantGroup","VariantGroupsController","selectedVariantGroupId","loadVariantGroups","getVariantGroupsByVariantId","getAllVariantDetails","updateVariantDetails","pageSizeDefault","pageSizeOptions","variantDetailsResolver","VariantController","saveVariant","isNewVariant","updateVariant","detailsToUpdate","detail","statisticName","VariantsController","selectedVariantId","quantityGroups","quantityGroupsResolver","isNewVolumeDiscount","volumeDiscountResolver","VolumeDiscountsApiService","getVolumeDiscount","volumeDiscountId","getQuantityGroups","VolumeDiscountController","volumeDiscountCopy","saveVolumeDiscount","addLimit","removeLimit","clearLimits","limits","quantityGroup","newLimit","minimumQuantity","saveNewVolumeDiscount","updateVolumeDiscount","createVolumeDiscount","isQuantityGroupValid","volumeDiscountsResolver","VolumeDiscountsController","selectedVolumeDiscountId","loadVolumeDiscounts","resellerOrder","initCollapsed","updateAddressDialogService","ResellerOrdersApiService","collapseHeader","formatAddress","formatCityAndCountry","isTheSameAddresses","canSetOrderDeliveryAddress","setOrderDeliveryAddress","canSetOrderInvoiceAddress","setOrderInvoiceAddress","requestAddress","deliveryAddress","zipCode","invoiceAddress","strings","address1","address2","onResellerOrderSelected","printLanguageConfirmationDialogService","resellerOrders","resellerOrderPrintList","resellerOrderSaleList","orderStatuses","returnFilter","isFilterOrderForInvoice","filterOpen","filterClosed","filterOrder","filterReturnOrder","isProcessing","loadResellerOrders","loadResellerReturnOrders","loadAllResellerOrders","filterAllOrders","createNewOrder","createNewReturnOrder","containsStatus","printAllResellerOrders","printAllSelectedResellerOrders","printSelectedResellerOrder","checkToPrintList","checkToSaleList","checkAllToPrintList","checkAllToSaleList","getAllCheckedToPrintList","getAllCheckedToSaleList","generateSales","deleteResellerOrder","disableDeleteOrder","disablePrintOrder","createReturnOrderFromOrder","disableMakeReturnOrder","readyForSale","deleteLink","hasDeleteLink","hasPrintLink","createResellerReturnOrderBasedOnOrder","showInfo","createSalesOnClosedFulfillmentLineItems","checkeverything","checked","matchingIndex","printId","checkall","getAllSearchedResellerOrderZip","resellerOrderIds","getSelectedResellerOrderZip","getAllResellerOrdersPdf","getResellerOrders","getResellerReturnOrders","getAllResellerOrders","stores","isCheckBoxAll","statuses","initFocused","navigateToStateName","submitScannerInput","stateName","getResellerOrderByOrderNumber","MainResellerOrderController","resellers","warehouses","selectedReseller","selectedSaleLocation","selectedWarehouse","resellerId","saleLocationId","saveLastUsedSaleLocationId","saveLastUsedWarehouseId","saveLastUsedCollectionId","getWarehouses","lastUsedWarehouseId","getLastUsedWarehouseId","lastUsedSaleLocationId","getLastUsedSaleLocationId","getResellers","lastUsedCollectionId","getLastUsedCollectionId","localStorage","createorderheader_lastUsedSaleLocationId","getItem","createorderheader_lastUsedWarehouseId","createorderheader_lastUsedCollectionId","setItem","externalOrderNumber","ResellerOrderCreateController","canCreateOrderHeader","createOrderHeader","hasSetReseller","hasSetSaleLocation","hasSetWarehouse","hasSetCollection","selectedProduct","minimumAvailableStock","onAppliedFulfillment","allDeliveryDate","IsChecked","displayItems","applyDeliveryDate","getQuantity","getLineItems","displayLineItems","newItem","ordVar","li","lineItemId","resellerName","resellerPriority","plannedDeliverydate","displayItem","orderNum","totalQuantityPerOrder","di","displayItemList","totalQuantityFunc","loadFulfillableOrders","itemsDeliveryDate","ItemIdsAndDates","setVariantFufillmentDeliveryDate","getFulfillableOrders","orderVariants","variantNames","sumFulfillableQuantity","keepRemainder","variant2DetailName","fulfillableQuantity","CreateVariantDeliveryDateDialogService","fulfillableProduct","CreateVariantDeliveryDateDialogServiceController","fulfillmentApplied","itemsToFulfill","CreateVariantFulfillmentDialogService","CreateVariantFulfillmentDialogServiceController","allKeepRemainder","canNotConfirmFulfillmentBecauseOfTooLowStockQuantities","canNotConfirmFulfillmentBecauseOfZeroQuantities","getFulfillableQuantitySum","getQuantitySum","getDifference","getStockQuantity","clearRowQuantities","resetRowQuantities","canResetRowQuantities","clearAllRowQuantities","resetAllRowQuantities","canResetAllRowQuantities","formatDifference","canApplyFulfillment","applyFulfillment","getApplyFulfillmentTooltipText","preventInputLessThanZero","variantList","variant2SortOrder","hasPositiveDiff","hasPositiveTotal","fulfillHasPositiveDiff","nonFakeArtVarId","isFake","canBeAddedToArray","artVarId","varL","stockQuantity","variantName","totalDiff","closeOrderLine","populateVariantList","resultLineItem","lineitem","variant1DetailName","sortedLineItems","ResellerOrderFulfillmentProductsController","fulfillableProducts","filteredFulfillableProducts","fulfillableProductsFilter","pageSizes","selectedPageSize","onSelectProduct","goToProduct","showCreateVariantFulfillmentPopup","showCreateVariantDeliveryDatePopup","filterFulfillableProducts","loadFulfillableProducts","saveLastMinimumAvailableStock","lastMinimumAvailableStock","getLastMinimumAvailableStock","displayArticleNumber","applyFulfillResellerOrders","resellerorderfulfill_lastUsedWarehouseId","resellerorderfulfill_lastMinimumAvailableStock","getFulfillableProducts","product","ResellerOrderManageOrdersController","selectedFulfilledOrdersWarehouse","fulfilledOrders","filteredFulfilledOrders","fulfilledOrdersFilter","openCheck","closedCheck","filterPickPrinted","filterDeliveryPrinted","monthDates","selectedDateMonth","toggleExpandAll","printResellerOrder","printResellerOrderPickingList","getResellerOrderDeliveryNotePdf","printAllResellerOrderPickingLists","filterFulfilledOrders","getLatestPrint","canPick","confirmPicking","canPickAll","confirmPickAll","toggleClosePicking","canPrintDeliveryNote","loadFulfilledOrders","saveLastUsedFulfilledOrdersWarehouseId","expandOrder","lastUsedFulfilledOrdersWarehouseId","getLastUsedFulfilledOrdersWarehouseId","fulfillmentLineItems","pickingConfirmations","fulfillmentLineItemId","pickedQuantity","pickableQuantity","closePicking","confirmFulfillmentLineItemPicking","lineItemEvent","events","allAreTrue","closeAllPickings","printLog","listOfType","dateUTC","isAnyPicked","getResellerOrderOrderPerspectivePickingList","getResellerOrderPdf","getResellerOrderDeliveryNote","resellerorderfulfill_lastUsedFulfilledOrdersWarehouseId","allAreExpanded","ord","showOrderVariants","filterDateMonth","getFulfilledOrders","ResellerOrderManageProductsController","selectedFulfilledProductsWarehouse","fulfilledProducts","filteredFulfilledProducts","fulfilledProductsFilter","toggleExpandAllProducts","toggleExpandAllOrders","filterFulfilledProducts","loadFulfilledProducts","saveLastUsedFulfilledProductsWarehouseId","lastUsedFulfilledProductsWarehouseId","getLastUsedFulfilledProductsWarehouseId","productIds","getResellerOrderProductPerspectivePickingList","resellerorderfulfill_lastUsedFulfilledProductsWarehouseId","prod","showOrders","showOrderRows","getFulfilledProducts","onLineItemChanged","onVariantChanged","excludedArticles","saveLineItem","canModifyLineItems","changeToTab","updateArticlesToExclude","tab","chain","newListItem","fulfilledQuantity","plannedDeliveryDateUtc","variantDetail2SortOrder","lineItemsGroupedByArticle","canModifyLineItem","getVariant1s","getVariant2s","canClearRow","confirmClearRow","removeArticleFromOrder","canDeleteArticleFromOrder","canUpdateWholeRow","updateWholeRow","getProductGrossPriceSum","getVariantGrossPriceAverage","regroupLineItemsOnArticle","sumPrice","sumTotalQuantity","lineItemsGroupedOnVariant1","liGrp","wholeRowAmount","regroupLineItemsOnVariant1","lineItemsGroupedByVariant1","getTotalGrossPriceSum","getProductGrossPrice","getProductQuantitySum","getTotalQuantitySum","getProductUnfulfilledQuantitySum","getFinalAmount","regroupLineItems","sumQty","lineItemsGroupedOnArticle","lineItemArticle","discountDisplayPercent","getVariantQuantitySum","canModifyLineItemDeliveryDate","deliveryDateChanged","setWholeRowPrice","setWholeRowDiscountPercent","showSpinner","avgPrice","wholeRowPrice","wholeRowDiscountPercent","temp","wholeRowFinalPrice","wholeRowDiscount","finalAmount","wholeRowQuantity","initialProductGrossPrice","avgWholeRowDiscountPercent","dateToUtc","milliseconds","getHours","getSeconds","getVariantsForProduct","resellerOrderResolver","getOrderById","ResellerOrderModifyController","setFieldConfirmationDialogService","synchronizationStatus","isSaving","isEditingOrderNumber","editedOrderNumber","canConfirmOrder","confirmOrder","canPrintOrder","printOrder","getResellerOrderCsv","canSetWholeOrderDeliveryDate","canSetWholeOrderDiscountPercent","setWholeOrderDeliveryDate","setWholeOrderDiscountPercent","editOrderNumber","tryToSaveNewOrderNumber","fillOutArticle","lowercase","changeOrderNumber","hasLineItems","deliveryDateUtc","dateValue","setWholeOrderDeliverDate","numberValue","existingLineItem","newLineItem","upsertLineItems","confirm","ResellerOrderSearchController","createReturnOrder","createResellerReturnOrder","getFulfillableLineItems","getReturnOrderById","getOrderHeaderById","getReturnOrderProducts","getSelectedResellerOrderPdf","getResellerOrderDeliveryOrder","getResellerOrderInvoice","setResellerReturnOrderSaleDate","articleVariantDetail1Id","Limit","newOrderNumber","resellerOrderId","ResellerOrderId","NewOrderNumber","resellerOrderNumber","productNumberToExpand","fulfillments","changeToOrderRows","changeToFulfillmentsTab","canPrintOrderPdf","canPrintOrderCsv","shouldShowPrintCsvButton","getResellerOrderInvoicePdf","getResellerOrderDeliveryOrderPdf","getResellerOrderPickingList","DeliveryNoteAvailable","deliveryNoteAvailable","setNoTabSelection","articleGroupedItemLines","getArticleFulfillmentDateRangeString","getFulfilledQuantity","getLeftToBeFulfilledQuantity","getTotalFulfillableQuantity","getTotalAmount","getOrderFulfilledQuantity","getOrderLeftToBeFulfilledQuantity","getOrderTotalFulfillableQuantity","getOrderTotalAmount","expandProduct","AlternativeArticleNumber","lineItemGroups","ArticleName","DisplayArticleNumber","FulfillmentDateRange","FulfilledQuantity","LeftToBeFulfilledQuantity","TotalFulfillableQuantity","AveragePricePerPiece","getAveragePricePerPiece","AveragePriceMinusDiscountPerPiece","getAveragePriceMinusDiscountPerPiece","TotalAmount","LineItems","datesString","fullfillmentDates","fulfillmentDates","dateString","add","minDate","maxDate","totalAmount","average","discountAmountPerItem","shouldUseScannerNavigation","ResellerOrderViewController","ResellerReturnOrderCreateController","ResellerReturnOrderModifyController","invoiceConfirmationDialogService","invoiceConfirmation","canCreateInvoice","SalesApiService","getAllSalesTotals","approveSalesTotal","periodStart","periodEnd","approvalBy","MainSalesController","salesTotalsPagination","salesTotalPaginationResolver","ps","pe","locationTypes","SalesTotalController","salesTotalFilterDialogService","salesTotals","saleTotals","periodStartDate","periodEndDate","shownStatuses","includeApproved","includeForProcessing","includeForReview","toggleApproved","toggleForProcessing","toggleForReview","getSaleTotals","getPaymentTotals","toggleRows","getPeriodPaymentSum","getCalculatedPaymentSum","getSaleVatAmountSum","getCalculatedVatAmountSum","getTotalNetAmountSum","getTotalVatAmountSum","viewApprovedButton","getStatusString","getSaleNetAmountSum","getCalculatedNetAmountSum","showConfirmButton","showRedSaleDiff","showRedCalculatedDiff","totalSaleDiff","totalCalculatedDiff","roundToTwo","showTotalDiffTable","getSalesNumberSum","getNetAmount","loadSaleTotals","compileShownStatuses","reloadRows","refilter","isSameDate","newYear","newMonth","newDay","oldYear","oldMonth","oldDay","currentSaleTotal","totalSales","calculatedNetAmount","calculatedVatAmount","withdrawals","withdrawalAmount","deposits","depositAmount","totalPayments","paymentTotals","calculatedAmount","salesTotal","calculatedNumberOfSales","negativeAmount","negativeVatAmount","netAmount","negativeNetAmount","temp1","temp2","precision","shift","reverseShift","numArray","temp3","temp4","saleTotal","showSum","StockApiService","previousArticleId","previousLocationId","previousArticleVariantId","displayedRows","transGrid","stockTransactions","elementsPerPage","goToReference","showLink","getStockTransactionsForArticleAndLocation","variantDetailId","referenceType","referenceId","referenceDescription","transactionType","stockTransactionType","stockTransactionTypeName","systemTransactionType","groupKey","fullDateTime","reservedQuantity","oldRow","summaryRow","ArticleStocksHistoryDialogService","ArticleStocksHistoryDialogController","colorvariants","stocksResolver","getProductStock","StockArticleController","selectedArticleStocks","variantsGrid","selectedVariantDetail1","lastVariant1RowClicked","selectedFilter","stocksLocations","pickOutUniqueLocations","stocksVariant1s","pickOutUniqueVarDetail1s","locationFilter","variantFilters","shouldDisplayDetails","selectedVariantDetailChanged","setSelectedLocationAndVariant1","filterRowData","shouldShowDetails","getColumnSum","getTotalSum","shouldHaveIsCurrentStyle","shouldNotHaveIsCurrentStyle","updateVariantsGridData","showHistory","selectedVariantDetail1id","variantDetails1Id","selectedLocationId","each","varDetail2","loadVariantsGridData","currentLocationStocks","orderedSum","reservedSum","IsCurrent","unique","sameLocation","varDetail1s","location1","location2","articlesResolver","isModelInventory","isOrderingPoints","StockArticlesController","selectedArticleId","useElasticProductSearch","getSearchTooltipText","onArticleIdWatch","onArticleIdChanged","tooltipString","inventoriesCount","getPendingInventoryCountResolver","InventoryingApiService","getPendingInventoryCount","StockModelInventoryController","totalsGrid","stocksData","inventoriesPending","saveButtonDisable","totals","sumName","theoreticalTotal","inventoriedTotal","difference","inventory","inventoryDescription","deliverImmediately","inventoryDate","inventoryRows","captureVariantsGrid","beginEditing","editEnded","zeroAllQuantities","captureTotalsGrid","contextMenuZeroRow","saveChanges","getFilteredLocations","pollPendingInventoryCount","isNewInventory","loadTime","loadPromise","cancelNextLoad","nextLoad","relatedArticleVariant","specifiedQuantity","inventoryRow","saveProductInventory","dataContents","calculateNewTotals","totalsObject","totalsEntry","variant1TotalsObject","variant1Entry","currentData","headersVisibility","HeadersVisibility","sel","getHeadInfoById","getInventoryItemGroups","getInventoryTypes","createInventory","updateInventory","getInventoryDataForArticle","uploadParseFile","getInventoryRowsRelatedToItemGroup","getInventoryRowsRelatedToArticle","getInventoryRows","approveItemGroupRelatedRows","approveInventoryRow","approveInventoryRows","getInventoryReport","getInventoryMainGroups","getInventoryFileErrors","getInventoryBrands","getMainGroupInventoryRows","getBrandInventoryRows","uploadInventoryFile","queueInventoryForFinalization","inventoryId","inventoryRowId","fileData","StockPickingListController","sortorders","sortOrder2","sortOrder3","showCollection","showDepartment","selectedGrouping","includeArticleNumber","includeStorageItems","includeZeroAndNegativeQuantity","showRestOfLocations","portraitOrientation","getStockPickingList","canPrintStockPickingList","setHours","sortOrder1","readSettingsFromLocalStorage","saveSettingsToLocalStorage","downloadStockPickingList","printStockPickingListSettings","isJsonString","removeItem","settingsStr","json","so","getFilteredBrands","getCollections","SaleThroughputReportsController","includeIsCurrent","selectedCollections","selectedDepartments","switchToCsv","switchToPdf","fileFormatChoice","csv","pdf","getSaleThroughputReport","validateRequest","collectionIds","departmentIds","downloadSaleThroughputReport","downloadSaleThroughputReportPdf","getCompaniesBrief","SoldStockReportsController","companyIds","getSoldStockReport","downloadSoldStockReport","ReportsController","stockEndDate","inventoryDays","selectedInventoryDays","inventoryDayList","includeExternalId","includeBarcode","getStockValueReport","selectedGroupingLevel","stockDate","level","downloadStockValueReport","groupingLevel","printStockValueReportSettings","stockTransactionsResolver","ArticleDetailsController","transactionsGrid","currentVariantDetail1","initGrid","updateTransactionGridGroupings","collapseGroupsToLevel","groupHeaderFormat","timeTypeGrouping","PropertyGroupDescription","groupDescriptions","aggregate","transactionDate","inventoryHead","inventoryHeadResolver","InventoryController","inventoryCorrectionsDialogService","printInventoryReportDialogService","detailsGrid","summarizationGrid","currentItemGroupId","inventoryRowsGrid","inventoryOverviewGrid","inventoryFileErrorGrid","currentlyChosenMainGroupId","currentlyChosenBrandId","uploadErrors","inventoryFileErrors","inventoryRowsAll","autoAcceptLevel","displayLevel","totalValueThreshold","numberOfErrors","showAllErrors","itemGroupInventoryRows","isShowingUploadForm","showUnapproved","showAll","itemGroupTotals","theoreticalBalance","inventoried","differenceValue","inventoryRowTotals","totalValue","overViewGridFilter","totalsGridItems","showInventoryErrors","captureDetailsGrid","setCurrentItemGroup","approveItemGroup","expandArticlesGroups","contractArticlesGroups","openAnalyzeModal","showUnApprovedItemGroups","showApprovedItemGroups","resetItemGroupsFiltering","showUnApprovedInventoryRows","showApprovedInventoryRows","resetInventoryRowsFiltering","hasFileErrors","captureInventoryRowsGrid","displayLevelChanged","autoAccept","sendInventoryRowsForApproval","captureSummarizationGrid","captureInventoryOverviewGrid","captureInventoryFileErrorGrid","fetchMainGroups","fetchBrands","uploadAndParseFile","toggleUploadFormVisibility","acceptInventory","printInventoryReport","loadItemGroupsInventoryRows","openCorrectionsModal","loadInventoryFileErrors","recalculateInventoryRowsTotals","reFetchOverViewGridData","reFetchInventoryRowsGridData","isApproved","updateInventoryRowsGridGroupings","allowMerging","invRow","groupedInventoryRows","inventoryRowsToAccept","mainGroupNames","mgName","invRows","mainGroupName","brandNames","bName","brandName","articleNames","isAutoApproved","theoreticalStockBalance","stockDifference","recalculateItemGroupTotals","summarizedTransactionQuantity","summarizedInventoryRowsQuantity","summarizedCostPrice","setFilterChoiceFalse","mainGroupGrouping","brandGrouping","articleGrouping","articleVariant1SortOrderSortDescription","SortDescription","articleVariant2SortOrderSortDescription","sortDescriptions","updateTotalsGridGroupings","allItemGroups","errorRows","updateLocalInventoryRows","inventoryRowToUpdate","setDetailsGridData","articleNameDescription","variant1Description","sendData","printFormat","ScannerInventoryingController","NewInventoryDialogService","ordersGrid","previouslySelectedInventoryId","openNewInventoryModal","isHidingInventoriesGrid","hideInventoriesGrid","unHideInventoriesGrid","inventoryItem","filterOnUser","MainStockController","ArticleTransferController","locationsGrid","locationsCollection","visibleLocations","minDiffToCreateSuggestion","lowerThresholdQuantity","moveMaximum","adjustWithStockValues","minimumCostPriceThreshold","excludeArticlesWithOrderingPoints","captureLocationsGrid","searchArticles","insertStockQuantities","fetchQuantityInTransitData","submitAndCreateOrders","validateGridRow","preventChangingOfIsOkValue","changeToSearchTab","changeToLocationsTab","changeToRulesTab","selectAllLocations","selectNoLocations","canSubmitAndCreateOrders","hasRowData","isVisible","distributionWeight","locationPriority","outDeliverable","inDeliverable","setVisibleLocations","updatePromise","rowNum","colNum","relatedDataRow","quantityValues","transferQuantityValues","locationNumbers","transferQuantityValue","transferQuantitySum","fromLocationCount","currentQuantityCellValue","columnBindingIsLocationId","columnHeaderIsLocationNumber","columnBindingIsLocationNumberAndDiffMarker","generateArtilcesGridColumns","altArtNumberColumn","variantDetail1Column","variantDetail2Column","checkboxColumn","generateArticlesRowData","isOk","zeroAllGridValues","articleVariantIdsAndLocationIds","insertStocksDataIntoGrid","getByArticlesVariants","removeStocksDataForStockLogistics","adjustStocksDataWithTransferQuantities","createQuantityTransferSuggestions","locationsArticleVariantsLinkStructures","currentTransferObjects","outLocation","fromLocationId","toLocationId","totalSum","transferObject","findMax","findMin","locationsWithMaxQuantity","getLocationsWithEdgeStockQuantity","locationsWithMinQuantity","maxLocation","minLocation","minLocationRelatedStock","costIsAboveThreshold","rowHasTransferValues","relatedRow","quantityInTransits","transitData","tempRowData","allRowsAreValueless","inLocations","loc","locationsAndQuantity","rules","rowDataCopy","rowHasValues","correspondingRowData","colNumber","selectedColumnBinding","hasSelectedValidRows","EshopReplenishmentController","int32Max","stockLogisticsData","quantityInTansitData","handleNegativeEshopQuantities","locationType","locationSystemType","maxTransferValue","minTransferValue","eshops","eshop","normalizationValue","currentEshop","MassHandlingOrderingPointsController","stepHandler","currentStep","steps","mainGroupFilter","brandFilter","collectionFilter","filterIsCurrent","filteredLocations","filteredMainGroups","filteredBrands","filteredCollections","goToNextStep","goToPreviousStep","validSelection","addStartProperties","maingroup","AutoMonthMultiplierDialogService","autoMonthMultipliers","AutoMonthMultiplierDialogController","selectedAutoMonthMultiplier","filterSelectedMultiplier","deleteSelected","createNewToggle","saveOnChange","createMode","enableChangesSavedNotification","translateMonth","allMonthsMultiplier","handleConvertValue","handleConvertValueAllMonths","updateOnAllMonths","fullMonthNames","monthAbbreviation","abbreviation","full","january","february","march","april","may","june","july","august","september","october","november","december","resetAutoMonthMultipliers","sortAutoMonthMultipliers","isArticlesMultiplier","affectedArticleNames","articleNamesWithMultiplier","updateNameProp","updatedMultiplierIndex","multiplier","updatedMultiplier","selectedMultiplier","handleNegativeValue","handelUndefinedValue","multiplierResolver","OrderingPointsController","locationBasedRowData","locationBasedRowCollection","orderPointsGrid","currentEditProperty","initializeAutoMonthMultipliers","formatLocationNames","selectableFromLocations","transferMaxGridDataToStockLogistics","switchToOrderingPointMax","switchToOrderingPointMin","switchToPackSize","generateAutoOrdersForAllStockLogistics","openMultiplierModal","maxPoint","minPoint","isPriority","weekdaychoices","formattedLocation","shouldGenerateAutoOrders","updateOrderPointsGridData","populateSelectableFromLocations","sourceArray","copiedArray","stockLogisticsForCurrentLocation","defaultSize","autoSizeColumn","setCurrentWeekdayChoices","currentLocationStockLogistics","relatedStockLogistic","updateStockLogisiticsWeekdays","newStockLogistics","createNewStockLogistics","getGenerallWeekdayChoice","relatedStockLogistics","returnStockLogistic","weekdayChoices","newStockLogistic","copyFromLocationToStockLogistic","generateAutoOrders","stockLogisticsDtos","autoMonthMultiplier","supplierLabel","currentStockLogistic","currentStockLogistics","getProductsForMassHandingOrderingPoints","selectedMaingroups","selectedIsCurrent","MainStockLogisticsController","SupportApiService","changeBarcode","changeBarcodes","createLocation","deleteProduct","mergeProducts","getLocationTypes","getLocationCategories","getProductBriefs","changeIsGroupSaleArticle","addVariantDetail","addVariantDetails","updateInventoryStatus","createOriginalBalance","getMissingEasyPosReceipts","triggerToChangeLog","SupportController","SupportCaseAddVariantDetailController","variantsToAdd","fulltextInput","autoSortOrder","useListOfItems","newVariantDetails","variantDetailTemplate","overrideAutoSort","updateListOfVariants","saveChange","doAutoSortOrder","convertToLines","splittedValues","newDetail","asciiStringTranslate","theString","cleanedString","charCodeAt","SupportCaseChangeBarcodeController","selectedProductVariant","selectedProductCopy","selectedProductVariantCopy","newBarcode","recieveProduct","productVariantId","removeProduct","$broadcast","SupportCaseChangeBarcodesController","addBarcodeToProductVariant","productVariant","requestArtVar","currentBarcode","br","SupportCaseChangeIsGroupSaleArticleController","isGroupSaleArticle","itemGroupResolver","SupportCaseChangeItemGroupController","selectedItemGroup","supplierIds","SupportCaseChangeVariantDetailController","openEditVariantDetailDialog","locationTypeResolver","locationCategories","locationCategoryResolver","SupportCaseCreateLocationController","locationTypeId","locationCategoryId","selectedLocationType","selectedLocationCategory","resetForm","SupportCaseDeleteProductController","isAllowedToDelete","SupportCaseMergeProductController","selectedToProduct","selectedFromProduct1","selectedFromProduct2","selectedFromProduct3","recieveToProduct","recieveFromProduct1","recieveFromProduct2","recieveFromProduct3","removeToProduct","removeFromProduct1","removeFromProduct2","removeFromProduct3","isAllowedToMerge","toProduct","fromProduct1","fromProduct2","fromProduct3","articleNumber","toProductId","fromProduct1Id","fromProduct2Id","fromProduct3Id","hasToProduct","hasFromProduct1","hasFromProduct2","hasFromProduct3","SupportCaseMissingReceiptsController","selectedStartDate","selectedEndDate","missingEasyPosReceipts","showSequenceNumbers","missingEasyPosSequenceNumbers","missingReceiptSpans","mrs","missingReceipts","mr","sequenceNumber","OriginalBalanceImportController","displayRows","submitOriginalBalance","purchaseCostPerItem","lastInventoriedDate","SupportCasesController","SupportCaseTriggerToChangeLogController","testRun","selectedLocationIds","selectedPriceListId","updateOrderIds","updateCustomerOrderIds","updateProductIds","updateProductVariantIds","updateStockIds","updatePriceListItemIds","changeTab","customerOrderIds","productVariantIds","stockIds","priceListItemIds","hasSetSearchTerm","hasExtraCondition","SupportCaseUpdateInventoryStatusController","selectedInventory","selectedInventoryStatus","inventoryStatuses","inventories","selectInventory","loadInventories","hasSelectedInventory","hasSelectedInventoryStatus","TimedOutLoginDialogController","timer","minutes","seconds","displayValue","errorMessage","refreshSuccess","successCountDownTimer","timerIntervalPromise","refreshSession","recalculateTimer","timeLeft","SuccessCountDownCloseModal","TimeStampsAdministrationDialog","showDialogNewDate","timeStampDayId","locId","timeStampDay","getTimeStampDayById","isAccepted","userTimeStamps","TimeStampsAdministrationDialogController","stampsHistoryGrid","timeStampPairs","showStampsForAllLocations","newInStamp","dateTime","modifyingUser","timeStampType","timeStampSystemType","newOutStamp","captureStampsHistoryGrid","createNewTimeStamp","deleteTimeStampPair","saveTimeStampingDayNote","allowTimeSpanCreation","resetNewTimeStampsTimes","constructTimeStampPairs","inStamps","timeStamp","outStamps","currentInStamp","currentOutStamp","timeSpan","timeStampPair","inStamp","outStamp","span","pair","roundDateToNearestFiveMinutes","coefficient","rounded","updateTimeStampDay","deleteTimeStamp","newInTime","newOutTime","momentNewInTime","momentNewOutTime","momentOldInTime","momentOldOutTime","isAfter","stampIn","stampOut","getTimeStampingUsers","getLatestTimeStampDays","getNotificationMarkedTimeStampDays","getTimeStampDaysInDateRange","attestTimeStampDays","unattestTimeStampDays","getWorkingTime","getTimeReports","updateTimeReport","createTimeReport","downloadExcelFile","getMe","requestData","numberOfTimeStamps","numberOfTimeStampDays","dateRange","timeStampId","timeStampIds","timeReport","locationsResover","TimeStampingManagementController","lastSelectedUser","timeStampsGrid","timeReportsCopy","newTimeReportDatePicker","timeReportsGrid","startDateInitialized","endDateInitialized","timeStampingUsers","timeStampingDays","timeReports","loadTimeStampingUsers","loadTimeStampingDaysForUser","openTimeStampsAdministrationModal","openNewTimeStampDayModal","attestAll","attestTimeStampingDay","unattestTimeStampingDay","getNotificationStyle","mayAttestAll","newTimeStampDayDate","dateDifference","showTimeStampsForDay","timeStampsForDay","captureTimeStampsGrid","getHoursAndMinutes","handleTimeStampDayCellEditEnded","handleTimeStampCellEditEnding","toggleTimeStampDayNotification","showTimeReports","newTimeReportDate","isValidNewTimeReportDate","captureNewTimeReportDatePicker","addTimeReport","captureTimeReportsGrid","getExcelPrintout","rep","timeStampingDayIds","date1","date2","d1","d2","dt","stringHours","stringMinutes","stringRepresentation","stamp","hours","reportsToSend","matchingCopy","reportCopy","workTime","breakTime","matchingReport","isWithinValidInterval","startOfToday","startOf","listOfAddedDates","selectedDate","newTimeReport","allTimeReports","userIds","TimeStampingUsersController","showDialogLoginless","previousTimeStampDays","totalTimeThisMonth","startOfMonth","loginless","UserTimeStampingDialogServiceController","stampHistoryGrid","timeUpdatePromise","jqCurrentTimeElement","timeStampDaysGrid","buttonsAreDisabled","previousTimeStamps","captureStampHistoryGrid","captureTimeStampDaysGrid","updateTimeStamp","changeDisplayedTimeStampDay","currentLocalTime","stampInDisabled","stampOutDisabled","stampCreationRequest","isLoginLessTimeStamping","setTimeStampButtonsAvailability","updateLocalTime","getPreviousTimeStamps","reponse","orderedTimeStamps","currentTimeStampSystemType","SignalDispatcher","SimpleEventDispatcher","fooBar2","unsubscribe","elements","updateSignal","getElements","reqPromise","widgetData","isLoaded","loadWidget","onNewData","onNewDataError","gotoArticle","selectedmaingroup","chart","maingroups","updateSetting","refreshChartModel","maingroupInSetting","labels","points","series","evt","datasetOverride","yAxisID","scales","yAxes","display","ticks","beginAtZero","showTools","addressController","onNew","showNewButton","showFilterDropdown","scope","articleListIsVisible","getShowFilterDropDown","toggleHideArticleList","productChangedListener","afterGetAllArticles","showArticleList","onArticleRemoved","removeArticle","confirmTitle","onConfirmPressed","toggleConfirmationVisiblity","confirmationVisible","contactInfoController","filteredErrorList","filterList","transclude","Service","filterKeys","renderer","getRenderItemNone","getRenderItemSingle","getRenderItemArray","context","property","getDateStringRepresentation","hour","lockChoice","renderItem","addNullValueChoice","choiceCopy","ir","valueName","changeSortOrder","getTooltipText","onSelected","onRemoved","searchResultVariantDetail","createMenuNodes","nav","dashboard","licenseModules","baseModule","stateLink","iconClass","contacts","productModule","budgetModule","economy","orderModule","ecommerceModule","discountManagementModule","inventorying","logisticsModule","analysis","analysisModule","crm","crmModule","administration","economyModule","deliveryPlanningModule","timeStamping","customerGroup","invoiceType","businessArea","returnReason","node","root","branch","hasFocus","shouldRender","getIndentation","getNodeLabel","expanded","toggleMenuExpansion","matchTwoDemand","bootstrapModal","$provide","decorator","bootstrapModalDelegate","$delegate","openFn","spinnerName","random","$debounce","addNewWidget","widget","newWidget","gridsterOpts","margins","outerMargin","pushing","floating","swapping","mobileBreakPoint","resizable","enabled","handles","resize","draggable","drag","saveDashboard","directive","$browser","$exceptionHandler","deferreds","methods","uuid","fn","delay","invokeApply","skipApply","timeoutId","cleanup","methodId","bouncing","equals","debounced","reason","$$timeoutId","$compile","restrict","attrs","newElement","append","selectedLocationNumber","NaN","settingController","settingTemplateUrl","iconClicked","selectedSettingItem","saveSettings","$parent","grep","$close","selectedBusinessArea","parsedSettings","selectedSettingItems","settingsObject","elId","margin","top","right","bottom","left","gridSize","legendElementWidth","buckets","times","timeHacked","draw","colorScale","d3","scale","quantile","domain","range","svg","dayLabels","enter","timeLabels","heatMap","transition","legend","quantiles","wgtChartController","googleChartApiPromise","dataModel","visual","metaData","activateChart","dataPromise","api","apiLoadSuccess","chartColorAssocArray","_data","animation","easing","is3D","keepAspectRatio","_array","_seriesColor","__date","google","visualization","DataTable","addColumn","addRows","dataTable","getMySeriesColor","slices","chartArea","fontSize","isStacked","j","__marray","locationGroup","bar","groupWidth","highlightOnMouseOver","maxDepth","maxPostDepth","minHighlightColor","midHighlightColor","maxHighlightColor","minColor","midColor","maxColor","headerHeight","showScale","useWeightedAverageForAggregation","businessAreasResponse","initChart","drawChart","gridster","charts","setOnLoadCallback","formatHtmlTooltip","totalSalesPrice","toLocaleString","totalSalesPercent","dataArray","salesBusinessAreaData","sliceVisibilityThreshold","tooltip","showColorCode","isHtml","PieChart","$id","getDifferenceColour","anyVisitors","numberOfVisitors","autoOrderData","originalWidgetData","distinctBrandIds","distinctBusinessAreaIds","filterData","newWidgetData","businessAreaIds","orderAutoOrder_OrderBy","orderAutoOrder_Reverse","objectName","directiveFactory","gotoImportFile","printImportFile","editableDecimal","editableDirectiveFactory","directiveName","inputTpl","enterAsTab","bind","parents","which","shiftKey","eq","opt","loadSpinner","usSpinnerService","spinnerMessage","loaders","spin","percentInput","onViewChange","viewValue","newValueParsed","newValueUnparsed","onModelChange","modelValue","ele","ctrl","$parsers","$formatters","restrictAccess","compile","access","permission","elm","ignore","smartDecimal","DECIMAL_REGEXP_1","DECIMAL_REGEXP_2","DECIMAL_REGEXP_3","DECIMAL_REGEXP_4","$setValidity","el","_window","_mb","trigger","_this","siblings","is","removeClass","w_h","addClass","appendTo","off","insertAfter","classes","uiToggleClass","targets","magic","patt","cn","multiPartFilter","searchables","out","minimumInputLength","ks","searchableTerms","matchingItems","searchTermsThatMatches","propsFilter","itemMatches","importFileData","updateImportFile","onlyCurrent","fileId","downloadPdfFile","savedTimestamps","apiFactoryGet","apiFactoryCreate","apiFactoryUpdate","apiFactorySave","apiFactoryDelete","apiRms2FactoryGet","apiRms2FactoryCreate","apiRms2FactoryUpdate","apiRms2FactorySave","apiRms2FactoryDelete","updateSavedTimestamp","getSavedTimestamp","relativeUrl","errorHandler","req","httpError","transform","resource","apiToken","LoginDialogService","_isAuthenticating","_isAuthenticated","_user","isAuthenticated","hasUser","matchAllDemand","resetPassword","confirmNewPassword","callback","lowerCaseObjectType","licenseTypes","licenseType","languageLocale","use","expireSession","isLoginState","authMessage","Token","Tenant","httpConfig","putObject","demand","rights","rightNode","param","newPassword","confirmPassword","securityCode","cleanedBarcode","formattedString","invoiceConfirmationDialogController","colourChangeDialogController","selectedColour","replacementColourName","colourNameIsTheSame","prepareColourNames","colourNames","foundValue","modalSize","confirmationDialogController","deliveryConfirmationDialogController","deliveryDocumentDownloadDialogServiceController","deliveryTimeProximity","deliveryTimeType","deliveryTimeOptions","downloadDocument","isFetchingData","loadDateSelections","deliveryDates","entry","dateObj","ShowError","getDeliveryDateString","dateStr","importFinalizationDialogController","selectionChoices","informationDialogController","inventoryCorrectionsDialogServiceController","pickOutArticleVariants","inventoryToSend","relatedInventoryRow","getInventoryRowFor","labelPrintingDialogController","printOrderLabels","selectableDates","useWholeDate","LoginDialogController","UserPasswordResetDialogService","authError","showTenantInputField","showDialogTimeStamping","login","showDialogResetPassword","absoluteUrl","absUrl","inventoryTypes","NewInventoryDialogServiceController","currentTime","getCurrentTimeRoundedToNearestHour","insertEmptyMainGroupFirst","insertEmptyBrandFirst","locationChanged","inventoryTypeChanged","mainGroupChanged","brandChanged","newInventoryRequestData","inventoryType","timeNonUtc","time","setSeconds","setMilliseconds","emptyMainGroup","newArr","emptyBrand","printInventoryReportDialogController","setLanguage","setPrintFormat","printInventoryReportSettings","printInvoiceDialogController","setWeightSetting","printLanguageConfirmationDialogController","printLanguageConfirmationSettings","printPickingListDialogController","printOrderPickingListSettings","includeprices","purchaseOrderAnalysisFilterDialogController","UserPasswordResetDialogServiceController","showPage","usernameOrEmail","clickedResetPasswordButton","clickedConfirmPasswordButton","showConfirmPassword","EMAIL_REGEXP","salesTotalFilterDialogController","fieldType","setFieldConfirmationDialogController","updateAddressDialogController","updateOrderNoteDialogController","licenses","getLicense","license","FlexGridHelperService","assembleOrderArticleFlexGridData","assembleArticleVariantsFlexGridData","propertyToShow","VARIANT_DETAIL_ONE_PROPERTY_NAME","VARIANT_DETAIL_TWO_PROPERTY_NAME","VARIANT_DETAIL_THREE_PROPERTY_NAME","VARIANT_DETAIL_FOUR_PROPERTY_NAME","sortedVar1s","getSortedUniqueVariants","sortedVar2s","articleVariantsHashTable","generateArticleVariantsHashTable","returnData","gridRowData","currentArtVar","arrayContains","hashTable","var1Name","var2Name","getUniqueDestinations","rowsHashTable","generateRowsHashTable","destName","destinationName","currentDetail","detailFieldNameString","details","comparisonFieldName","original","edited","keysInOriginal","keysInEdited","editKey","originalKey","findDiffs","diffs","orgvalue","editedvalue","priceListItemsToRecalculate","priceToRecalculate","priceInterval","MockImportFileRowService","toastr","validateFileRow","returnList","descriptionShort","timeOutTimer","timeOut","useSyncExternalStore","createPortal","createRoot","Root","BridgeElements","renderReactRoot","render","components","$templateCache","templatePath","put"],"sourceRoot":""}