@colijnit/transaction 12.0.4 → 12.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/app/component/core/base/default-ok-cancel-buttons.component.d.ts +13 -0
  2. package/app/component/core/base/transaction-base.component.d.ts +38 -0
  3. package/app/component/core/directive/template-wrapper.directive.d.ts +13 -0
  4. package/app/component/{shopping-cart → core}/stock-status-indicator/stock-status-indicator.component.d.ts +0 -0
  5. package/app/component/service-order/ione-service-order-module.d.ts +2 -0
  6. package/app/component/service-order/ione-service-order.component.d.ts +25 -0
  7. package/app/component/service-order/service-order.component.d.ts +48 -0
  8. package/app/component/service-order/summary/transaction-article-summary.component.d.ts +17 -0
  9. package/app/component/service-order/summary/transaction-delivery-summary.component.d.ts +20 -0
  10. package/app/component/service-order/summary/transaction-order-summary.component.d.ts +16 -0
  11. package/app/component/service-order/summary/transaction-payment-info.component.d.ts +14 -0
  12. package/app/component/service-order/summary/transaction-product-contract-summary.component.d.ts +7 -0
  13. package/app/component/service-order/summary/transaction-product-summary.component.d.ts +15 -0
  14. package/app/component/service-order/summary/transaction-service-status.component.d.ts +15 -0
  15. package/app/component/service-order/summary/transaction-service-summary.component.d.ts +15 -0
  16. package/app/component/service-order/summary/transaction-summary-block.component.d.ts +16 -0
  17. package/app/component/service-order/transaction-article-text/transaction-article-text.component.d.ts +24 -0
  18. package/app/component/service-order/transaction-header-block/transaction-header-block.component.d.ts +15 -0
  19. package/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.d.ts +16 -0
  20. package/app/component/service-order/transaction-order-lines/transaction-order-lines.component.d.ts +25 -0
  21. package/app/component/service-order/transaction-order-totals/transaction-order-totals.component.d.ts +6 -0
  22. package/app/component/service-order/transaction-relation/transaction-relation-address.component.d.ts +22 -0
  23. package/app/component/service-order/transaction-relation/transaction-relation-edit.component.d.ts +29 -0
  24. package/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.d.ts +11 -0
  25. package/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.d.ts +26 -0
  26. package/app/service/ione-connector-adapter.service.d.ts +2 -0
  27. package/app/service/transaction-event.service.d.ts +5 -0
  28. package/app/service/transaction.service.d.ts +5 -0
  29. package/bundles/colijnit-transaction.umd.js +1656 -47
  30. package/bundles/colijnit-transaction.umd.js.map +1 -1
  31. package/colijnit-transaction.d.ts +23 -1
  32. package/colijnit-transaction.metadata.json +1 -1
  33. package/esm2015/app/component/checkout/checkout-overview/checkout-overview.component.js +2 -2
  34. package/esm2015/app/component/checkout/ione-checkout.module.js +3 -5
  35. package/esm2015/app/component/common/icon/icon.component.js +2 -1
  36. package/esm2015/app/component/core/base/default-ok-cancel-buttons.component.js +39 -0
  37. package/esm2015/app/component/core/base/transaction-base.component.js +123 -0
  38. package/esm2015/app/component/core/directive/template-wrapper.directive.js +69 -0
  39. package/esm2015/app/component/{shopping-cart → core}/stock-status-indicator/stock-status-indicator.component.js +1 -1
  40. package/esm2015/app/component/service-order/ione-service-order-module.js +103 -0
  41. package/esm2015/app/component/service-order/ione-service-order.component.js +96 -0
  42. package/esm2015/app/component/service-order/service-order.component.js +166 -0
  43. package/esm2015/app/component/service-order/summary/transaction-article-summary.component.js +55 -0
  44. package/esm2015/app/component/service-order/summary/transaction-delivery-summary.component.js +59 -0
  45. package/esm2015/app/component/service-order/summary/transaction-order-summary.component.js +43 -0
  46. package/esm2015/app/component/service-order/summary/transaction-payment-info.component.js +35 -0
  47. package/esm2015/app/component/service-order/summary/transaction-product-contract-summary.component.js +38 -0
  48. package/esm2015/app/component/service-order/summary/transaction-product-summary.component.js +41 -0
  49. package/esm2015/app/component/service-order/summary/transaction-service-status.component.js +37 -0
  50. package/esm2015/app/component/service-order/summary/transaction-service-summary.component.js +38 -0
  51. package/esm2015/app/component/service-order/summary/transaction-summary-block.component.js +53 -0
  52. package/esm2015/app/component/service-order/transaction-article-text/transaction-article-text.component.js +183 -0
  53. package/esm2015/app/component/service-order/transaction-header-block/transaction-header-block.component.js +83 -0
  54. package/esm2015/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.js +76 -0
  55. package/esm2015/app/component/service-order/transaction-order-lines/transaction-order-lines.component.js +71 -0
  56. package/esm2015/app/component/service-order/transaction-order-totals/transaction-order-totals.component.js +36 -0
  57. package/esm2015/app/component/service-order/transaction-relation/transaction-relation-address.component.js +116 -0
  58. package/esm2015/app/component/service-order/transaction-relation/transaction-relation-edit.component.js +225 -0
  59. package/esm2015/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.js +172 -0
  60. package/esm2015/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.js +120 -0
  61. package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +3 -7
  62. package/esm2015/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.js +1 -1
  63. package/esm2015/app/service/ione-connector-adapter.service.js +39 -10
  64. package/esm2015/app/service/transaction-event.service.js +4 -1
  65. package/esm2015/app/service/transaction.service.js +51 -15
  66. package/esm2015/assets/dictionary/text.properties.js +33 -1
  67. package/esm2015/colijnit-transaction.js +24 -2
  68. package/esm2015/public_api.js +3 -1
  69. package/fesm2015/colijnit-transaction.js +2077 -33
  70. package/fesm2015/colijnit-transaction.js.map +1 -1
  71. package/package.json +3 -3
  72. package/public_api.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"colijnit-transaction.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/app/service/options.service.ts","../../src/factory/decorators/complex-field.decorator.ts","../../src/factory/decorators/complex-array.decorator.ts","../../src/factory/decorators/boolean.decorator.ts","../../src/factory/decorators/date-field.decorator.ts","../../src/factory/decorators/string-number.decorator.ts","../../src/utils/is-nill.function.ts","../../src/utils/array-utils.ts","../../src/app/model/business-object.ts","../../src/factory/business-object-factory.ts","../../src/app/service/ione-connector-adapter.service.ts","../../src/app/service/transaction.service.ts","../../src/app/enum/language-code.enum.ts","../../src/app/utils/string-utils.ts","../../src/assets/dictionary/text.properties.ts","../../src/app/service/dictionary.service.ts","../../src/app/service/transaction-event.service.ts","../../src/app/enum/checkout-steps.enum.ts","../../src/app/component/checkout/checkout-overview-block/checkout-overview-block.component.ts","../../src/app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.ts","../../src/app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.ts","../../src/app/component/checkout/checkout-overview/checkout-overview.component.ts","../../src/app/component/checkout/checkout/checkout.component.ts","../../src/app/component/checkout/retail-transaction-checkout/retail-transaction-checkout.component.ts","../../src/app/component/checkout/checkout-login/checkout-login.component.ts","../../src/app/component/checkout/ione-checkout.component.ts","../../src/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.ts","../../src/app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.ts","../../src/app/enum/direction.enum.ts","../../src/app/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.ts","../../src/app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.ts","../../src/app/pipe/append.pipe.ts","../../src/app/enum/time-size.type.ts","../../src/app/pipe/date-duration.pipe.ts","../../src/app/pipe/delivery-time.pipe.ts","../../src/app/pipe/localize.pipe.ts","../../src/app/pipe/co-currency.pipe.ts","../../src/app/pipe/safe-style-pipe.ts","../../src/app/component/common/image-display/image-display.component.ts","../../src/app/component/common/no-image-display/no-image-display.component.ts","../../src/app/component/common/icon/icon.component.ts","../../src/app/component/core/core.module.ts","../../src/app/component/checkout/ione-checkout.module.ts","../../src/enum/position-grid-row.enum.ts","../../src/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.ts","../../src/app/enum/order-discount-type.enum.ts","../../src/app/enum/content-view-mode.enum.ts","../../src/app/component/shopping-cart/shopping-cart/shopping-cart.component.ts","../../src/app/component/shopping-cart/ione-shopping-cart.component.ts","../../src/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.ts","../../src/app/component/shopping-cart/stock-status-indicator/stock-status-indicator.component.ts","../../src/app/component/shopping-cart/characteristic-answer/characteristic-answer.component.ts","../../src/app/component/shopping-cart/ione-shopping-cart.module.ts","../../src/public_api.ts","../../src/colijnit-transaction.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\nimport {Options} from \"@colijnit/ioneconnector/build/model/options\";\r\n\r\n@Injectable()\r\nexport class OptionsService {\r\n\r\n public set options(value: Options) {\r\n this._options = value;\r\n }\r\n\r\n public get options(): Options {\r\n return this._options;\r\n }\r\n\r\n public optionsLoaded: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n private _options: Options;\r\n\r\n constructor() {}\r\n\r\n public async createSettingsFromObject(obj: any): Promise<void> {\r\n this.options = new Options();\r\n if (obj.hasOwnProperty(\"url\")) {\r\n this.options.url = obj[\"url\"];\r\n }\r\n if (obj.hasOwnProperty(\"schema\")) {\r\n this.options.schema = obj[\"schema\"];\r\n }\r\n if (obj.hasOwnProperty(\"version\")) {\r\n this.options.version = obj[\"version\"];\r\n }\r\n if (obj.hasOwnProperty(\"languageCode\")) {\r\n this.options.languageCode = obj[\"languageCode\"];\r\n } else {\r\n this.options.languageCode = \"NL\";\r\n }\r\n if (obj.hasOwnProperty(\"username\")) {\r\n this.options.username = obj[\"username\"];\r\n }\r\n if (obj.hasOwnProperty(\"password\")) {\r\n this.options.password = obj[\"password\"];\r\n }\r\n if (obj.hasOwnProperty(\"session\")) {\r\n this.options.session = obj[\"session\"];\r\n }\r\n if (obj.hasOwnProperty(\"useLoginEncryption\")) {\r\n this.options.useLoginEncryption = obj[\"useLoginEncryption\"];\r\n }\r\n\r\n this.optionsLoaded.next(true);\r\n }\r\n\r\n public async initialize(options: any): Promise<void> {\r\n if (options) {\r\n await this.createSettingsFromObject(options);\r\n }\r\n }\r\n\r\n public initializeDevelopmentOptions(remote: boolean): void {\r\n if (remote) {\r\n this._initializeDevelopmentRemoteOptions();\r\n } else {\r\n this._initializeDevelopmentLocalOptions();\r\n }\r\n }\r\n\r\n private _initializeDevelopmentRemoteOptions(): void {\r\n this.initialize( {\r\n url: \"http://130.62.7.180:8082/ione\",\r\n ajaxUrl: \"http://130.62.7.180:8082/ione\",\r\n schema: \"815\",\r\n version: \"251\",\r\n useLoginEncryption: true,\r\n username: \"sjaak\",\r\n password: \"sjaak1\",\r\n languageCode: \"NL\",\r\n }).then();\r\n }\r\n\r\n private _initializeDevelopmentLocalOptions(): void {\r\n this.initialize( {\r\n url: \"http://127.0.0.1:8080/ione\",\r\n ajaxUrl: \"http://127.0.0.1:8080/ione\",\r\n schema: \"815\",\r\n version: \"251\",\r\n useLoginEncryption: true,\r\n username: \"sjaak\",\r\n password: \"sjaak1\",\r\n languageCode: \"NL\",\r\n }).then();\r\n }\r\n}\r\n","import {notNill} from \"@colijnit/transactionapi/build/utils/function/not-nill.function\";\r\nimport {ObjectUtils} from \"@colijnit/transactionapi/build/utils/object-utils\";\r\n\r\nconst PROP_META_KEY: string = \"complexField\";\r\n\r\n/**\r\n * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.\r\n */\r\n\r\n/**\r\n * Property decorator for properties of businessobject classes that are other strongly typed businessobjects.\r\n * Ensures that the BusinessObjectFactoryService makes properly typed objects from incoming raw persistence data. Otherwise we couldn't add methods\r\n * to our own businessobjects and use them, since all fields would be flat data without methods after BusinessObjectFactoryService creation.\r\n *\r\n * Usage:\r\n *\r\n * @ComplexField(Transaction)\r\n * public transaction: Transaction\r\n *\r\n * Also keeps track of a \"complexFieldProps\" metadata on the class-level, as a reflect-metadata workaround to be able to\r\n * retrieve all properties that have the @ComplexField(..) decorator (impossible with current Reflect API).\r\n */\r\nexport function ComplexField(type: any): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey) {\r\n return;\r\n }\r\n\r\n // warn the programmer if given type was undefined; it's probably an import order glitch that caused this, because decorators seem\r\n // to be immediately processed when a class is first imported\r\n if (!type) {\r\n // eslint-disable-next-line no-console\r\n console.warn(`@ComplexField(type): type was UNDEFINED. Called on prop (${ObjectUtils.GetClassName(target)}, ${propertyKey}). ` +\r\n `Class will not properly serialize and deserialize now. We've always been able to fix this by CHANGING IMPORT ORDERS ` +\r\n `where both classes and their dependencies are used, e.g. factory, repository or models..`);\r\n return;\r\n }\r\n Reflect.defineMetadata(PROP_META_KEY, type, target, propertyKey);\r\n };\r\n}\r\n\r\n// Utility function holder of the ComplexFieldDecorator decorator.\r\nexport class ComplexFieldDecorator {\r\n\r\n /**\r\n * Returns whether given property (as a string) on given object is a complex field. A complex field is a field that is decorated\r\n * with the @ComplexField decorator.\r\n */\r\n public static IsComplexField(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n return (notNill(Reflect.getMetadata(PROP_META_KEY, target, propertyKey)));\r\n }\r\n\r\n // Returns the VALUE of the @ComplexField(VALUE) property decorator on the given propertyKey on the given modelObject.\r\n public static GetComplexFieldType(target: Object, propertyKey: string): any {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return undefined;\r\n }\r\n return Reflect.getMetadata(PROP_META_KEY, target, propertyKey);\r\n }\r\n}\r\n","import {notNill} from \"@colijnit/transactionapi/build/utils/function/not-nill.function\";\r\nimport {ObjectUtils} from \"@colijnit/transactionapi/build/utils/object-utils\";\r\n\r\nconst PROP_META_KEY: string = \"complexArray\";\r\n\r\n/**\r\n * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.\r\n */\r\n\r\n/**\r\n * Property decorator for properties of businessobject classes that are an array of other strongly typed businessobjects.\r\n * Ensures that the BusinessObjectFactoryService makes properly typed objects from incoming raw persistence data. Otherwise we couldn't add methods\r\n * to our own businessobjects and use them, since all fields would be flat data without methods after BusinessObjectFactoryService creation.\r\n *\r\n * Usage:\r\n *\r\n * @ComplexArray(TransactionLine)\r\n * public transactionLines: TransactionLine[]\r\n */\r\nexport function ComplexArray(type: any): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return;\r\n }\r\n // warn the programmer if given type was undefined; it's probably an import order glitch that caused this, because decorators seem\r\n // to be immediately processed when a class is first imported\r\n if (!type) {\r\n console.warn(`@ComplexArray(type): type was UNDEFINED. Called on prop (${ObjectUtils.GetClassName(target)}, ${propertyKey}). ` +\r\n `Class will not properly serialize and deserialize now. We've always been able to fix this by CHANGING IMPORT ORDERS ` +\r\n `where both classes and their dependencies are used, e.g. factory, repository or models..`);\r\n return;\r\n }\r\n Reflect.defineMetadata(PROP_META_KEY, type, target, propertyKey);\r\n };\r\n}\r\n\r\n// Utility function holder of the ComplexArrayDecorator decorator.\r\nexport class ComplexArrayDecorator {\r\n /**\r\n * Returns whether given property (as a string) on given object is a complex array. A complex array is an array field that is decorated\r\n * with the @ComplexArray decorator.\r\n */\r\n public static IsComplexArray(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n\r\n return (notNill(Reflect.getMetadata(PROP_META_KEY, target, propertyKey)));\r\n }\r\n\r\n /**\r\n * Returns the VALUE of the @ComplexArray(VALUE) property decorator on the given propertyKey on the given modelobject.\r\n */\r\n public static GetComplexArrayType(target: Object, propertyKey: string): any {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return undefined;\r\n }\r\n\r\n return Reflect.getMetadata(PROP_META_KEY, target, propertyKey);\r\n }\r\n}\r\n","import {GetYesNoDbBooleanValue} from \"@colijnit/transactionapi/build/enum/yes-no-db-type.enum\";\r\nimport {GetTrueFalseDbBooleanValue} from \"@colijnit/transactionapi/build/enum/true-false-db-type.enum\";\r\nimport {GetOneZeroDbBooleanValue} from \"@colijnit/transactionapi/build/enum/one-zero-bool-db-type.enum\";\r\nimport {DbBooleanValueType, GetLogicalBooleanValue} from \"@colijnit/transactionapi/build/enum/db-boolean-value-type.enum\";\r\n\r\nconst PROP_META_KEY_JN: string = \"booleanTextJN\";\r\nconst PROP_META_KEY_TF: string = \"booleanTextTF\";\r\nconst PROP_META_KEY_10: string = \"booleanText10\";\r\n\r\n/**\r\n * There are 'J', 'T', 'N', 'F', 0 and 1 'boolean values' in the database. These should be translated to true and false boolean values in\r\n * our client application.\r\n *\r\n * The values 'J' and 'N' seem to be most commonly used. This is the default setting when using this decorator.\r\n * You can pass 'T' or 1 for the other variants as follows:\r\n *\r\n * Usage:\r\n *\r\n * @BooleanText() or @BooleanText(\"J\") (the default, uses YesNoDbType char values)\r\n * public foo: boolean // 'J' and 'N' become true and false after BusinessObjectFactoryService and -SerializerService processing\r\n *\r\n * @BooleanText('T') (uses TrueFalseDbType char values)\r\n * public bar: boolean // 'T' and 'F' become true and false after BusinessObjectFactoryService and -SerializerService processing\r\n *\r\n * @BooleanText(1)\r\n * public baz: boolean // 1 and 0 become true and false after BusinessObjectFactoryService and -SerializerService processing\r\n */\r\nexport function BooleanText(type?: \"J\" | \"T\" | 1): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey) {\r\n return;\r\n }\r\n // by default, it's a J N boolean text\r\n if (!type || type === \"J\") {\r\n Reflect.defineMetadata(PROP_META_KEY_JN, true, target, propertyKey);\r\n } else if (type === \"T\") {\r\n Reflect.defineMetadata(PROP_META_KEY_TF, true, target, propertyKey);\r\n } else if (type === 1) {\r\n Reflect.defineMetadata(PROP_META_KEY_10, true, target, propertyKey);\r\n }\r\n };\r\n}\r\n\r\n// Utility function holder of the BooleanTextDecorator decorator.\r\nexport class BooleanTextDecorator {\r\n\r\n /**\r\n * Returns whether given property (as a string) on given object is a boolean text field. That is, it's a field that is decorated\r\n * with the @BooleanText decorator.\r\n */\r\n public static IsBooleanTextField(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n return (\r\n Reflect.getMetadata(PROP_META_KEY_JN, target, propertyKey) === true\r\n ||\r\n Reflect.getMetadata(PROP_META_KEY_TF, target, propertyKey) === true\r\n ||\r\n Reflect.getMetadata(PROP_META_KEY_10, target, propertyKey) === true\r\n );\r\n }\r\n\r\n /**\r\n * Returns the logical true or false value of given character ('J', 'N', 'T' or 'F') or number (0 or 1).\r\n * Returns UNDEFINED if given boolChar was not recognised as a boolean text.\r\n */\r\n public static GetLogicalBooleanValue(dbBoolChar: DbBooleanValueType | string): boolean {\r\n return GetLogicalBooleanValue(dbBoolChar);\r\n }\r\n\r\n /**\r\n * Returns the boolean character / number of given logical bool property on target object. Uses its @BooleanText() annotation to decide\r\n * what character / number to return.\r\n * Used in BusinessObjectSerializerServiceService to convert logical bools to their original boolean character.\r\n * @returns {string|number} The original, reverse-engineered boolean character (or number) of given object property, or undefined.\r\n */\r\n public static GetDbBooleanValue(target: Object, propertyKey: string): DbBooleanValueType {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return undefined;\r\n }\r\n\r\n let dbBoolVal: any = undefined;\r\n\r\n const curBoolVal: boolean = target[propertyKey];\r\n\r\n if (BooleanTextDecorator._IsJaNeeProp(target, propertyKey)) {\r\n dbBoolVal = GetYesNoDbBooleanValue(curBoolVal);\r\n } else if (BooleanTextDecorator._IsTrueFalseProp(target, propertyKey)) {\r\n dbBoolVal = GetTrueFalseDbBooleanValue(curBoolVal);\r\n } else if (BooleanTextDecorator._IsZeroOneProp(target, propertyKey)) {\r\n dbBoolVal = GetOneZeroDbBooleanValue(curBoolVal);\r\n }\r\n\r\n return dbBoolVal as any as DbBooleanValueType;\r\n }\r\n\r\n private static _IsJaNeeProp(target: Object, propertyKey: string): boolean {\r\n return BooleanTextDecorator._IsProp(PROP_META_KEY_JN, target, propertyKey);\r\n }\r\n\r\n private static _IsTrueFalseProp(target: Object, propertyKey: string): boolean {\r\n return BooleanTextDecorator._IsProp(PROP_META_KEY_TF, target, propertyKey);\r\n }\r\n\r\n private static _IsZeroOneProp(target: Object, propertyKey: string): boolean {\r\n return BooleanTextDecorator._IsProp(PROP_META_KEY_10, target, propertyKey);\r\n }\r\n\r\n private static _IsProp(prop: string, target: Object, propertyKey: string): boolean {\r\n return !!target && !!propertyKey && typeof target === \"object\" && Reflect.hasMetadata(prop, target, propertyKey);\r\n }\r\n}\r\n","import {DateUtils} from \"@colijnit/transactionapi/build/utils/date-utils\";\r\n\r\nconst PROP_META_KEY: string = \"dateField\";\r\n\r\n/**\r\n * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.\r\n */\r\n\r\n/**\r\n * Property decorator for properties of businessobject classes that are of type Date, but are sent to us as strings.\r\n * Ensures that the BusinessObjectFactory makes proper JavaScript Date objects from incoming strings for @DateField() decorated properties.\r\n *\r\n * Usage:\r\n *\r\n * @DateField()\r\n * public expectedDeliveryDate: Date\r\n */\r\nexport function DateField(): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey) {\r\n return;\r\n }\r\n Reflect.defineMetadata(PROP_META_KEY, undefined, target, propertyKey);\r\n };\r\n}\r\n\r\n// Utility function holder of the @DateField() decorator.\r\nexport class DateFieldFieldDecorator {\r\n\r\n // Returns whether given property (as a string) on given object is decorated with @DateField().\r\n public static IsDateField(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n return Reflect.hasMetadata(PROP_META_KEY, target, propertyKey);\r\n }\r\n\r\n public static StringAsDate(str: string): Date {\r\n return DateUtils.StringAsDate(str);\r\n }\r\n}\r\n","import {NumberUtils} from \"@colijnit/transactionapi/build/utils/number-utils\";\r\n\r\nconst PROP_META_KEY: string = \"stringNumber\";\r\n/**\r\n * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.\r\n */\r\n\r\n/**\r\n * Decorator for properties of businessobjects that are sent to us as strings from the database, but which we want to use as a number in the client.\r\n *\r\n * Can be handy for incongruent backend api cases, where id data types are communicated wrongly via strings instead of numbers\r\n * (e.g. on EmployeeFullObject.district, points to a District which has a number id, but in employee it's a string representation of that number...)\r\n *\r\n * Used by business object factory and -serializer.\r\n *\r\n * Usage:\r\n *\r\n * @StringNumber()\r\n * public rights: UserRightType\r\n */\r\nexport function StringNumber(): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey) {\r\n return;\r\n }\r\n Reflect.defineMetadata(PROP_META_KEY, undefined, target, propertyKey);\r\n };\r\n}\r\n\r\n// Utility function holder of the @StringNumber() decorator.\r\nexport class StringNumberDecorator {\r\n\r\n // Returns whether given property (as a string) on given object is decorated with @StringNumber().\r\n public static IsStringNumber(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n return Reflect.hasMetadata(PROP_META_KEY, target, propertyKey);\r\n }\r\n\r\n public static StringAsNumber(str: string): number {\r\n return NumberUtils.ParseFloatKeepPrecision(str);\r\n }\r\n\r\n public static NumberAsString(nr: number): string {\r\n return \"\" + nr;\r\n }\r\n}\r\n","// @returns true iff given value equals null or equals undefined\r\nexport function isNill(value: any): boolean {\r\n return value === null || value === undefined;\r\n}","import {ObjectUtils} from \"@colijnit/transactionapi/build/utils/object-utils\";\r\nimport {NumberUtils} from \"@colijnit/transactionapi/build/utils/number-utils\";\r\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\r\nimport {notNill} from \"@colijnit/transactionapi/build/utils/function/not-nill.function\";\r\n\r\nexport class ArrayUtils {\r\n /**\r\n * Returns whether at least one element in given array could be found by given finder function.\r\n *\r\n * @param {T[]} array\r\n * @param {(element: T) => boolean} finder A finder function that takes an element of the array and returns a boolean that represents\r\n * the 'found status' for that element; whether it should have been found or not.\r\n */\r\n public static ContainsAnElementFoundBy<T>(array: T[], finder: (element: T) => boolean): boolean {\r\n if (!array || !finder) {\r\n return false;\r\n }\r\n\r\n return notNill(this.Find<T>(array, finder));\r\n }\r\n\r\n /**\r\n * Cross-browser Array.find() function. Returns the first item in given array for which the foundBy function returns true. Returns\r\n * undefined when none was found.\r\n *\r\n * Example usage:\r\n * const foundItem: BusinessObject = ArrayUtils.Find<BusinessObject>(modelArray, (modelItem: BusinessObject) => <br>\r\n * (return modelItem.getId() === '1')\r\n * * });\r\n *\r\n * @param array The array with items to search in.\r\n * @param foundBy The finder function applied on each items of the array, when that returns true, the item is considered found.\r\n */\r\n public static Find<T>(array: T[], foundBy: (item: T) => boolean): T {\r\n if (!array || !foundBy) {\r\n return undefined;\r\n }\r\n\r\n for (let i: number = 0, len: number = array.length; i < len; i++) {\r\n const itemCur: T = array[i];\r\n if (foundBy(itemCur) ) {\r\n return itemCur;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n // @returns empty array when nothing found, otherwise array with found items\r\n public static FindAll<T>(array: T[], foundBy: (item: T) => boolean): T[] {\r\n const answer: T[] = [];\r\n if (!array || !foundBy) {\r\n return answer;\r\n }\r\n\r\n for (let i: number = 0, len: number = array.length; i < len; i++) {\r\n const itemCur: T = array[i];\r\n if (foundBy(itemCur)) {\r\n answer.push(itemCur);\r\n }\r\n }\r\n return answer;\r\n }\r\n\r\n // returns a simple clone of given array, using array.slice(0)\r\n public static CloneArray<T>(array: T[]): T[] {\r\n let answer: T[] = [];\r\n\r\n if (array) {\r\n answer = array.slice(0);\r\n }\r\n\r\n return answer;\r\n }\r\n\r\n /**\r\n * Returns a 'semi deep clone' of given array. Its first-level members are object-shallow-cloned (optionally with a strongly typed constructor),\r\n * or just as plain object (see param arrayItemsClass).\r\n * @param array\r\n * @param arrayItemsClass If provided, the cloned array's first-level items will be strongly typed to / constructed as this class. Otherwise\r\n * it'll be a plain object.\r\n * @param deepClone Set to true if array items contain FUNCTIONS that need to be cloned..\r\n * @returns {Array} semi-deep clone of given array\r\n */\r\n public static CloneArrayAndItsItems<T>(array: T[], arrayItemsClass?: any, deepClone: boolean = false): T[] {\r\n const cloneArray: T[] = [];\r\n\r\n if (array) {\r\n for (let i: number = 0, len: number = array.length; i < len; i++) {\r\n if (deepClone) {\r\n cloneArray.push(ObjectUtils.GetDeepClone(array[i]));\r\n } else {\r\n cloneArray.push(ObjectUtils.GetShallowClone(array[i], arrayItemsClass));\r\n }\r\n }\r\n } else {\r\n return [];\r\n }\r\n\r\n return cloneArray;\r\n }\r\n\r\n /**\r\n * Removes element at given index from given array. Doesn't just set it to null like JavaScripts standard 'delete' does, but really\r\n * removes the element using splice().\r\n *\r\n * @param {number} index\r\n * @param {any[]} array in-out\r\n * @returns {boolean} True if and only if the element on given index is succesfully removed from given array.\r\n */\r\n public static RemoveElementAtIndex(index: number, array: any[]): boolean {\r\n if (NumberUtils.IsNaN(index) || index < 0 || !Array.isArray(array) || array.length === 0) {\r\n return false;\r\n }\r\n\r\n if (index in array) {\r\n array.splice(index, 1);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Removes given element from given array. Doesn't just set it to null like JavaScripts standard 'delete' does, but really removes the\r\n * element using splice(). Also works on associative arrays.\r\n *\r\n * @param {T} element The element to remove.\r\n * @param {T[]} array The array to remove the element from.\r\n * @returns {boolean} True iff given element was truly successfully removed from given array.\r\n */\r\n public static RemoveElement<T>(element: T, array: T[]): boolean {\r\n if (!Array.isArray(array)) {\r\n return false;\r\n }\r\n\r\n const index: number = array.indexOf(element);\r\n return ArrayUtils.RemoveElementAtIndex(index, array);\r\n }\r\n\r\n // Checks if given array is defined, and is an array, and has length > 0, and, optionally checks that the first element is of type given clazz.\r\n public static IsArrayWithElements<T>(arrayToCheck: T[], classItemsMustBeInstanceOf?: any): boolean {\r\n if (isNill(arrayToCheck)) {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(arrayToCheck) && arrayToCheck.length > 0) {\r\n if (classItemsMustBeInstanceOf) {\r\n return arrayToCheck[0] instanceof classItemsMustBeInstanceOf;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // Removes all elements from given array for which given filter function holds true. Returns true if at least one removed, else false.\r\n public static RemoveElementsByFilter(array: any[], filterFunction: (item: any) => boolean): boolean {\r\n if (!ArrayUtils.IsArrayWithElements(array) || !filterFunction) {\r\n return false;\r\n }\r\n\r\n let atLeastOneRemoved: boolean = false;\r\n\r\n const len: number = array.length;\r\n for (let i: number = len - 1; i >= 0; i--) {\r\n const item: any = array[i];\r\n if (filterFunction.call(this, item) === true) {\r\n array.splice(i, 1);\r\n atLeastOneRemoved = true;\r\n }\r\n }\r\n\r\n return atLeastOneRemoved;\r\n }\r\n\r\n public static MoveElement<T>(element: T, toIndex: number, array: T[]): boolean {\r\n if (!Array.isArray(array) || isNill(toIndex)) {\r\n return false;\r\n }\r\n\r\n const fromIndex: number = array.indexOf(element);\r\n const toIndexCorrected: number = NumberUtils.GetNearestNumberWithinBounds(toIndex, 0, array.length - 1);\r\n if (fromIndex === -1 || array[toIndexCorrected] === element) {\r\n // element did not exist in given array, or already existed on given toIndex\r\n return false;\r\n }\r\n array.splice(toIndexCorrected, 0, array.splice(fromIndex, 1)[0]);\r\n return true;\r\n }\r\n\r\n // PRE: elements exists in given array. POST: given elementToPlace has a lower index than given afterThisElement. Array is in-out manipulated.\r\n public static PlaceElementAfterOther(array: any[], elementToPlace: any, afterThisElement: any): void {\r\n if (array) {\r\n const afterThisElIdx: number = array.indexOf(afterThisElement);\r\n const elToPlaceIdx: number = array.indexOf(elementToPlace);\r\n if (afterThisElIdx >= elToPlaceIdx) {\r\n ArrayUtils.MoveElement(elementToPlace, afterThisElIdx + 1, array);\r\n }\r\n }\r\n }\r\n}\r\n","/**\r\n * This type represents the concept of a business object ID type. ID's of business objects can be a primary number, a simple string or a\r\n * object for a composite key.\r\n *\r\n * Simply to prevent type declarations of 'number | string | Object' for BO ID data all over the application.\r\n */\r\nimport {MapPropertyDecorator} from \"@colijnit/transactionapi/build/factory/decorators/map-property.decorator\";\r\nimport {BooleanTextDecorator} from \"@colijnit/transactionapi/build/factory/decorators/boolean.decorator\";\r\nimport {JsonFieldFieldDecorator} from \"@colijnit/transactionapi/build/factory/decorators/json.decorator\";\r\nimport {ComplexArrayDecorator} from \"@colijnit/transactionapi/build/factory/decorators/complex-array.decorator\";\r\n\r\nexport type BusinessObjectIDType = number | string | Object;\r\n\r\nexport abstract class BusinessObject {\r\n // The ID of the model.\r\n public id: BusinessObjectIDType;\r\n\r\n // Overridable. Returns the ID of the model. Concrete model classes often override this method to provide their specific ID getter.\r\n public getId(): BusinessObjectIDType {\r\n return this.id;\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n protected setOwnMappedPropsFromRawData(rawData: any = {}): void {\r\n if (!rawData) {\r\n return;\r\n }\r\n Object.keys(this).forEach((key) => {\r\n // check if property needs to be mapped\r\n if (MapPropertyDecorator.IsMapProperty(this, key)) {\r\n const mapKeys: string[] = MapPropertyDecorator.GetMapProperty(this, key).split(\",\");\r\n const len: number = mapKeys.length;\r\n for (let i: number = 0; i < len; i++) {\r\n // eslint-disable-next-line \r\n const mapKey = mapKeys[i].trim();\r\n const objProp: any = rawData[mapKey];\r\n let decorated: boolean = false;\r\n if (rawData.hasOwnProperty(mapKey)) {\r\n if (BooleanTextDecorator.IsBooleanTextField(this, key)) {\r\n this[key] = BooleanTextDecorator.GetLogicalBooleanValue(objProp);\r\n decorated = true;\r\n }\r\n if (JsonFieldFieldDecorator.IsJsonField(this, key)) {\r\n this[key] = JsonFieldFieldDecorator.StringAsJson(objProp);\r\n decorated = true;\r\n }\r\n if (ComplexArrayDecorator.IsComplexArray(this, key)) {\r\n const arrayClass: any = ComplexArrayDecorator.GetComplexArrayType(this, key);\r\n // eslint-disable-next-line \r\n const origArray = this[key];\r\n // eslint-disable-next-line \r\n const newArray = [];\r\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n for (let j = 0; j < origArray.length; j++) {\r\n // eslint-disable-next-line\r\n const item = new arrayClass(origArray[j]);\r\n newArray.push(item);\r\n }\r\n this[key] = newArray;\r\n } else {\r\n if (!decorated) {\r\n this[key] = objProp;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n } else {\r\n if (rawData.hasOwnProperty(key)) {\r\n const objProp: any = rawData[key];\r\n if (BooleanTextDecorator.IsBooleanTextField(this, key)) {\r\n this[key] = BooleanTextDecorator.GetLogicalBooleanValue(objProp);\r\n } else if (JsonFieldFieldDecorator.IsJsonField(this, key)) {\r\n this[key] = JsonFieldFieldDecorator.StringAsJson(objProp);\r\n } else {\r\n this[key] = objProp;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import {ComplexFieldDecorator} from \"./decorators/complex-field.decorator\";\r\nimport {ComplexArrayDecorator} from \"./decorators/complex-array.decorator\";\r\nimport {BooleanTextDecorator} from \"./decorators/boolean.decorator\";\r\nimport {DateFieldFieldDecorator} from \"./decorators/date-field.decorator\";\r\nimport {StringNumberDecorator} from \"./decorators/string-number.decorator\";\r\nimport {isNill} from \"../utils/is-nill.function\";\r\nimport {ArrayUtils} from \"../utils/array-utils\";\r\nimport {BusinessObject} from \"../app/model/business-object\";\r\n\r\n// Factory service creates businessobjects, using their decorators in the process.\r\nexport class BusinessObjectFactory {\r\n constructor() {\r\n }\r\n\r\n /**\r\n * Creates and returns a new business data object instance of given class, with all given data properties applied to it in a\r\n * complex-aware style. That is, all properties on given class that are decorated with @ComplexField(..) or @ComplexArray(..) decorators\r\n * become strongly typed business objects, with methods that are usable and such.\r\n *\r\n * @param modelClass\r\n * @param {Object} rawData The object with all (possibly raw/flat/not alive) data to be applied to the created model object\r\n */\r\n public makeWithRawBackendData(modelClass: any, rawData: Object): BusinessObject {\r\n if (!modelClass) {\r\n return undefined;\r\n }\r\n if (typeof modelClass !== typeof BusinessObject) {\r\n return undefined;\r\n }\r\n\r\n const model: BusinessObject = new modelClass();\r\n this._copyAllPropertiesDecoratorProcessedFrom(rawData, model);\r\n return model;\r\n }\r\n\r\n // see makeWithRawBackendData, this is a loop-wrapper around that method\r\n public makeBOArrayFromRawBackendDataArray(modelClass: any, arrayOfRawDatas: Object[]): BusinessObject[] {\r\n if (!modelClass) {\r\n return undefined;\r\n }\r\n\r\n const trueClientBos: BusinessObject[] = [];\r\n if (arrayOfRawDatas) {\r\n for (let i: number = 0, len: number = arrayOfRawDatas.length; i < len; i++) {\r\n trueClientBos.push(this.makeWithRawBackendData(modelClass, arrayOfRawDatas[i]));\r\n }\r\n }\r\n return trueClientBos;\r\n }\r\n\r\n public instantiateNewBo(modelClass: any): BusinessObject {\r\n return this.makeWithRawBackendData(modelClass, {});\r\n }\r\n\r\n /**\r\n * Applies all properties of given 'source' object to the given 'destination' businessobject, if destination has that property.\r\n * Works with the @ComplexField(), @ComplexArray, @BooleanText, @CoInject and @DateField annotations of given destination model.\r\n *\r\n * @param sourceData Raw data to copy to destination model\r\n * @param {BusinessObject} destinationModel InOut: The annotated businessobject to apply source properties to\r\n */\r\n private _copyAllPropertiesDecoratorProcessedFrom(sourceData: any, destinationModel: BusinessObject): void {\r\n if (!sourceData || !destinationModel) {\r\n return;\r\n }\r\n\r\n // process all source data into destinationModel\r\n for (const srcPropKey in sourceData) {\r\n if (!sourceData.hasOwnProperty(srcPropKey)) {\r\n continue;\r\n }\r\n\r\n const srcPropVal: any = sourceData[srcPropKey];\r\n\r\n if (ComplexFieldDecorator.IsComplexField(destinationModel, srcPropKey)) {\r\n const classOfField: any = ComplexFieldDecorator.GetComplexFieldType(destinationModel, srcPropKey);\r\n destinationModel[srcPropKey] = this.makeWithRawBackendData(classOfField, srcPropVal);\r\n } else if (ComplexArrayDecorator.IsComplexArray(destinationModel, srcPropKey)) {\r\n const sourceArray: any[] = srcPropVal;\r\n if (!sourceArray) {\r\n continue;\r\n }\r\n const classOfArrayItems: any = ComplexArrayDecorator.GetComplexArrayType(destinationModel, srcPropKey);\r\n const tempArray: any[] = [];\r\n for (let i: number = 0, len: number = sourceArray.length; i < len; i++) {\r\n tempArray.push(this.makeWithRawBackendData(classOfArrayItems, sourceArray[i]));\r\n }\r\n destinationModel[srcPropKey] = tempArray;\r\n } else if (BooleanTextDecorator.IsBooleanTextField(destinationModel, srcPropKey)) {\r\n // logical 'true' and 'false' also allowed as incoming values for @BooleanText() properties: then just copy their value\r\n if (typeof srcPropVal === \"boolean\") {\r\n destinationModel[srcPropKey] = srcPropVal;\r\n // here, it should be a 'J' or 'N' (or 'T' or 'F'): assign the associated boolean value\r\n } else {\r\n destinationModel[srcPropKey] = BooleanTextDecorator.GetLogicalBooleanValue(srcPropVal);\r\n }\r\n } else if (DateFieldFieldDecorator.IsDateField(destinationModel, srcPropKey)) {\r\n destinationModel[srcPropKey] = DateFieldFieldDecorator.StringAsDate(srcPropVal);\r\n } else if (StringNumberDecorator.IsStringNumber(destinationModel, srcPropKey)) {\r\n destinationModel[srcPropKey] = StringNumberDecorator.StringAsNumber(srcPropVal);\r\n }\r\n // non-decorated prop\r\n else {\r\n if (isNill(srcPropVal)) {\r\n destinationModel[srcPropKey] = undefined;\r\n } else if (Array.isArray(srcPropVal)) {\r\n destinationModel[srcPropKey] = ArrayUtils.CloneArray(srcPropVal);\r\n } else if (typeof srcPropVal === \"object\") {\r\n if (srcPropVal instanceof Map) { //just copy the value in case of maps\r\n destinationModel[srcPropKey] = srcPropVal;\r\n } else {\r\n destinationModel[srcPropKey] = Object.assign({}, srcPropVal);\r\n }\r\n } else {\r\n destinationModel[srcPropKey] = srcPropVal;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\nimport {Marketing} from \"@colijnit/transactionapi/build/model/marketing.bo\";\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\nimport {TransactionKind} from \"@colijnit/transactionapi/build/enum/transaction-kind.enum\";\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\nimport {PrivacySetting} from \"@colijnit/transactionapi/build/model/privacy-setting.bo\";\nimport {RelationPrivacySetting} from \"@colijnit/transactionapi/build/model/relation-privacy-setting.bo\";\nimport {SequenceName} from \"@colijnit/transactionapi/build/enum/sequence-name.enum\";\nimport {DeliveryMethod} from \"@colijnit/transactionapi/build/model/delivery-method.bo\";\nimport {DeliveryOption} from \"@colijnit/transactionapi/build/model/delivery-option.bo\";\nimport {SetTransactionDeliveryOptionsRequest} from \"@colijnit/transactionapi/build/model/set-transaction-delivery-options-request.bo\";\nimport {GetPostalCodeRetrievalOutputParams} from \"@colijnit/transactionapi/build/model/get-postal-code-retrieval-output-params\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\nimport {RelationRequest} from \"@colijnit/transactionapi/build/model/relation-request\";\nimport {TransactionLineType} from \"@colijnit/transactionapi/build/enum/transaction-line-type.enum\";\nimport {ResolvePendingLineReasonRequest} from \"@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo\";\nimport {CoDomainValue} from \"@colijnit/transactionapi/build/model/co-domain-value.bo\";\nimport {TransactionArticleWarehouse} from \"@colijnit/transactionapi/build/model/transaction-article-warehouse.bo\";\nimport {ArticleFullObject} from \"@colijnit/transactionapi/build/model/article-full-object\";\nimport {LineOperationResponse} from \"@colijnit/transactionapi/build/model/line-operation-response.bo\";\nimport {TransactionResponseBase} from \"@colijnit/transactionapi/build/model/transaction-response-base.bo\";\nimport {Transaction} from \"@colijnit/transactionapi/build/transaction\";\nimport {DataServiceResponseData} from \"@colijnit/transactionapi/build/model/data-service-response-data\";\nimport {BusinessObjectFactory} from \"../../factory/business-object-factory\";\nimport {Options} from \"@colijnit/ioneconnector/build/model/options\";\nimport {ImageUtils} from \"@colijnit/transactionapi/build/utils/image-utils\";\n\n@Injectable()\nexport class IOneConnectorAdapterService {\n public options: any;\n\n public connector: Transaction;\n\n private _boFactory: BusinessObjectFactory = new BusinessObjectFactory();\n private _countryList: Country[] = [];\n\n constructor() {}\n\n public async connect(options: Options): Promise<void> {\n this.options = options;\n this.connector = new Transaction(options);\n this.options.session = this.connector.session;\n }\n\n public async getArticleFullObject(goodId: number): Promise<ArticleFullObject> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getArticleFullObject(goodId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n if (result.resultObject) {\n resolve(this._boFactory.makeWithRawBackendData(ArticleFullObject, result.resultObject));\n }\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getGoodIdFromArticleNr(articleNr: string): Promise<number> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getGoodIdFromArticleNr(articleNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObject);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getSingleImage(nodeId: number | string, publication: number, includeMimetype: boolean, thumb: boolean): Promise<string> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getSingleImage(nodeId, publication, includeMimetype, thumb).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n if (result.resultObject.filePath !== null && result.resultObject.filePath !== \"\") {\n return resolve(ImageUtils.getFixedImageFilepathUrl(result.resultObject.filePath));\n } else {\n if (includeMimetype) {\n return resolve(ImageUtils.getDocBodyWithMimeTypeDefinition(result.resultObject.fileName,\n thumb ? result.resultObject.thumbnailBody : result.resultObject.documentBody));\n }\n return resolve(thumb ? result.resultObject.thumbnailBody : result.resultObject.documentBody);\n }\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getDocumentContent(id: number, thumbnail: boolean): Promise<string> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getDocumentContent(id, thumbnail).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObject.documentContent);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getCountries(): Promise<Country[]> {\n if (this._countryList.length > 0) {\n return new Promise((resolve: Function) => {\n resolve(this._countryList);\n });\n }\n\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getCountries().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n this._countryList = result.resultObjects;\n resolve(result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getCountry(countryCode: string): Country {\n this.getCountries();\n return this._countryList.find(country => country.code === countryCode);\n }\n\n public getPrivacySettings(): Promise<PrivacySetting[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getPrivacySettings().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<PrivacySetting[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getRelationPrivacySettings(): Promise<RelationPrivacySetting[]> {\n const privacySettings: RelationPrivacySetting[] = [];\n\n const basePrivacySettings: PrivacySetting[] = await this.getPrivacySettings();\n for (let i: number = 0, len: number = basePrivacySettings.length; i < len; i++) {\n const basePrivSetting: PrivacySetting = basePrivacySettings[i];\n const newRelPrivSet: RelationPrivacySetting = <RelationPrivacySetting><unknown>this._boFactory.instantiateNewBo(RelationPrivacySetting);\n newRelPrivSet.applyBasePrivacySettingValues(basePrivSetting);\n privacySettings.push(newRelPrivSet);\n }\n return privacySettings;\n }\n\n public getMarketingCodes(): Promise<Marketing[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getMarketingCodes().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<CoDomainValue[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public createTransaction(kind: TransactionKind, branchNr: string): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.createTransaction(kind, branchNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getTransactionByNrAndKind(kind: TransactionKind, transactionNo: number): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getTransactionByNrAndKind(kind, transactionNo).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public saveTransaction(uuid: string): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.saveTransaction(uuid).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getCustomerFullObject(relationNo: number): Promise<CustomerFullObject> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getCustomerFullObject(relationNo).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(CustomerFullObject, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getRelationNumber(relationId: number): Promise<string> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getRelationNumber(relationId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObject);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getSequenceValue(sequenceName: SequenceName): Promise<number> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getSequenceValue(sequenceName).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObject);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async insertCustomer(relation: CustomerFullObject): Promise<CustomerFullObject> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.insertCustomer(relation).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(CustomerFullObject, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async updateCustomer(relation: CustomerFullObject): Promise<CustomerFullObject> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.updateCustomer(relation).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(CustomerFullObject, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getDeliveryMethods(): Promise<DeliveryMethod[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getDeliveryMethods().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<DeliveryMethod[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getDeliveryOptions(): Promise<DeliveryOption[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getDeliveryOptions().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<DeliveryMethod[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async addRelationToTransaction(uuid: string, relationId: number): Promise<boolean> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.addRelationToTransaction(uuid, relationId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.validationResult.success);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async setTransactionDeliveryOptions(transactionDeliveryOptionsRequest: SetTransactionDeliveryOptionsRequest): Promise<TransactionResponseBase> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.setTransactionDeliveryOptions(transactionDeliveryOptionsRequest).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getPostalCodeRetrieval(postcalCode: string, houseNo: string): Promise<GetPostalCodeRetrievalOutputParams> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getPostalCodeRetrieval(postcalCode, houseNo).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n const outputParams: GetPostalCodeRetrievalOutputParams = new GetPostalCodeRetrievalOutputParams();\n outputParams.city = result.resultObject.city;\n outputParams.street = result.resultObject.street;\n outputParams.status = result.resultObject.status;\n outputParams.netNumber = result.resultObject.netNumber;\n resolve(outputParams);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getRelationListObjects(relationRequest: RelationRequest): Promise<RelationListObject[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getRelationListObjects(relationRequest).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<RelationListObject[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async addTransactionLine(uuid: string, articleLine: TransactionLineType, articleNo: string, amount: number, warehouseNo: number, commissionCode: string, isReturn: boolean, aboveLineNr: number, belowLineNr: number):\n Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.addTransactionLine(uuid, articleLine, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(LineOperationResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async addTextLineToTransaction(uuid: string, showOnDocuments: number, text: string, amount: number, articleBound: boolean, refArticleLineNr: number, aboveLineNr?: number, belowLineNr?: number):\n Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.addTextLineToTransaction(uuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(LineOperationResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async changeLineSequence(uuid: string, lineUuid: string, aboveLineNr?: number, belowLineNr?: number):\n Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.changeLineSequence(uuid, lineUuid, aboveLineNr, belowLineNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(LineOperationResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async cancelAddTransactionLine(lineUuid: string): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.cancelAddTransactionLine(lineUuid).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n\n }\n\n public async deleteTransactionLine(uuid: string, lineUuid: string): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.deleteTransactionLine(uuid, lineUuid).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n\n public async changeTransactionLineQuantity(uuid: string, lineUuid: string, newQuantity: number): Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.changeTransactionLineQuantity(uuid, lineUuid, newQuantity).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async resolvePendingLineReason(pendingLineValues: ResolvePendingLineReasonRequest): Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.resolvePendingLineReason(pendingLineValues).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getCommissionCodes(languageCode: string): Promise<CoDomainValue[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getCommissionCodes(languageCode).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<CoDomainValue[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n\n }\n\n public async getInOutCollection(languageCode: string): Promise<CoDomainValue[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getInOutCollection(languageCode).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<CoDomainValue[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getTransactionArticleWarehouses(goodId: number): Promise<TransactionArticleWarehouse[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getTransactionArticleWarehouses(goodId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<TransactionArticleWarehouse[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async setRelationByUser(uuid: string, username: string, password: string): Promise<boolean> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.setRelationByUser(uuid, username, password).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.validationResult.success);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n}\n","import {EventEmitter, Inject, inject, Injectable, Optional} from \"@angular/core\";\nimport {IOneConnectorAdapterService} from \"./ione-connector-adapter.service\";\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {NULL_RELATION_OBJECT} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\nimport {TransactionKind} from \"@colijnit/transactionapi/build/enum/transaction-kind.enum\";\nimport {Marketing} from \"@colijnit/transactionapi/build/model/marketing.bo\";\nimport {RelationPrivacySetting} from \"@colijnit/transactionapi/build/model/relation-privacy-setting.bo\";\nimport {SequenceName} from \"@colijnit/transactionapi/build/enum/sequence-name.enum\";\nimport {DeliveryMethod} from \"@colijnit/transactionapi/build/model/delivery-method.bo\";\nimport {DeliveryOption} from \"@colijnit/transactionapi/build/model/delivery-option.bo\";\nimport {ContactOption} from \"@colijnit/transactionapi/build/model/contact-option.bo\";\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\nimport {ArrayUtils} from \"@colijnit/transactionapi/build/utils/array-utils\";\nimport {SetTransactionDeliveryOptionsRequest} from \"@colijnit/transactionapi/build/model/set-transaction-delivery-options-request.bo\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\nimport {RelationRequest} from \"@colijnit/transactionapi/build/model/relation-request\";\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\nimport {TransactionTotal} from \"@colijnit/transactionapi/build/model/transaction-total.bo\";\nimport {ValidationResult} from \"@colijnit/transactionapi/build/model/validation-result\";\nimport {TransactionLineType} from \"@colijnit/transactionapi/build/enum/transaction-line-type.enum\";\nimport {ResolvePendingLineReasonRequest} from \"@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo\";\nimport {CoDomainValue} from \"@colijnit/transactionapi/build/model/co-domain-value.bo\";\nimport {TransactionArticleWarehouse} from \"@colijnit/transactionapi/build/model/transaction-article-warehouse.bo\";\nimport {ArticleFullObject} from \"@colijnit/transactionapi/build/model/article-full-object\";\nimport {LineOperationStatus} from \"@colijnit/transactionapi/build/model/line-operation-status.bo\";\nimport {LineOperationResponse} from \"@colijnit/transactionapi/build/model/line-operation-response.bo\";\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {TransactionResponseBase} from \"@colijnit/transactionapi/build/model/transaction-response-base.bo\";\nimport {PendingReasonType} from \"@colijnit/transactionapi/build/enum/pending-reason-type.enum\";\n\n@Injectable()\nexport class TransactionService {\n public transactionUpdated: EventEmitter<void> = new EventEmitter<void>();\n\n public emailAddress: string;\n public applicationUser: boolean = false;\n\n public get currentLines(): TransactionLineInfo[] {\n return this._currentLines;\n }\n\n public set currentLines(value: TransactionLineInfo[]) {\n this._currentLines = value;\n this.articleAmount = ArrayUtils.FindAll(this._currentLines, line => line.isArticle).length;\n }\n\n public set currentTotals(value: TransactionTotal) {\n this._currentTotals = value;\n }\n\n public get currentTotals(): TransactionTotal {\n return this._currentTotals;\n }\n\n public get currentRelation(): RelationAnyType {\n return this._currentRelation;\n }\n\n public get currentTransaction(): TransactionInfo {\n return this._currentTransaction;\n }\n\n public set currentLineOperationStatuses(values: LineOperationStatus[]) {\n this._currentLineOperationStatuses = values;\n }\n\n public get currentLineOperationStatuses(): LineOperationStatus[] {\n return this._currentLineOperationStatuses;\n }\n\n public set currentLineOperationStatus(value: LineOperationStatus) {\n this._currentLineOperationStatus = value;\n }\n\n public get currentLineOperationStatus(): LineOperationStatus | undefined {\n const status: LineOperationStatus = this.currentLineOperationStatuses.find(line => line.pendingReasonType !== PendingReasonType.NONE\n && line.pendingReasonType !== PendingReasonType.NON_CRITICAL_DISCONTINUATION);\n return status;\n }\n\n public articleAmount: number = 0;\n\n private _currentLines: TransactionLineInfo[] = [];\n private _currentTotals: TransactionTotal = new TransactionTotal();\n private _currentRelation: RelationAnyType = NULL_RELATION_OBJECT;\n private _currentTransaction: TransactionInfo = new TransactionInfo();\n private _currentLineOperationStatus: LineOperationStatus = new LineOperationStatus();\n private _currentLineOperationStatuses: LineOperationStatus[] = [];\n\n constructor(\n public _connector: IOneConnectorAdapterService,\n ) {\n this._initializeTransaction();\n }\n\n public async getArticleFullObject(goodId: number): Promise<ArticleFullObject> {\n return await this._connector.getArticleFullObject(goodId);\n }\n\n public async getGoodIdFromArticleNr(sku: string): Promise<number> {\n return await this._connector.getGoodIdFromArticleNr(sku);\n }\n\n public async getRelation(): Promise<RelationAnyType> {\n const relationNo: string = await this._connector.getRelationNumber(this._currentTransaction.relation.relationId);\n\n if (relationNo) {\n this._currentRelation = await this._connector.getCustomerFullObject(Number(relationNo));\n await this.loadCountriesOfRelationAddresses();\n }\n return this._currentRelation;\n }\n\n public async loadCountriesOfRelationAddresses(): Promise<void> {\n for (const address of this.currentRelation.addresses) {\n const country: Country = await this.getCountry(address.countryId);\n address.countryName = country.description;\n }\n }\n\n public async getCountry(countryCode: string): Promise<Country> {\n return await this._connector.getCountry(countryCode);\n }\n\n public async getRelationNumber(relationId: number): Promise<string> {\n return this._connector.getRelationNumber(relationId);\n }\n\n public async saveNewRelation(): Promise<void> {\n this.cleanRelationBeforeSave();\n this._currentRelation = await this._connector.insertCustomer(this._currentRelation);\n await this.addRelationToTransaction(this._currentRelation.relationId);\n }\n\n public async saveRelation(): Promise<void> {\n this.cleanRelationBeforeSave();\n this._currentRelation = await this._connector.updateCustomer(this._currentRelation);\n }\n\n public cleanRelationBeforeSave(): void {\n ArrayUtils.RemoveElementsByFilter(this._currentRelation.contactOptions, ((item: ContactOption) => {\n return isNill(item.value);\n }));\n }\n\n public async getSequenceValue(): Promise<number> {\n return await this._connector.getSequenceValue(SequenceName.RelationId);\n }\n\n public async getRelationPrivacySettings(): Promise<RelationPrivacySetting[]> {\n return await this._connector.getRelationPrivacySettings();\n }\n\n public async createTransaction(): Promise<boolean> {\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n this._connector.createTransaction(TransactionKind.SalesOrder, \"1\").then((response: TransactionInfoResponse) => {\n this._rememberCurrentTransaction(response);\n resolve(true);\n }, (error) => {\n reject(error);\n }).catch((reason: ValidationResult) => {\n reject(false);\n });\n });\n }\n\n public resolvePendingLineReason(pendingLineValues: ResolvePendingLineReasonRequest): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve: Function) => {\n this._connector.resolvePendingLineReason(pendingLineValues).then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n resolve(response);\n }).catch((reason: ValidationResult) => {\n resolve();\n });\n });\n }\n\n public async getTransaction(transactionNo: number): Promise<boolean> {\n return await this.openExistingTransaction(TransactionKind.SalesOrder, transactionNo);\n }\n\n public openExistingTransaction(kind: TransactionKind, transactionNr: number): Promise<boolean> {\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n this._connector.getTransactionByNrAndKind(kind, transactionNr)\n .then(async (response: TransactionInfoResponse) => {\n this._rememberCurrentTransaction(response);\n if (response.isSuccess) {\n resolve(true);\n } else {\n reject(false);\n }\n })\n .catch((reason: ValidationResult) => {\n reject(false);\n });\n });\n }\n\n public async saveTransaction(close: boolean = false): Promise<void> {\n const response: TransactionInfoResponse = await this._connector.saveTransaction(this.currentTransaction.uuid);\n if (response.isSuccess) {\n this._rememberCurrentTransaction(response);\n }\n }\n\n public async addRelationToTransaction(relationId: number): Promise<void> {\n const success: boolean = await this._connector.addRelationToTransaction(this._currentTransaction.uuid, relationId);\n if (success) {\n await this.saveTransaction();\n await this.getTransaction(this._currentTransaction.transactionNr);\n }\n }\n\n public async getCommissionCodes(languageCode: string): Promise<CoDomainValue[]> {\n return await this._connector.getCommissionCodes(languageCode);\n }\n\n public async getInOutCollection(languageCode: string): Promise<CoDomainValue[]> {\n return await this._connector.getInOutCollection(languageCode);\n }\n\n public async getTransactionArticleWarehouses(goodId: number): Promise<TransactionArticleWarehouse[]> {\n return this._connector.getTransactionArticleWarehouses(goodId);\n }\n\n public async getMarketingCodes(): Promise<Marketing[]> {\n return await this._connector.getMarketingCodes();\n }\n\n public async insertCustomer(relation: CustomerFullObject): Promise<CustomerFullObject> {\n return await this._connector.insertCustomer(relation);\n }\n\n public async updateCustomer(relation: CustomerFullObject): Promise<CustomerFullObject> {\n return new Promise<CustomerFullObject>((resolve, reject) => {\n this._connector.updateCustomer(relation).then(async( response: CustomerFullObject) => {\n this._currentRelation = relation;\n resolve(response);\n })\n .catch((response: CustomerFullObject) => {\n resolve(response);\n });\n });\n }\n\n public async getDeliveryMethods(): Promise<DeliveryMethod[]> {\n return await this._connector.getDeliveryMethods();\n }\n\n public async getDeliveryOptions(): Promise<DeliveryOption[]> {\n return await this._connector.getDeliveryOptions();\n }\n\n public async setTransactionDeliveryOptions(): Promise<boolean> {\n const transactionDeliveryOptionsRequest: SetTransactionDeliveryOptionsRequest = this._getTransactionDeliveryOptions();\n return new Promise<boolean>((resolve, reject) => {\n this._connector.setTransactionDeliveryOptions(transactionDeliveryOptionsRequest).then(async( response: TransactionResponseBase) => {\n resolve(response.isSuccess);\n }, (error) => {\n reject(error);\n })\n .catch((response: TransactionResponseBase) => {\n resolve(false);\n });\n });\n }\n\n public async getRelationListObjects(relationRequest: RelationRequest): Promise<RelationListObject[]> {\n return await this._connector.getRelationListObjects(relationRequest);\n }\n\n public async retrieveLineImage(line: TransactionLineInfo): Promise<string> {\n const goodId: number = await this._connector.getGoodIdFromArticleNr(line.articleNumber);\n if (!isNaN(goodId)) {\n return this._connector.getSingleImage(goodId, 1, true, true);\n } else {\n return \"\";\n }\n }\n\n public async addArticle(articleNo: string, amount: number = 1, warehouseNo: number = 1, commissionCode: string = \"2\", isReturn: boolean = false, aboveLineNr: number = 0, belowLineNr: number = 0): Promise<boolean> {\n return new Promise<boolean>((resolve, reject) => {\n this._connector.addTransactionLine(this._currentTransaction.uuid, TransactionLineType.ArticleLine, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)\n .then(async( response: LineOperationResponse) => {\n resolve(true);\n }, (error) => {\n reject(error);\n })\n .catch((reason: ValidationResult) => {\n resolve(false);\n });\n });\n }\n\n public async addTransactionLine(lineType: TransactionLineType,\n articleNo: string,\n amount: number,\n warehouseNo?: number,\n commissionCode?: string,\n isReturn?: boolean,\n aboveLineNr?: number,\n belowLineNr?: number): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve, reject) => {\n this._connector.addTransactionLine(this.currentTransaction.uuid, lineType, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)\n .then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n resolve(response);\n }, (error) => {\n reject(error);\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async addTextLineToTransaction(\n showOnDocuments: number,\n text: string,\n amount: number,\n articleBound: boolean,\n refArticleLineNr: number,\n aboveLineNr?: number,\n belowLineNr?: number): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve, reject) => {\n this._connector.addTextLineToTransaction(this.currentTransaction.uuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr)\n .then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n resolve(response);\n }, (error) => {\n reject(error);\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public changeLineSequence(\n lineUuid: string,\n aboveLineNr?: number,\n belowLineNr?: number): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve, reject) => {\n this._connector.changeLineSequence(this.currentTransaction.uuid, lineUuid, aboveLineNr, belowLineNr)\n .then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n resolve(response);\n }, (error) => {\n reject(error);\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async cancelAddTransactionLine(lineUuid: string): Promise<TransactionInfoResponse> {\n return new Promise<TransactionInfoResponse>((resolve, reject) => {\n this._connector.cancelAddTransactionLine(lineUuid)\n .then(async (response: TransactionInfoResponse) => {\n this._rememberCurrentTransaction(response);\n if (response.isSuccess) {\n resolve(response);\n } else {\n reject(response);\n }\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async deleteTransactionLine(transactionUuid: string, TransactionLineUuid: string): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve, reject) => {\n this._connector.deleteTransactionLine(transactionUuid, TransactionLineUuid)\n .then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n if (response.isSuccess) {\n resolve(response);\n } else {\n reject(response);\n }\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async changeTransactionLineQuantity(lineUuid: string, newQuantity: number): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve: Function) => {\n this._connector.changeTransactionLineQuantity(this.currentTransaction.uuid, lineUuid, newQuantity)\n .then(async (response: LineOperationResponse) => {\n if (response.isSuccess) {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n }\n resolve(response);\n }).catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async setRelationByUser(username: string, password: string): Promise<boolean> {\n return new Promise<boolean>((resolve: Function) => {\n this._connector.setRelationByUser(this.currentTransaction.uuid, username, password)\n .then(async (isSuccess: boolean) => {\n resolve(isSuccess);\n }).catch((reason: ValidationResult) => {\n resolve(false);\n });\n });\n }\n // public async setRelationByUser(username: string, password: string): Promise<boolean> {\n // const response: boolean = await this._connector.setRelationByUser(this.currentTransaction.uuid, username, password);\n // return response;\n // }\n\n private _initializeTransaction(): void {\n if (this._currentTransaction.preferredDeliveryDate2 === undefined) {\n this._currentTransaction.preferredDeliveryDate2 = \"=\";\n }\n }\n private _rememberCurrentTransaction(value: TransactionInfoResponse): void {\n this._currentTransaction = value.transactionInfo;\n this._initializeTransaction();\n\n this.currentLines = value.transactionLines;\n this.currentTotals = value.transactionTotal;\n\n this.currentLineOperationStatuses = value.lineOperationStatuses;\n\n this._updateRelation();\n this.transactionUpdated.emit();\n }\n\n private _rememberCurrentTransactionLineStatus(value: LineOperationResponse): void {\n // this._currentLineOperationStatus.uuid = value.lineUuid;\n // this._currentLineOperationStatus.pendingReason = value.pendingReason;\n // this._currentLineOperationStatus.pendingReasonType = value.pendingReasonType;\n }\n\n private async _updateRelation(): Promise<void> {\n if (this.currentTransaction && this.currentTransaction.relation && this.currentTransaction.relation.relationId) {\n if (!this._currentRelation || this._currentRelation.relationId !== this.currentTransaction.relation.relationId) {\n const relationNr: string = await this._connector.getRelationNumber(this.currentTransaction.relation.relationId);\n if (relationNr) {\n this._currentRelation = await this._connector.getCustomerFullObject(Number(relationNr));\n }\n }\n }\n }\n\n private _getTransactionDeliveryOptions(): SetTransactionDeliveryOptionsRequest {\n const transactionDeliveryOptionsRequest: SetTransactionDeliveryOptionsRequest = new SetTransactionDeliveryOptionsRequest ();\n transactionDeliveryOptionsRequest.allowPartialDelivery = this._currentTransaction.allowPartialDelivery;\n transactionDeliveryOptionsRequest.deliveryDate = this._currentTransaction.deliveryDate;\n transactionDeliveryOptionsRequest.deliveryMethod = this._currentTransaction.deliveryMethod;\n transactionDeliveryOptionsRequest.deliveryOptions = this._currentTransaction.deliveryOptions;\n transactionDeliveryOptionsRequest.marketingCode = this._currentTransaction.marketingCode;\n transactionDeliveryOptionsRequest.ownReference = this._currentTransaction.ownReference;\n transactionDeliveryOptionsRequest.preferredDeliveryDate = this._currentTransaction.preferredDeliveryDate;\n transactionDeliveryOptionsRequest.preferredDeliveryDate2 = this._currentTransaction.preferredDeliveryDate2;\n transactionDeliveryOptionsRequest.relationReference = this._currentTransaction.relationReference;\n transactionDeliveryOptionsRequest.remark = this._currentTransaction.remark;\n transactionDeliveryOptionsRequest.transactionUuid = this._currentTransaction.uuid;\n transactionDeliveryOptionsRequest.transactionAddress = this._currentTransaction.transactionAddress.nawNr;\n transactionDeliveryOptionsRequest.invoiceAddress = this._currentTransaction.invoiceAddress.nawNr;\n return transactionDeliveryOptionsRequest;\n }\n}\n","export enum LanguageCode {\r\n Dutch = \"nl-NL\",\r\n English = \"en-GB\",\r\n German = \"de-DE\",\r\n French = \"fr-FR\",\r\n}\r\n","// Static utility functions holder related to strings.\r\nexport class StringUtils {\r\n\r\n /**\r\n * Returns a new string where given placeholder in given source string are replaced by given replacement texts.\r\n *\r\n * Example usage:\r\n *\r\n * source = \"ABCDABCD\"\r\n * placeholder = \"BC\"\r\n * replacementTexts = \"Z\", \"Z\" (REST arguments)\r\n * OUTPUT = \"AZDAZD\"\r\n *\r\n * @param {string} source\r\n * @param {string} placeholder\r\n * @param {string} replacementTexts If only one is given, this function replaces all placeholders with that single replacementText.\r\n * If more are given, placeholders without a corresponding replacementText will remain their original placeholder characters.\r\n */\r\n public static ReplaceOccurrencesIn(source: string, placeholder: string, ...replacementTexts: string[]): string {\r\n // parameter guards\r\n if (!(source)) {\r\n return undefined;\r\n }\r\n if (!placeholder || replacementTexts.length === 0) {\r\n return source;\r\n }\r\n let outString: string = source;\r\n // one replacementText means replace for all\r\n if (replacementTexts.length === 1) {\r\n // \"g\" is the g flag to replace globally\r\n outString = outString.replace(new RegExp(this._escapeRegExp(placeholder), \"g\"), replacementTexts[0]);\r\n } else {\r\n // replace occurence i by replacementTexts[i], one at a time in loop (there might be a faster way..)\r\n for (let i: number = 0, len: number = replacementTexts.length; i < len; i++) {\r\n outString = outString.replace(placeholder, replacementTexts[i]);\r\n }\r\n }\r\n return outString;\r\n }\r\n\r\n // Returns the given argument as a string. Returns given defaultValue if conversion of argument to string was impossible.\r\n public static ParseString(arg: any, defaultValue: string = \"\"): string {\r\n if (!StringUtils.IsString(arg)) {\r\n if (arg && typeof arg.toString === \"function\") {\r\n arg = arg.toString();\r\n } else {\r\n arg = defaultValue;\r\n }\r\n }\r\n return arg;\r\n }\r\n\r\n public static IsString(str: any): boolean {\r\n return typeof str === 'string';\r\n }\r\n\r\n // Returns whether given str is a string and has a length > 0.\r\n public static IsStringWithLength(str: string): boolean {\r\n return str && StringUtils.IsString(str) && str.length > 0;\r\n }\r\n\r\n // Returns given string, escaped for use as string literal in regular expressions.\r\n private static _escapeRegExp(str: string): string {\r\n return str;// .replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^$\\|]/g, \"\\\\$&\");\r\n }\r\n\r\n}\r\n","export class Dictionary {\r\n public strings: {} = {\r\n \"nl\": {\r\n \"ACCOUNT_DETAILS\": \"Accountgegevens\",\r\n \"ACCOUNT_EXPLANATION\": \"Het e-mailadres en wachtwoord zijn nodig om toegang te krijgen tot de gegevens. \" +\r\n \"Ook zullen we je via dit e-mailadres op de hoogte houden van de status van bestellingen.\",\r\n \"ADD_ARTICLE_LINE_UP\": \"Artikelregel boven toevoegen\",\r\n \"ADD_ARTICLE_LINE_DOWN\": \"Artikelregel onder toevoegen\",\r\n \"ADD_ARTICLE_TEXT_LINE_UP\": \"Tekstregel boven toevoegen\",\r\n \"ADD_ARTICLE_TEXT_LINE_DOWN\": \"Tekstregel onder toevoegen\",\r\n \"ADD_DISCOUNTS\": \"Korting toevoegen\",\r\n \"ADDRESS\": \"Adres\",\r\n \"ADDRESSES\": \"Adressen\",\r\n \"ADDRESS_ADD\": \"Adres toevoegen\",\r\n \"ADDRESS_CHANGE\": \"Adres wijzigen\",\r\n \"ALWAYS_SHOW_LOGISTICS_POPUP\": \"Controleer magazijn en commissiecode\",\r\n \"ARTICLE\": \"Artikel\",\r\n \"ARTICLE_IN_OUT_COLLECTION\": \"Status van artikel is '|~'. Weet u zeker dat u door wilt gaan?\",\r\n \"ARTICLE_NR\": \"Artikelnummer\",\r\n \"ASSEMBLY_COSTS\": \"Montagekosten\",\r\n \"ASSEMBLY_DATE\": \"Montagedatum\",\r\n \"AMOUNT\": \"Aantal\",\r\n \"BACK\": \"Terug\",\r\n \"CANCEL\": \"Annuleren\",\r\n \"CANNOT_CHANGE_NEGATIVE_QUANTITY\": \"Een negatieve voorraad kan niet gewijzigd worden.\",\r\n \"CHARACTERISTIC_QUESTION\": \"Kenmerkvraag\",\r\n \"CHECK_WAREHOUSE_AND_COMMISSIONCODE\": \"Controleer magazijn en commissiecode.\",\r\n \"CITY\": \"Stad\",\r\n \"COMPANY\": \"Bedrijf\",\r\n \"COMPANY_NAME\": \"Bedrijfsnaam\",\r\n \"COMMISSION_CODE\": \"Commisiecode\",\r\n \"CONTINUE\": \"Volgende\",\r\n \"CONTINUE_ORDER_WHILE_STOCK_AVAILABLE_PLEASE_CONFIRM\": \"U heeft gekozen voor het bestellen van artikelen terwijl er nog voorraad aanwezig is. Wilt u verdergaan?\",\r\n \"CONTINUE_WITHOUT_ACCOUNT\": \"Ga door zonder account\",\r\n \"COSTS\": \"Kosten\",\r\n \"COUNTRY\": \"Land\",\r\n \"CREATE_ACCOUNT\": \"Maak een account aan\",\r\n \"CREATE_ACCOUNT_IN_2_MIN\": \"Maak binnen 2 minuten een account aan.\",\r\n \"DATE_OF_BIRTH\": \"Geboortedatum\",\r\n \"DELETE_TRANSACTION_LINE\": \"Transactieregel verwijderen?\",\r\n \"DELETE_TRANSACTION_LINE_HINT\": \"Verwijder transactieregel\",\r\n \"DELETE_TRANSACTION_LINE_FAILED\": \"Het verwijderen van de transactieregel is mislukt\",\r\n \"DELIVERY\": \"Bezorging\",\r\n \"DELIVERY_ADDRESS\": \"Afleveradres\",\r\n \"DELIVERY_ADDRESS_ADD\": \"Bezorgadres toevoegen\",\r\n \"DELIVERY_ADDRESS_CHANGE\": \"Bezorgadres wijzigen\",\r\n \"DELIVERY_COSTS\": \"Bezorgkosten\",\r\n \"DELIVERY_DATE\": \"Leverdatum\",\r\n \"DELIVERY_DATE_FINAL\": \"Definitieve leverdatum\",\r\n \"DELIVERY_DIRECT\": \"Direct leverbaar\",\r\n \"DELIVERY_LOCATION\": \"Bezorgingslocatie\",\r\n \"DELIVERY_OPTIONS\": \"Leveropties\",\r\n \"DELIVERY_METHOD2\": \"Levermethode\",\r\n \"DELIVERY_MOMENT\": \"Levermoment\",\r\n \"DELIVERY_OPTARTICLE_NRIONS\": \"Bezorgopties\",\r\n \"DELIVERY_TIME_PERIOD\": \"Levertijd\",\r\n \"DESCRIPTION\": \"Omschrijving\",\r\n \"DISCOUNT\": \"Korting\",\r\n \"DISCOUNT_AMOUNT\": \"Kortingsbedrag\",\r\n \"DISCOUNT_PERCENTAGE\": \"Kortings %\",\r\n \"DROPSHIPMENT\": \"Dropshipment\",\r\n \"EMAIL_ADDRESS\": \"E-mailadres\",\r\n \"EXISTING_CUSTOMERS\": \"Bestaande klanten\",\r\n \"FEMALE\": \"Vrouw\",\r\n \"FIRST_NAME\": \"Voornaam\",\r\n \"GOOD_DESCRIPTION\": \"Artikelomschrijving\",\r\n \"HOUSE_NO\": \"Huisnummer\",\r\n \"HOUSE_NO_ADDITION\": \"Huisnummer toevoeging\",\r\n \"INVITE_TO_ACCOUNT\": \"Uitnodigen voor account\",\r\n \"INVOICE_ADDRESS\": \"Factuuradres\",\r\n \"INVOICE_ADDRESS_ADD\": \"Factuuradres toevoegen\",\r\n \"INVOICE_ADDRESS_CHANGE\": \"Factuuradres wijzigen\",\r\n \"LAST_NAME\": \"Achternaam\",\r\n \"LINE_NEEDS_COMMISSION_CODE\": \"De commisiecode ontbreekt. Vul de commissiecode in.\",\r\n \"LOGIN\": \"Inloggen\",\r\n \"LOGIN_DETAILS\": \"Inloggegevens\",\r\n \"MALE\": \"Man\",\r\n \"MARKETING\": \"Marketing\",\r\n \"NAME\": \"Naam\",\r\n \"NETT\": \"Netto\",\r\n \"NEW_AT\": \"Nieuw bij \",\r\n \"NEW_LOCATION\": \"Nieuwe locatie\",\r\n \"NO_IMAGE\": \"Afbeelding niet beschikbaar\",\r\n \"NOT_AFTER\": \"Niet later dan\",\r\n \"NOT_BEFORE\": \"Niet eerder dan\",\r\n \"NR\": \"Nummer\",\r\n \"NUMBER\": \"Aantal\",\r\n \"ON_DATE\": \"Op datum\",\r\n \"OPEN_SHOPPING_CART\": \"Open winkelwagen\",\r\n \"ORDER_GROSS\": \"Ordertotaal bruto\",\r\n \"ORDER_NET\": \"Ordertotaal netto\",\r\n \"ORDER_TYPE\": \"Type bestelling\",\r\n \"OVERVIEW\": \"Overzicht\",\r\n \"OWN_REFERENCE\": \"Eigen referentie\",\r\n \"PART_DELIVERIES\": \"Deelleveringen\",\r\n \"PASSWORD\": \"Wachtwoord\",\r\n \"PAYMENT\": \"Betaling\",\r\n \"PERSONAL_DATA\": \"Persoonlijke gegevens\",\r\n \"PHONE_NO\": \"Telefoonnummer\",\r\n \"POSTAL_CODE\": \"Postcode\",\r\n \"PREFERRED_DATE\": \"Voorkeursdatum\",\r\n \"PREFIX\": \"Tussenvoegsel\",\r\n \"PRICE\": \"Prijs\",\r\n \"PRICE_LIST\": \"Prijslijst\",\r\n \"PRIVACY_PREFERENCES\": \"Privacyvoorkeuren\",\r\n \"PRIVATE_PERSON\": \"Particulier\",\r\n \"QUANTITY_CANNOT_BE_ZERO_OR_EMPTY\": \"Het aantal mag geen 0 zijn.\",\r\n \"QUANTITY_CANNOT_BE_LESS_THAN_DELIVERED\": \"Het aantal moet gelijk zijn aan het geleverde aantal\",\r\n \"QUANTITY_CANNOT_BE_MORE_THAN_DELIVERED\": \"Het aantal moet gelijk zijn aan het geleverde aantal\",\r\n \"QUANTITY_CANNOT_BE_LESS_THAN_INVOICED\": \"Het aantal moet gelijk zijn aan de bestelde voorraad\",\r\n \"QUANTITY_CANNOT_BE_MORE_THAN_INVOICED\": \"Het aantal moet gelijk zijn aan de bestelde voorraad\",\r\n \"QUANTITY_CANNOT_BE_LESS_THAN_ALLOCATED\": \"Het aantal moet gelijk zijn aan dde toegewezen voorraad\",\r\n \"QUANTITY_CANNOT_BE_MORE_THAN_ALLOCATED\": \"Het aantal moet gelijk zijn aan dde toegewezen voorraad\",\r\n \"QUANTITY_CANNOT_BE_LESS_THAN_RECEIVED\": \"Het aantal moet gelijk zijn aan het aantal ontvangen.\",\r\n \"QUANTITY_CANNOT_BE_MORE_THAN_RECEIVED\": \"Het aantal moet gelijk zijn aan het aantal ontvangen\",\r\n \"QUANTUM_DISCOUNT\": \"Kwantumkorting\",\r\n \"REFERENCE_RELATION\": \"Ref. relatie\",\r\n \"REMARKS\": \"Opmerkingen\",\r\n \"SALUTATION\": \"Aanhef\",\r\n \"SAVE\": \"Opslaan\",\r\n \"SELECT\": \"Selecteren\",\r\n \"SHOPPING_CART\": \"Winkelwagen\",\r\n \"SHOPPING_CART_CHECKOUT\": \"Bestellen\",\r\n \"SHOPPING_CART_OVERVIEW\": \"Overzicht van uw bestelling\",\r\n \"SHOPPING_CART_RESUME\": \"Verder winkelen\",\r\n \"SPECIAL_DISCOUNT\": \"Speciale korting\",\r\n \"STOCK\": \"Voorraad\",\r\n \"STOCK_NOTIFICATION\": \"Voorraadmelding\",\r\n \"STOCK_AVAILABLE_CHANGE_WAREHOUSE_OR_COMMISSIONCODE\": \"Er is voldoende voorraad. Verander magazijn en/of commissiecode\",\r\n \"SUBTOTAL\": \"Subtotaal\",\r\n \"SUGGESTIONS\": \"Suggesties\",\r\n \"SURCHARGE_AMOUNT\": \"Toeslag\",\r\n \"STREET\": \"Straatnaam\",\r\n \"TOTAL_GROSS\": \"Totaal bruto\",\r\n \"TOTAL_ASSEMBLY_TIME\": \"Totale montagetijd\",\r\n \"TRANSACTION_DISCOUNT\": \"Totale transactie korting\",\r\n \"TRANSACTION_DISCOUNT_PERC\": \"% Trans. korting\",\r\n \"TRANSACTION_PRICE_DECLARATION\": \"Order prijsverklaring\",\r\n \"TRANSACTION_TOTAL\": \"Transactie totaal\",\r\n \"UNKNOWN\": \"Onbekend\",\r\n \"UNKNOWN_ADDRESS_CHECK_IT\": \"Onbekend adres\",\r\n \"VAT\": \"Btw\",\r\n \"VALUE\": \"Waarde\",\r\n \"WAREHOUSE\": \"Magazijn\",\r\n \"YOUR_DATA\": \"Uw gegevens\",\r\n },\r\n \"de\": {},\r\n \"fr\": {},\r\n \"en\": {\r\n \"ACCOUNT_DETAILS\": \"Account details\",\r\n \"ACCOUNT_EXPLANATION\": \"E-mailaddress and password are needed to gain access to the data. We also notify you on this e-mailaddress about the order status\",\r\n \"ADD_ARTICLE_LINE_UP\": \"Add article line up\",\r\n \"ADD_ARTICLE_LINE_DOWN\": \"Add article line down\",\r\n \"ADD_ARTICLE_TEXT_LINE_UP\": \"Add text line up\",\r\n \"ADD_ARTICLE_TEXT_LINE_DOWN\": \"Add text line down\",\r\n \"ADD_DISCOUNTS\": \"Add discount\",\r\n \"ADDRESS\": \"Address\",\r\n \"ADDRESSES\": \"Addresses\",\r\n \"ADDRESS_ADD\": \"Add address\",\r\n \"ADDRESS_CHANGE\": \"Change address\",\r\n \"ALWAYS_SHOW_LOGISTICS_POPUP\": \"Check warehouse and commissioncode\",\r\n \"ARTICLE\": \"Article\",\r\n \"ARTICLE_IN_OUT_COLLECTION\": \"Status of article is '|~'. Are you sure to proceed?\",\r\n \"ARTICLE_NR\": \"Article number\",\r\n \"ASSEMBLY_COSTS\": \"Assembly costs\",\r\n \"ASSEMBLY_DATE\": \"Assembly date\",\r\n \"AMOUNT\": \"Amount\",\r\n \"BACK\": \"Back\",\r\n \"CANCEL\": \"Cancel\",\r\n \"CANNOT_CHANGE_NEGATIVE_QUANTITY\": \"A negative supply cannot be changed.\",\r\n \"CHARACTERISTIC_QUESTION\": \"Characteristic question\",\r\n \"CHECK_WAREHOUSE_AND_COMMISSIONCODE\": \"Check warehouse and commissioncode\",\r\n \"CITY\": \"City\",\r\n \"COMPANY\": \"Company\",\r\n \"COMPANY_NAME\": \"Company name\",\r\n \"COMMISSION_CODE\": \"Commission code\",\r\n \"CONTINUE\": \"Next\",\r\n \"CONTINUE_ORDER_WHILE_STOCK_AVAILABLE_PLEASE_CONFIRM\": \"You have chosen to order articles while stock is still available. Do you wish to proceed?\",\r\n \"CONTINUE_WITHOUT_ACCOUNT\": \"Continue without an account\",\r\n \"COSTS\": \"Costs\",\r\n \"COUNTRY\": \"Country\",\r\n \"CREATE_ACCOUNT\": \"Create an account\",\r\n \"CREATE_ACCOUNT_IN_2_MIN\": \"Create an account in 2 minutes.\",\r\n \"DATE_OF_BIRTH\": \"Date of birth\",\r\n \"DELETE_TRANSACTION_LINE\": \"Delete transaction line verwijderen?\",\r\n \"DELETE_TRANSACTION_LINE_HINT\": \"Delete transaction line\",\r\n \"DELETE_TRANSACTION_LINE_FAILED\": \"Deletion of transaction line has failed\",\r\n \"DELIVERY\": \"Delivery\",\r\n \"DELIVERY_ADDRESS\": \"Delivery address\",\r\n \"DELIVERY_ADDRESS_ADD\": \"Add delivery address\",\r\n \"DELIVERY_ADDRESS_CHANGE\": \"Change delivery address\",\r\n \"DELIVERY_COSTS\": \"Delivery costs\",\r\n \"DELIVERY_DATE\": \"Delivery date\",\r\n \"DELIVERY_DATE_FINAL\": \"Final delivery date\",\r\n \"DELIVERY_DIRECT\": \"Direct delivery\",\r\n \"DELIVERY_LOCATION\": \"Delivery location\",\r\n \"DELIVERY_OPTIONS\": \"Delivery options\",\r\n \"DELIVERY_METHOD2\": \"Delivery method\",\r\n \"DELIVERY_MOMENT\": \"Delivery moment\",\r\n \"DELIVERY_OPTARTICLE_NRIONS\": \"Delivery options\",\r\n \"DELIVERY_TIME_PERIOD\": \"Delivery time period\",\r\n \"DESCRIPTION\": \"Description\",\r\n \"DISCOUNT\": \"Discount\",\r\n \"DISCOUNT_AMOUNT\": \"Discount amount\",\r\n \"DISCOUNT_PERCENTAGE\": \"Discount %\",\r\n \"DROPSHIPMENT\": \"Dropshipment\",\r\n \"EMAIL_ADDRESS\": \"E-mailadres\",\r\n \"EXISTING_CUSTOMERS\": \"Existing customers\",\r\n \"FEMALE\": \"Female\",\r\n \"FIRST_NAME\": \"First name\",\r\n \"GOOD_DESCRIPTION\": \"Article description\",\r\n \"HOUSE_NO\": \"Housenumber\",\r\n \"HOUSE_NO_ADDITION\": \"Housenumber addition\",\r\n \"INVITE_TO_ACCOUNT\": \"Invite account\",\r\n \"INVOICE_ADDRESS\": \"Invoice address\",\r\n \"INVOICE_ADDRESS_ADD\": \"Add invoice address\",\r\n \"INVOICE_ADDRESS_CHANGE\": \"Change invoice address\",\r\n \"LAST_NAME\": \"Last name\",\r\n \"LINE_NEEDS_COMMISSION_CODE\": \"Line needs a commission code\",\r\n \"LOGIN\": \"Login\",\r\n \"LOGIN_DETAILS\": \"Login details\",\r\n \"MALE\": \"Male\",\r\n \"MARKETING\": \"Marketing\",\r\n \"NAME\": \"Name\",\r\n \"NETT\": \"Net\",\r\n \"NEW_AT\": \"New at \",\r\n \"NEW_LOCATION\": \"New location\",\r\n \"NO_IMAGE\": \"No image available\",\r\n \"NOT_AFTER\": \"Not after\",\r\n \"NOT_BEFORE\": \"Not before\",\r\n \"NR\": \"Number\",\r\n \"NUMBER\": \"Amount\",\r\n \"ON_DATE\": \"On date\",\r\n \"OPEN_SHOPPING_CART\": \"Open shopping cart\",\r\n \"ORDER_GROSS\": \"Total gross amount\",\r\n \"ORDER_NET\": \"Total net amount\",\r\n \"ORDER_TYPE\": \"Order type\",\r\n \"OVERVIEW\": \"Overview\",\r\n \"OWN_REFERENCE\": \"Own reference\",\r\n \"PART_DELIVERIES\": \"Partial deliveries\",\r\n \"PASSWORD\": \"Password\",\r\n \"PAYMENT\": \"Payment\",\r\n \"PERSONAL_DATA\": \"Personal data\",\r\n \"PHONE_NO\": \"Telephone number\",\r\n \"POSTAL_CODE\": \"postal code\",\r\n \"PREFERRED_DATE\": \"Preferred date\",\r\n \"PREFIX\": \"Prefix\",\r\n \"PRICE\": \"Price\",\r\n \"PRICE_LIST\": \"Pricelist\",\r\n \"PRIVACY_PREFERENCES\": \"Privacy preferences\",\r\n \"PRIVATE_PERSON\": \"Private\",\r\n \"QUANTITY_CANNOT_BE_ZERO_OR_EMPTY\": \"Quantity cannot be zero or empty\",\r\n \"QUANTUM_DISCOUNT\": \"Quantum discount\",\r\n \"REFERENCE_RELATION\": \"Ref. relation\",\r\n \"REMARKS\": \"Remarks\",\r\n \"SALUTATION\": \"Salutation\",\r\n \"SAVE\": \"Save\",\r\n \"SELECT\": \"Select\",\r\n \"SHOPPING_CART\": \"Shopping cart\",\r\n \"SHOPPING_CART_CHECKOUT\": \"Checkout\",\r\n \"SHOPPING_CART_OVERVIEW\": \"Order overview\",\r\n \"SHOPPING_CART_RESUME\": \"Resume shopping\",\r\n \"SPECIAL_DISCOUNT\": \"Special discount\",\r\n \"STOCK\": \"Stock\",\r\n \"STOCK_NOTIFICATION\": \"Stock notification\",\r\n \"STOCK_AVAILABLE_CHANGE_WAREHOUSE_OR_COMMISSIONCODE\": \"Not enough supply. Change warehouse and/or commissioncode\",\r\n \"SUBTOTAL\": \"Subtotal\",\r\n \"SUGGESTIONS\": \"Suggestions\",\r\n \"SURCHARGE_AMOUNT\": \"Surcharge\",\r\n \"STREET\": \"Streetname\",\r\n \"TOTAL_GROSS\": \"Gross total\",\r\n \"TOTAL_ASSEMBLY_TIME\": \"Total assembly time\",\r\n \"TRANSACTION_DISCOUNT\": \"Total transaction discount\",\r\n \"TRANSACTION_DISCOUNT_PERC\": \"% Trans. discount\",\r\n \"TRANSACTION_PRICE_DECLARATION\": \"Transaction price declaration\",\r\n \"TRANSACTION_TOTAL\": \"Transaction total\",\r\n \"UNKNOWN\": \"unknown\",\r\n \"UNKNOWN_ADDRESS_CHECK_IT\": \"Unknown address\",\r\n \"VALUE\": \"Value\",\r\n \"VAT\": \"VAT\",\r\n \"WAREHOUSE\": \"Warehouse\",\r\n \"YOUR_DATA\": \"Your data\",\r\n },\r\n };\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { LanguageCode } from \"../enum/language-code.enum\";\r\nimport { StringUtils } from \"../utils/string-utils\";\r\nimport { Dictionary } from \"../../assets/dictionary/text.properties\";\r\n\r\n// The localization service, providing peers with text translation functionality.\r\n@Injectable()\r\nexport class DictionaryService {\r\n private readonly dictionaryUrl: string = \"js/browser/res/dictionary/\";\r\n\r\n public get language(): string {\r\n return this._language;\r\n }\r\n\r\n public set rootUrl(value: string) {\r\n this._rootUrl = value;\r\n this._dictBasePath = this._rootUrl + \"/\" + this.dictionaryUrl;\r\n }\r\n\r\n // public dictionaryLoaded: Subject<void> = new Subject();\r\n\r\n private _dictBasePath: string;\r\n private _rootUrl: string;\r\n // private _dictionaryPromise: Map<LanguageCode, Promise<{ [key: string]: string }>> = new Map<LanguageCode, Promise<{ [key: string]: string }>>();\r\n private _dictionaries: Map<string, { [key: string]: string }> = new Map<string, { [key: string]: string }>();\r\n private _language: string;\r\n\r\n // Some dictionary values have one or more '|~' texts in them, meant to be replaced with client-side given texts.\r\n private readonly _placeholder: string = \"|~\";\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n // Loads the dictionary for given language in memory.\r\n public async setDictionary(language: string): Promise<void> {\r\n this._language = language || LanguageCode.Dutch;\r\n if (!this._dictionaries.has(this._language)) {\r\n const dictionary: Dictionary = new Dictionary();\r\n // eslint-disable-next-line no-magic-numbers\r\n if (dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {\r\n // eslint-disable-next-line no-magic-numbers\r\n this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the localized text for the given dictionary key.\r\n * @param {string} key\r\n * @param {boolean} [upperCaseFirst = true] False for first letter lowercase, true for first letter uppercase for returned dict val\r\n * @param {string[]} replacementTexts Rest params for replacement of '|~' in returned dict value\r\n * @returns {string} The translated text for given dictionary key\r\n */\r\n public get(key: string, upperCaseFirst: boolean = true, ...replacementTexts: string[]): string {\r\n if (!StringUtils.IsStringWithLength(key)) {\r\n return key || \"\";\r\n }\r\n\r\n let text: string = this._dictionaries.get(this.language)[key];\r\n text = StringUtils.IsStringWithLength(text) ? text : key;\r\n\r\n if (upperCaseFirst) {\r\n text = text.charAt(0).toUpperCase() + text.slice(1);\r\n } else {\r\n text = text.charAt(0).toLowerCase() + text.slice(1);\r\n }\r\n\r\n if (replacementTexts.length > 0) {\r\n text = StringUtils.ReplaceOccurrencesIn(text, this._placeholder, ...replacementTexts);\r\n }\r\n\r\n return text;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\nimport {Subject} from \"rxjs\";\nimport {BusinessObject} from \"@colijnit/transactionapi/build/model/business-object\";\nimport {PositionGridRow} from \"../../enum/position-grid-row.enum\";\n\n@Injectable({providedIn: \"root\"})\nexport class TransactionEventService {\n public readonly addToCartBySku: Subject<{sku: string, amount: number, popCart: boolean}> = new Subject<{sku: string, amount: number, popCart: boolean}>();\n public readonly addToCartBySelectorResult: Subject<{selectorResult: {goodId: number, baseGoodId: number, selectorData: any, quantity: number}, popCart: boolean}> =\n new Subject<{selectorResult: {goodId: number, baseGoodId: number, selectorData: any, quantity: number}, popCart: boolean}>();\n public readonly openShoppingCartModule: Subject<void> = new Subject<void>();\n public readonly loggedIn: Subject<void> = new Subject<void>();\n public readonly addNewUserToShoppingCartModule: Subject<string> = new Subject<string>();\n public readonly addUserRelationShoppingCartModule: Subject<{user: string, pw: string}> = new Subject<{user: string, pw: string}>();\n public readonly addArticleLine: Subject<{lineNr: number, beforeOrAfter: PositionGridRow}> = new Subject<{lineNr: number, beforeOrAfter: PositionGridRow}>();\n public readonly addTextLine: Subject<{lineNr: number, beforeOrAfter: PositionGridRow}> = new Subject<{lineNr: number, beforeOrAfter: PositionGridRow}>();\n public readonly addArticleLineAt: Subject<{sku: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow}> = new Subject<{sku: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow}>();\n public readonly addTextLineAt: Subject<{text: string, lineNr: number, beforeOrAfter: PositionGridRow}> = new Subject<{text: string, lineNr: number, beforeOrAfter: PositionGridRow}>();\n public readonly changeLineSequence: Subject<({fromIndex: number, toIndex: number})> = new Subject<{fromIndex: number, toIndex: number}>();\n}\n","export enum CheckoutSteps {\r\n Overview,\r\n // Login,\r\n Relation = 1,\r\n Delivery = 2,\r\n Payment = 3,\r\n Printing = 4\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from \"@angular/core\";\n\n@Component({\n selector: \"checkout-overview-block\",\n template: `\n <div class=\"overview-wrapper\" fxLayout=\"column\" fxLayoutGap=\"0px\">\n <div class=\"overview-header\" fxLayout=\"row\">\n </div>\n <div class=\"overview-body\" fxLayout=\"row\" fxLayoutGap=\"20px\">\n <ng-content select=\"[edit-mode-content]\"></ng-content>\n </div>\n </div>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\"\n ]\n})\nexport class CheckoutOverviewBlockComponent implements OnInit {\n @Input()\n public sequenceNr: number = 1;\n\n @Input()\n public label: string;\n\n @Input()\n public startInEdit: boolean = false;\n\n public editMode: boolean = false;\n\n @Output()\n public editModeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor() {\n }\n\n ngOnInit(): void {\n if (this.startInEdit) {\n this.editMode = true;\n }\n }\n\n public startEdit(): void {\n this.editMode = true;\n this.editModeChange.emit(this.editMode);\n }\n\n public stopEdit(emitChange: boolean = true): void {\n this.editMode = false;\n if (emitChange) {\n this.editModeChange.emit(this.editMode);\n }\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {NULL_RELATION_OBJECT} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\nimport {CommunicationType} from \"@colijnit/transactionapi/build/enum/communication-type.enum\";\nimport {ContactOption} from \"@colijnit/transactionapi/build/model/contact-option.bo\";\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\nimport {RelationNameKind} from \"@colijnit/transactionapi/build/enum/relation-name-kind.enum\";\nimport {AddressType} from \"@colijnit/transactionapi/build/enum/address-type.enum\";\nimport {RelationPrivacySetting} from \"@colijnit/transactionapi/build/model/relation-privacy-setting.bo\";\nimport {GenderType} from \"@colijnit/transactionapi/build/enum/gender-type.enum\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {BusinessObjectUtils} from \"@colijnit/transactionapi/build/utils/business-object-utils\";\nimport {FormComponent} from \"@colijnit/corecomponents_v12\";\nimport {FunctionUtils} from \"@colijnit/transactionapi/build/utils/function-utils\";\nimport {ObjectUtils} from \"@colijnit/transactionapi/build/utils/object-utils\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\nimport {RelationRequest} from \"@colijnit/transactionapi/build/model/relation-request\";\nimport {CoSidebarComponent} from \"@colijnit/corecomponents_v12\";\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\n\n@Component({\n selector: \"checkout-overview-relation-edit\",\n template: `\n <co-form (validSubmit)=\"validSubmit.emit()\" (invalidSubmit)=\"invalidSubmit.emit()\">\n <div>\n <label [textContent]=\"'ACCOUNT_DETAILS' | localize\"\n class=\"checkout-label-h2\"\n ></label>\n </div>\n <div>\n <label [textContent]=\"'PERSONAL_DATA' | localize\"\n class=\"checkout-label-h3\"\n ></label>7\n </div>\n <div>\n <div>\n <label [textContent]=\"'ORDER_TYPE' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n <div>\n <co-input-radio-button [name]=\"'type'\"\n [label]=\"'PRIVATE_PERSON' | localize\"\n [value]=\"relType.Private\"\n [checked]=\"relation.type === relType.Private\"\n (modelChange)=\"changeRelationType(relType.Private)\"\n ></co-input-radio-button>\n <co-input-radio-button [name]=\"'type'\"\n [label]=\"'COMPANY' | localize\"\n [value]=\"relType.Company\"\n [(model)]=\"relation.type\"\n [checked]=\"relation.type === relType.Company\"\n (modelChange)=\"changeRelationType(relType.Company)\"\n ></co-input-radio-button>\n </div>\n </div>\n <div *ngIf=\"relation.type === relType.Private\">\n <label [textContent]=\"'SALUTATION' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div>\n <co-input-radio-button [name]=\"'gender'\"\n [label]=\"'MALE' | localize\"\n [value]=\"genderType.Male\"\n [checked]=\"relation.gender === genderType.Male\"\n (modelChange)=\"changeGenderType(genderType.Male)\"\n ></co-input-radio-button>\n <co-input-radio-button [name]=\"'gender'\"\n [label]=\"'FEMALE' | localize \"\n [value]=\"genderType.Female\"\n [checked]=\"relation.gender === genderType.Female\"\n (modelChange)=\"changeGenderType(genderType.Female)\"\n ></co-input-radio-button>\n <co-input-radio-button [name]=\"'gender'\"\n [label]=\"'UNKNOWN' | localize\"\n [value]=\"genderType.Unspecified\"\n [checked]=\"relation.gender === genderType.Unspecified\"\n (modelChange)=\"changeGenderType(genderType.Unspecified)\"\n ></co-input-radio-button>\n </div>\n </div>\n <div *ngIf=\"relation.type === relType.Private\">\n <div>\n <label [textContent]=\"'NAME' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text\n [(model)]=\"relation.firstName\"\n [placeholder]=\"'FIRST_NAME' | localize \"\n (modelChange)=\"firstNameChange($event)\"\n required\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text\n [(model)]=\"relation.prefix\"\n [placeholder]=\"'PREFIX' | localize \"\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text\n [(model)]=\"relation.familyName\"\n [placeholder]=\"'LAST_NAME' | localize\"\n (modelChange)=\"familyNameChange($event)\"\n required></co-input-text>\n </div>\n </div>\n </div>\n </div>\n <div >\n <div *ngIf=\"relation?.type === relType.Company\" class=\"default-flex-column\">\n <label [textContent]=\"'COMPANY_NAME' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n <co-input-text [(model)]=\"relation.familyName\" [label]=\"'COMPANY_NAME'\" required></co-input-text>\n </div>\n </div>\n\n <div>\n <checkout-overview-relation-address\n label=\"DELIVERY_ADDRESS\" [address]=\"editFirstAddress\"\n ></checkout-overview-relation-address>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'DATE_OF_BIRTH' | localize \" [(model)]=\"dateOfBirth\" required></co-input-date>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"phoneNumber.value\" [placeholder]=\"'PHONE_NO' | localize \" required></co-input-text>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'LOGIN_DETAILS' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n <div>\n <p>{{ 'ACCOUNT_EXPLANATION' | localize }}</p>\n </div>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"emailAddress.value\" [placeholder]=\"'EMAIL_ADDRESS' | localize \" [type]=\"'email'\" required></co-input-text>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div *ngIf=\"!applicationUser\" class=\"default-flex-column\">\n <co-input-text [(model)]=\"accountPassword\" [placeholder]=\"'PASSWORD' | localize \" [type]=\"'password'\" required></co-input-text>\n </div>\n <div *ngIf=\"applicationUser\" class=\"default-flex-column\">\n <co-input-checkbox [label]=\"'INVITE_TO_ACCOUNT' | localize\" [(model)]=\"inviteToAccount\"></co-input-checkbox>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'PRIVACY_PREFERENCES' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div *ngFor=\"let privacySetting of privacySettings\">\n <div class=\"privacy-row\">\n <div class=\"privacy-column-left\">\n <co-input-checkbox [label]=\"privacySetting.description\"\n [model]=\"isShared(privacySetting)\"\n (modelChange)=\"changePrivacySetting(privacySetting, $event)\"\n ></co-input-checkbox>\n </div>\n <div class=\"privacy-column-right\">\n {{ privacySetting.explanation }}\n </div>\n </div>\n </div>\n </co-form>\n\n <co-sidebar #relationSidebar isOpen=\"false\" *ngIf=\"showRelationSidebar\">\n <div class=\"relation-sidebar-header\">\n <label [textContent]=\"'SUGGESTIONS' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n <checkout-relation-suggestions-list\n [suggestions]=\"relationSuggestions\"\n (suggestionButtonClick)=\"onRelationSuggestionClick($event)\"\n ></checkout-relation-suggestions-list>\n </co-sidebar>\n\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\",\n \"./checkout-overview-relation-edit.component.scss\"\n ]\n})\nexport class CheckoutOverviewRelationEditComponent implements OnInit, AfterViewInit {\n @ViewChild(FormComponent, {static: true})\n public relationForm: FormComponent;\n\n @ViewChild(CoSidebarComponent, {static: false})\n public relationSidebar: CoSidebarComponent;\n\n @Input()\n public set relation(value: RelationAnyType) {\n this._relation = value;\n\n this.preparePrimaryEmail();\n this.preparePrimaryPhone();\n }\n\n @Input()\n public transaction: TransactionInfo;\n\n @Output()\n public validSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public invalidSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n public testje: boolean = false;\n public dateOfBirth: Date = new Date();\n public accountPassword: string = \"\";\n public hide: boolean = true;\n public gender: GenderType = GenderType.Unspecified;\n public emailAddress: ContactOption = new ContactOption();\n public phoneNumber: ContactOption = new ContactOption();\n public privacySettings: RelationPrivacySetting[];\n public relationSuggestions: RelationListObject[] = [];\n public showRelationSidebar: boolean = false;\n public inviteToAccount: boolean = false;\n\n public readonly relType: typeof RelationNameKind = RelationNameKind;\n public readonly genderType: typeof GenderType = GenderType;\n\n public get relation(): RelationAnyType {\n return this._relation;\n }\n\n public get relationAsCustomer(): CustomerFullObject {\n return this._relation && this._relation as CustomerFullObject;\n }\n\n public get editFirstAddress(): Address {\n if (this.firstAddress) {\n return this.firstAddress;\n } else if (this._relation) {\n const address: Address = new Address();\n address.addressType = AddressType.DeliveryAddress;\n address.startDate = new Date();\n address.sequence = this._relation.getNextAddressSequence();\n this._relation.addresses.push(address);\n return address;\n }\n }\n\n public get firstAddress(): Address {\n if (!this.relation || !this._relation.addresses.length) {\n return;\n }\n\n return this._relation.getFirstAvailableAddress([\n AddressType.DeliveryAddress,\n AddressType.BillingAddress,\n AddressType.VisitingAddress,\n AddressType.MailingAddress,\n AddressType.NursingAddress\n ]);\n }\n\n public get applicationUser(): boolean {\n return this._transactionService.applicationUser;\n }\n\n async ngOnInit(): Promise<void> {\n this._relation.type = this.relType.Private;\n this._relation.gender = this.gender;\n await this.loadPrivacySettings();\n this._changeDetector.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this._changeDetector.detectChanges();\n }\n\n private _relation: RelationAnyType = NULL_RELATION_OBJECT;\n\n constructor(\n private _changeDetector: ChangeDetectorRef,\n private _transactionService: TransactionService,\n ) {\n }\n\n public submit(): boolean {\n return this.relationForm.submit();\n }\n\n public preparePrimaryEmail(): void {\n if (this._relation) {\n this.emailAddress = this._relation.getLowestSequenceOfContactOptionsWithType(CommunicationType.Email);\n if (isNill(this.emailAddress)) {\n this.emailAddress = new ContactOption();\n this.emailAddress.type = CommunicationType.Email;\n this.emailAddress.sequence = 0;\n this._relation.addContactOption(this.emailAddress);\n }\n if (this._transactionService.emailAddress) {\n this.emailAddress.value = this._transactionService.emailAddress;\n }\n }\n }\n\n public preparePrimaryPhone(): void {\n if (this._relation) {\n this.phoneNumber = this._relation.getLowestSequenceOfContactOptionsWithType(CommunicationType.Telephone);\n if (isNill(this.phoneNumber)) {\n this.phoneNumber = new ContactOption();\n this.phoneNumber.type = CommunicationType.Telephone;\n this.phoneNumber.sequence = 0;\n this._relation.addContactOption(this.phoneNumber);\n }\n }\n }\n\n public async loadPrivacySettings(): Promise<void> {\n this.privacySettings = await this._transactionService.getRelationPrivacySettings();\n }\n\n public async loadMarketing(): Promise<void> {\n await this._transactionService.getMarketingCodes();\n }\n\n public isShared(relationPrivacySetting: RelationPrivacySetting): boolean {\n const ownSetting: RelationPrivacySetting = BusinessObjectUtils.FindItemById(this.relationAsCustomer.relationPrivacySettings, relationPrivacySetting.getId());\n if (ownSetting) {\n return ownSetting.allowToShare;\n }\n return false;\n }\n\n public changeRelationType(value: RelationNameKind): void {\n this.relation.type = value;\n }\n\n public changeGenderType(value: GenderType): void {\n this.relation.gender = value;\n }\n\n public firstNameChange(firstName: string): void {\n if (this._relation) {\n this._relation.firstName = firstName;\n }\n this._relationNameChangeHandler.call(this);\n }\n\n public familyNameChange(familyName: string): void {\n if (this._relation) {\n this._relation.familyName = familyName;\n }\n this._relationNameChangeHandler.call(this);\n }\n\n public async onRelationSuggestionClick(relationSuggested: RelationListObject): Promise<void> {\n if (relationSuggested) {\n this.hideSidebar();\n await this._transactionService.addRelationToTransaction(relationSuggested.relationId);\n }\n }\n\n public changePrivacySetting(relationPrivacySetting: RelationPrivacySetting, value: boolean): void {\n const ownSetting: RelationPrivacySetting = BusinessObjectUtils.FindItemById(this.relationAsCustomer.relationPrivacySettings, relationPrivacySetting.getId());\n if (ownSetting) {\n ownSetting.allowToShare = value;\n } else {\n this.relationAsCustomer.relationPrivacySettings.push(relationPrivacySetting);\n }\n }\n\n public showSidebar(): void {\n this.showRelationSidebar = true;\n this._changeDetector.detectChanges();\n\n if (this.relationSidebar) {\n this.relationSidebar.show();\n }\n }\n\n public hideSidebar(): void {\n this.showRelationSidebar = false;\n this._changeDetector.detectChanges();\n\n if (this.relationSidebar) {\n this.relationSidebar.hide();\n }\n }\n\n // fetches relation suggestions\n private _relationNameChangeHandler: Function = FunctionUtils.Throttle(() => {\n return this._relationNameChangedHandlerFn();\n // eslint-disable-next-line no-magic-numbers\n }, 600);\n\n // load suggestions\n private async _relationNameChangedHandlerFn(): Promise<any> {\n const firstName: string = ObjectUtils.ValueOrDefault(this._relation.firstName);\n const secondName: string = ObjectUtils.ValueOrDefault(this._relation.familyName);\n\n if (!firstName && !secondName) {\n this.relationSuggestions = [];\n return;\n }\n\n const relationRequest: RelationRequest = {};\n relationRequest.relationType = this._relation.relationType;\n if (firstName) {\n relationRequest.firstName = firstName;\n }\n\n if (secondName) {\n relationRequest.familyName = secondName;\n }\n\n this.showSidebar();\n this.relationSuggestions = await this._transactionService.getRelationListObjects(relationRequest);\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {CoDialogComponent, CoGridComponent, FormComponent} from \"@colijnit/corecomponents_v12\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\nimport {GenderType} from \"@colijnit/transactionapi/build/enum/gender-type.enum\";\nimport {Marketing} from \"@colijnit/transactionapi/build/model/marketing.bo\";\nimport {AddressType} from \"@colijnit/transactionapi/build/enum/address-type.enum\";\nimport {DeliveryMethod} from \"@colijnit/transactionapi/build/model/delivery-method.bo\";\nimport {DeliveryOption} from \"@colijnit/transactionapi/build/model/delivery-option.bo\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {TextValueContainer} from \"../../../model/text-value-container\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\n\n@Component({\n selector: \"checkout-overview-delivery-edit\",\n template: `\n <co-form #deliveryForm (validSubmit)=\"validSubmit.emit()\" (invalidSubmit)=\"invalidSubmit.emit()\">\n <div>\n <div>\n <label [textContent]=\"'DELIVERY' | localize\"\n class=\"checkout-label-h2\"\n ></label>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <label [textContent]=\"'DELIVERY_ADDRESS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <checkout-overview-delivery-address [address]=\"deliveryAddress\"></checkout-overview-delivery-address>\n <div class=\"container-button-change-address\">\n <co-button [label]=\"'DELIVERY_ADDRESS_CHANGE' | localize\" (click)=\"changeAddress(deliveryAddressType)\"></co-button>\n </div>\n </div>\n\n <div class=\"default-flex-column\">\n <label [textContent]=\"'INVOICE_ADDRESS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <checkout-overview-delivery-address [address]=\"billingAddress\"></checkout-overview-delivery-address>\n <div class=\"container-button-change-address\">\n <co-button [label]=\"'INVOICE_ADDRESS_CHANGE' | localize\" (click)=\"changeAddress(billingAddressType)\"></co-button>\n </div>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'DELIVERY_MOMENT' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'DELIVERY_DATE' | localize \" [(model)]=\"deliveryDate\"></co-input-date>\n <co-input-checkbox [label]=\"'PART_DELIVERIES' | localize\" [(model)]=\"transaction.allowPartialDelivery\"></co-input-checkbox>\n </div>\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'PREFERRED_DATE' | localize \" [(model)]=\"preferredDate\"></co-input-date>\n <ng-container *ngFor=\"let preferredDateOption of preferredDateOptions\">\n <co-input-radio-button [name]=\"'preferedDeliveryDate2'\"\n [label]=\"preferredDateOption.text | localize\"\n [value]=\"preferredDateOption.value\"\n [checked]=\"transaction.preferredDeliveryDate2 === preferredDateOption.value\"\n (modelChange)=\"changePreferredDeliveryDate2(preferredDateOption.value)\"\n ></co-input-radio-button>\n </ng-container>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"transaction.deliveryMethod\"\n [source]=\"deliveryMethods\"\n [fields]=\"deliveryMethodFields\"\n [placeholder]=\"'DELIVERY_METHOD2' | localize\"\n [required]=\"true\"\n (modelChange)=\"onDeliveryMethodChange($event)\"\n ></co-input-combo-box>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'DELIVERY_OPTIONS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-multi-select-list\n [placeHolder]=\"'DELIVERY_OPTIONS' | localize\"\n [collection]=\"deliveryOptions\"\n [fields]=\"deliveryOptionFields\"\n [(model)]=\"transaction.deliveryOptions\"\n [showCheckbox]=\"true\"\n [required]=\"true\"\n ></co-multi-select-list>\n </div>\n </div>\n\n <div class=\"\">\n <label [textContent]=\"'REMARKS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.remark\" [placeholder]=\"'REMARKS' | localize\"></co-input-text>\n </div>\n </div>\n\n <div class=\"default-flex-column\">\n <co-input-checkbox [label]=\"'DELIVERY_DATE_FINAL' | localize\" [(model)]=\"deliveryDateFinal\"></co-input-checkbox>\n </div>\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'ASSEMBLY_DATE' | localize \" [(model)]=\"assemblyDate\"></co-input-date>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [placeholder]=\"'TOTAL_ASSEMBLY_TIME' | localize \" [(model)]=\"totalAssemblyTime\"></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-checkbox [label]=\"'DROPSHIPMENT' | localize\" [(model)]=\"dropshipment\"></co-input-checkbox>\n </div>\n\n <div class=\"default-flex-row\">\n <div>\n <label [textContent]=\"'DELIVERY_COSTS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div>{{ deliveryCosts }}</div>\n </div>\n <div>\n <label [textContent]=\"'ASSEMBLY_COSTS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div>{{ assemblyCosts }}</div>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'MARKETING' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"transaction.marketingCode\"\n [source]=\"marketing\"\n [fields]=\"marketingFields\"\n [placeholder]=\"'MARKETING' | localize\"\n [required]=\"true\"\n (modelChange)=\"onMarketingCodeChange($event)\"\n ></co-input-combo-box>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.relationReference\" [placeholder]=\"'REFERENCE_RELATION' | localize\"></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.ownReference\" [placeholder]=\"'OWN_REFERENCE' | localize\"></co-input-text>\n </div>\n </div>\n\n </co-form>\n\n <co-dialog [visible]=\"addLocationPopup\">\n <ng-container header>{{ 'NEW_LOCATION' | localize }}</ng-container>\n <co-form #locationForm (validSubmit)=\"saveLocation()\">\n <checkout-overview-relation-address\n label=\"ADDRESS\" [address]=\"newAddress\"\n ></checkout-overview-relation-address>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end\">\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"addLocationPopup = false;\"></co-button>\n <co-button [label]=\"'SAVE' | localize\" (click)=\"saveNewLocation()\"></co-button>\n </div>\n </co-form>\n </co-dialog>\n\n <co-dialog #changeLocationDialog\n [visible]=\"changeLocationPopup\"\n (closeClick)=\"onChangeLocationCancelClick()\"\n (overlayClick)=\"onChangeLocationCancelClick()\"\n >\n <ng-container header>{{ 'ADDRESS' | localize }}</ng-container>\n <co-form>\n <div class=\"form-content\">\n <div>\n <co-grid #addressGrid\n [data]=\"addresses\"\n [columns]=\"columns\"\n [pagingEnabled]=\"true\"\n [maxNumberOfRows]=\"20\"\n (rowsSelected)=\"handleAddressSelected($event)\"\n ></co-grid>\n </div>\n </div>\n <div class=\"flex-center\" fxLayoutGap=\"10px\">\n <co-button [label]=\"'ADDRESS_ADD' | localize\" (click)=\"onAddLocationOkClick()\"></co-button>\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"onChangeLocationCancelClick()\"></co-button>\n </div>\n </co-form>\n </co-dialog>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\",\n \"./checkout-overview-delivery-edit.component.scss\"\n ]\n})\nexport class CheckoutOverviewDeliveryEditComponent implements OnInit, AfterViewInit {\n public readonly deliveryAddressType: AddressType = AddressType.DeliveryAddress;\n public readonly billingAddressType: AddressType = AddressType.BillingAddress;\n\n @ViewChild(\"deliveryForm\", {read: FormComponent})\n public deliveryForm: FormComponent;\n\n @ViewChild(\"locationForm\", {read: FormComponent})\n public locationForm: FormComponent;\n\n @ViewChild(\"changeLocationDialog\")\n public changeLocationDialog: CoDialogComponent;\n\n @ViewChild(\"addressGrid\")\n public addressGrid: CoGridComponent<any>;\n\n @Input()\n public relation: RelationAnyType;\n\n @Input()\n public transaction: TransactionInfo;\n\n @Output()\n public validSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public invalidSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n public deliveryOptionList: DeliveryOption[] = [];\n public deliveryOptions: DeliveryOption[] = [];\n public deliveryOptionFields: TextValueContainer = { text: \"description\", value: \"code\" };\n public deliveryMethods: DeliveryMethod[] = [];\n public deliveryMethodFields: TextValueContainer = { text: \"description\", value: \"code\" };\n public addLocationPopup: boolean = false;\n public changeLocationPopup: boolean = false;\n public newAddress: Address;\n public preferredDateOptions: TextValueContainer[] = [\n {text: \"NOT_AFTER\", value: \">\" },\n {text: \"NOT_BEFORE\", value: \"<\" },\n {text: \"ON_DATE\", value: \"=\" },\n ];\n public preferredDate: Date = new Date();\n public gender: GenderType;\n public marketing: Marketing[] = [];\n public marketingFields: Object = { text: \"description\", value: \"code\" };\n public marketingCode: string;\n public assemblyCosts: number;\n public deliveryCosts: number;\n\n public addresses: Address[] = [];\n public selectedAddress: Address;\n public columns: any[] = [];\n\n // TODO: Deze velden nog opnemen in Transaction!!\n public deliveryDateFinal: boolean = false;\n public assemblyDate: Date = new Date();\n public totalAssemblyTime: string = \"\";\n public dropshipment: boolean = false;\n\n private _addressType: AddressType;\n\n public get billingAddress(): Address {\n if (this.transaction.invoiceAddress === undefined) {\n if (this.relation &&\n this.relation.firstBillingAddress &&\n this.relation.firstBillingAddress.isNotEmptyAddress()) {\n this.transaction.invoiceAddress = this.relation.firstBillingAddress;\n this._setCountryNameToAddress(this.transaction.invoiceAddress).then();\n }\n }\n return this.transaction.invoiceAddress;\n }\n\n public get deliveryAddress(): Address {\n if (this.transaction.transactionAddress === undefined) {\n if (this.relation &&\n this.relation.firstDeliveryAddress &&\n this.relation.firstDeliveryAddress.isNotEmptyAddress()) {\n this.transaction.transactionAddress = this.relation.firstDeliveryAddress;\n this._setCountryNameToAddress(this.transaction.transactionAddress).then();\n }\n }\n return this.transaction.transactionAddress;\n }\n\n public get deliveryDate(): Date {\n if (this.transaction.deliveryDate === undefined) {\n this.transaction.deliveryDate = new Date();\n }\n return this.transaction.deliveryDate;\n }\n\n public set deliveryDate(value: Date) {\n this.transaction.deliveryDate = value;\n }\n\n public get preferredDeliveryDate(): Date {\n if (this.transaction.preferredDeliveryDate === undefined) {\n this.transaction.preferredDeliveryDate = new Date();\n }\n return this.transaction.preferredDeliveryDate;\n }\n\n public set preferredDeliveryDate(value: Date) {\n this.transaction.preferredDeliveryDate = value;\n }\n\n public newRelationAddress(): Address {\n if (this.relation) {\n const address: Address = new Address();\n address.addressType = AddressType.DeliveryAddress;\n address.startDate = new Date();\n address.sequence = this.relation.getNextAddressSequence();\n this.relation.addresses.push(address);\n return address;\n }\n }\n\n public async ngOnInit(): Promise<void> {\n if (this.transaction) {\n if (this.transaction.transactionAddress === undefined && !this.deliveryAddress) {\n this.transaction.transactionAddress = this.deliveryAddress;\n }\n if (this.transaction.invoiceAddress === undefined && !this.billingAddress) {\n this.transaction.invoiceAddress = this.billingAddress;\n }\n }\n\n this.deliveryCosts = this.calculateDeliveryCosts();\n this.assemblyCosts = this.calculateAssemblyCosts();\n this.deliveryMethods = await this.service.getDeliveryMethods();\n this.deliveryOptionList = await this.service.getDeliveryOptions();\n this.marketing = await this.service.getMarketingCodes();\n await this.onDeliveryMethodChange(this.transaction.deliveryMethod);\n }\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n private _dictionaryService: DictionaryService,\n public service: TransactionService,\n ) {\n this.columns.push(\n {field: \"streetName\", headerText: this._dictionaryService.get(\"STREET\")},\n {field: \"houseNo\", headerText: this._dictionaryService.get(\"HOUSE_NO\")},\n {field: \"houseNoAddition\", headerText: this._dictionaryService.get(\"HOUSE_NO_ADDITION\")},\n {field: \"postalCode\", headerText: this._dictionaryService.get(\"POSTAL_CODE\"), allowFiltering: false},\n {field: \"city\", headerText: this._dictionaryService.get(\"CITY\")},\n );\n }\n\n public submit(): boolean {\n return this.deliveryForm.submit();\n }\n\n public async onDeliveryMethodChange(deliveryMethodId: string): Promise<void> {\n const deliveryMethod: DeliveryMethod[] = this.selectDeliveryMethodById(deliveryMethodId);\n this.transaction.deliveryMethod = deliveryMethodId;\n if (deliveryMethod.length) {\n this.deliveryOptions = this.selectDeliveryOptionsByDeliveryMethod(deliveryMethod[0]);\n this.transaction.deliveryOptions = [];\n if (this.deliveryOptions.length) {\n this.transaction.deliveryOptions.push(this.deliveryOptions[0].code);\n }\n }\n }\n\n public selectDeliveryOptionsByDeliveryMethod(deliveryMethod: DeliveryMethod): DeliveryOption[] {\n return this.deliveryOptionList.filter(deliveryOption => deliveryMethod.deliveryOptions.indexOf(deliveryOption.code) !== -1);\n }\n\n public selectDeliveryMethodById(deliveryMethodId: string): DeliveryMethod[] {\n return this.deliveryMethods.filter(delivery => delivery.code === deliveryMethodId);\n }\n\n public changeAddress(addressType: AddressType): void {\n this._addressType = addressType;\n this.addresses = this.relation.addresses;\n this.changeLocationPopup = true;\n }\n\n public saveNewLocation(): void {\n this.locationForm.submit();\n }\n\n public saveLocation(): void {\n this.addLocation();\n this.changeLocationPopup = false;\n }\n\n public addLocation(): void {\n this.updateAddress(this.newAddress).then();\n this.relation.addresses.push(this.newAddress);\n this.service.saveRelation().then();\n this.addLocationPopup = false;\n }\n\n public async updateAddress(address: Address): Promise<void> {\n if (this._addressType === AddressType.DeliveryAddress) {\n this.transaction.transactionAddress = address;\n } else {\n this.transaction.invoiceAddress = address;\n }\n await this._setCountryNameToAddress(address);\n }\n\n public isDeliveryOptionChecked(deliveryOptionItem: DeliveryOption): boolean {\n return (this.transaction.deliveryOptions.indexOf(deliveryOptionItem.code, 0) === 0);\n }\n\n public changePreferredDeliveryDate2(preferredDateOption: string): void {\n this.transaction.preferredDeliveryDate2 = preferredDateOption;\n }\n\n public onMarketingCodeChange(marketingCode: string): void {\n this.transaction.marketingCode = marketingCode;\n }\n\n public onChangeLocationCancelClick(): void {\n this.changeLocationPopup = false;\n }\n\n public onAddLocationOkClick(): void {\n this._addAddress(this._addressType);\n this.addLocationPopup = true;\n }\n\n public handleAddressSelected(rows: any): void {\n this.selectedAddress = (rows.find(x => x !== undefined));\n this.updateAddress(this.selectedAddress);\n this.changeLocationPopup = false;\n }\n\n private calculateDeliveryCosts(): number {\n return 0;\n }\n\n private calculateAssemblyCosts(): number {\n return 0;\n }\n\n private _addAddress(addressType: AddressType): void {\n this.newAddress = new Address();\n this.newAddress.addressType = addressType;\n this.newAddress.startDate = new Date();\n this.newAddress.sequence = this.relation.getNextAddressSequence();\n }\n\n private async _setCountryNameToAddress(address: Address): Promise<void> {\n if (address.countryId && !address.countryName) {\n const country: Country = await this.service.getCountry(address.countryId);\n address.countryName = country.description;\n }\n }\n}\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {CheckoutSteps} from \"../../../enum/checkout-steps.enum\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {NULL_RELATION_OBJECT} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\nimport {CheckoutOverviewBlockComponent} from \"../checkout-overview-block/checkout-overview-block.component\";\nimport {CheckoutOverviewRelationEditComponent} from \"../checkout-overview-relation-edit/checkout-overview-relation-edit.component\";\nimport {CheckoutOverviewDeliveryEditComponent} from \"../checkout-overview-delivery-edit/checkout-overview-delivery-edit.component\";\n\n@Component({\n selector: \"checkout-overview\",\n template: `\n <checkout-overview-block #relationBlock sequenceNr=\"2\" label=\"YOUR_DATA\"\n *ngIf=\"currentStep === steps.Relation\"\n (editModeChange)=\"handleEditChangeRelation($event)\">\n <ng-container edit-mode-content>\n <checkout-overview-relation-edit #relationForm\n *ngIf=\"currentStep == steps.Relation && editMode\"\n [relation]=\"relation\"\n [transaction]=\"transaction\"\n (validSubmit)=\"onRelationValid()\"\n (invalidSubmit)=\"onRelationInvalid()\"\n ></checkout-overview-relation-edit>\n </ng-container>\n </checkout-overview-block>\n\n <checkout-overview-block #deliveryBlock sequenceNr=\"3\" label=\"DELIVERY\"\n [hidden]=\"currentStep !== steps.Delivery\"\n (editModeChange)=\"handleEditChangeDelivery($event)\">\n <ng-container edit-mode-content>\n <checkout-overview-delivery-edit #deliveryForm\n [hidden]=\"currentStep !== steps.Delivery\"\n [relation]=\"relation\"\n [transaction]=\"transaction\"\n (validSubmit)=\"onDeliveryValid()\"\n ></checkout-overview-delivery-edit>\n </ng-container>\n </checkout-overview-block>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\"\n ]\n})\nexport class CheckoutOverviewComponent implements OnInit, OnDestroy {\n public readonly steps: typeof CheckoutSteps = CheckoutSteps;\n\n @ViewChild(\"relationBlock\", {read: CheckoutOverviewBlockComponent})\n public relationBlock: CheckoutOverviewBlockComponent;\n\n @ViewChild(\"relationForm\", {read: CheckoutOverviewRelationEditComponent})\n public relationForm: CheckoutOverviewRelationEditComponent;\n\n @ViewChild(\"deliveryBlock\", {read: CheckoutOverviewBlockComponent})\n public deliveryBlock: CheckoutOverviewBlockComponent;\n\n @ViewChild(\"deliveryForm\", {read: CheckoutOverviewDeliveryEditComponent})\n public deliveryForm: CheckoutOverviewDeliveryEditComponent;\n //\n // @ViewChild(\"paymentBlock\", {read: CheckoutOverviewBlockComponent})\n // public paymentBlock: CheckoutOverviewBlockComponent;\n\n @Input()\n public relation: RelationAnyType = NULL_RELATION_OBJECT;\n\n @Input()\n public transaction: TransactionInfo;\n\n @Input()\n public userIsApplicationUser: boolean = false;\n\n @Output()\n public saveRelation: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n public saveDelivery: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n public savePayment: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n public stepFinished: EventEmitter<void> = new EventEmitter<void>();\n\n public loginRequested: boolean = false;\n\n public currentStep: CheckoutSteps = CheckoutSteps.Relation;\n public editMode: boolean = true;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\n private _subscriptions: Subscription[] = [];\n\n constructor(\n // public service: RetailTransactionModuleService\n ) {\n // TODO: subscribe to relation and transaction service\n // this._subscriptions.push(service.relationUpdatedEventEmitter.subscribe((updated: boolean) => {\n // if (updated && this.currentStep === CheckoutSteps.Relation) {\n // this.stepFinished.emit();\n // }\n // }));\n // this._subscriptions.push(service.transactionUpdated.subscribe(() => {\n // if (this.loginRequested) {\n // this.loginRequested = false;\n // this.stepFinished.emit();\n // }\n // }));\n }\n\n ngOnInit(): void {\n if (this.transaction && this.transaction.relation) {\n this.moveToStep(CheckoutSteps.Relation);\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n public handleEditChangeRelation(editMode: boolean): void {\n this.editMode = editMode;\n if (!editMode) {\n if (this.currentStep !== CheckoutSteps.Relation) {\n this.saveRelation.emit();\n } else {\n// this.relationForm.submit();\n }\n }\n }\n\n public onRelationValid(): void {\n this.saveRelation.emit();\n }\n\n public onRelationInvalid(): void {\n this.editMode = true;\n this.relationBlock.startEdit();\n }\n\n public onDeliveryValid(): void {\n this.saveDelivery.emit();\n }\n\n public handleEditChangeDelivery(editMode: boolean): void {\n this.editMode = editMode;\n\n if (!editMode) {\n if (this.currentStep !== CheckoutSteps.Delivery) {\n// this.deliveryForm.submit();\n } else {\n this.saveDelivery.emit();\n }\n }\n }\n\n public handleEditChangePayment(editMode: boolean): void {\n this.savePayment.emit();\n }\n\n public moveToStep(step: CheckoutSteps, edit: boolean = false): void {\n this.currentStep = step;\n\n if (edit && this.isRelation()) {\n switch (step) {\n case CheckoutSteps.Relation:\n // this.stopEditLoginBlock();\n this.startEditRelationBlock();\n this.stopEditDeliveryBlock();\n this.stopEditPaymentBlock();\n return;\n case CheckoutSteps.Delivery:\n this.stopEditRelationBlock();\n this.startEditDeliveryBlock();\n this.stopEditPaymentBlock();\n return;\n case CheckoutSteps.Payment:\n this.stopEditRelationBlock();\n this.stopEditDeliveryBlock();\n this.startEditPaymentBlock();\n return;\n }\n }\n }\n\n private startEditRelationBlock(): void {\n if (this.relationBlock !== undefined) {\n this.relationBlock.startEdit();\n }\n }\n\n private startEditDeliveryBlock(): void {\n // if (this.deliveryBlock !== undefined) {\n // this.deliveryBlock.startEdit();\n // }\n }\n\n private startEditPaymentBlock(): void {\n // if (this.paymentBlock !== undefined) {\n // this.paymentBlock.startEdit();\n // }\n }\n\n private stopEditRelationBlock(): void {\n if (this.relationBlock !== undefined) {\n this.relationBlock.stopEdit(false);\n }\n }\n\n private stopEditDeliveryBlock(): void {\n // if (this.deliveryBlock !== undefined) {\n // this.deliveryBlock.stopEdit(false);\n // }\n }\n\n private stopEditPaymentBlock(): void {\n // if (this.paymentBlock !== undefined) {\n // this.paymentBlock.stopEdit(false);\n // }\n }\n\n private isRelation(): boolean {\n return (this.relation !== NULL_RELATION_OBJECT);\n }\n}\n","import {Component, Inject, ViewChild, forwardRef} from \"@angular/core\";\nimport {CheckoutSteps} from \"../../../enum/checkout-steps.enum\";\nimport {StepperSelectionEvent} from \"@angular/cdk/stepper\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\nimport {CheckoutOverviewComponent} from \"../checkout-overview/checkout-overview.component\";\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\nimport {NULL_RELATION_OBJECT} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {MatStepper} from \"@angular/material/stepper\";\nimport {PromptService} from \"@colijnit/corecomponents_v12\";\nimport {ValidationResult} from \"@colijnit/transactionapi/build/model/validation-result\";\nimport {TransactionKind} from \"@colijnit/transactionapi/build/enum/transaction-kind.enum\";\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\n\n@Component({\n selector: \"app-checkout\",\n template: `\n <div class=\"checkout-viewport\">\n <mat-horizontal-stepper #stepper\n [linear]=\"true\" labelPosition=\"bottom\"\n (selectionChange)=\"stepChanged($event)\">\n <mat-step [label]=\"'YOUR_DATA' | localize\" [completed]=\"completedRelation\"></mat-step>\n <mat-step [label]=\"'DELIVERY' | localize\" [completed]=\"completedDelivery\"></mat-step>\n <mat-step [label]=\"'PAYMENT' | localize\"></mat-step>\n <mat-step [label]=\"'OVERVIEW' | localize\"></mat-step>\n </mat-horizontal-stepper>\n <checkout-overview [relation]=\"relation\"\n [transaction]=\"transaction\"\n [userIsApplicationUser]=\"userIsApplicationUser\"\n (saveRelation)=\"handleSaveRelation()\"\n (saveDelivery)=\"handleSaveDelivery()\"\n (stepFinished)=\"stepFinished()\"></checkout-overview>\n <div class=\"step-content-customer\"></div>\n </div>\n `,\n styleUrls: [\n \"./checkout.component.scss\"\n ]\n})\nexport class CheckoutComponent {\n @ViewChild(CheckoutOverviewComponent)\n public overview: CheckoutOverviewComponent;\n\n @ViewChild(\"stepper\")\n public stepper: MatStepper;\n\n public get relation(): CustomerFullObject {\n return this.service.currentRelation;\n }\n\n public get transaction(): TransactionInfo {\n return this.service.currentTransaction;\n }\n\n public get canContinue(): boolean {\n return this.stepper && (this.stepper.selectedIndex !== 0 || !isNill(this.relation));\n }\n\n public get finished(): boolean {\n return this.stepper && this.stepper.steps && this.stepper.selectedIndex === this.stepper.steps.length - 1;\n }\n\n public get userIsApplicationUser(): boolean {\n // TODO: return this.userService.isApplicationUser;\n return true;\n }\n\n public completedRelation: boolean = false;\n public completedDelivery: boolean = false;\n\n private _relation: RelationAnyType = NULL_RELATION_OBJECT;\n\n constructor(\n public service: TransactionService,\n public promptService: PromptService\n ) {}\n\n private static _currentStepByIndex(index: number): CheckoutSteps {\n switch (index) {\n case 0:\n return CheckoutSteps.Relation;\n case 1:\n return CheckoutSteps.Delivery;\n case 2:\n return CheckoutSteps.Payment;\n default:\n return CheckoutSteps.Overview;\n }\n }\n\n public continue(): void {\n let toNextStep: boolean = false;\n if (CheckoutComponent._currentStepByIndex(this.stepper.selectedIndex ) === CheckoutSteps.Relation) {\n toNextStep = this.overview.relationForm.submit();\n this.completedRelation = toNextStep;\n this.completedDelivery = false;\n }\n\n if (CheckoutComponent._currentStepByIndex(this.stepper.selectedIndex ) === CheckoutSteps.Delivery) {\n toNextStep = this.overview.deliveryForm.submit();\n this.completedDelivery = toNextStep;\n }\n\n if (this.stepper && toNextStep) {\n this.stepper.selected.completed = true;\n this.stepper.next();\n }\n }\n\n\n public previous(): void {\n if (this.stepper) {\n this.stepper.previous();\n }\n }\n\n public stepFinished(): void {\n this.continue();\n }\n\n public handleSaveRelation(): void {\n this.saveNewRelation().then(() => {\n this.service.saveTransaction();\n });\n }\n\n public async handleSaveDelivery(): Promise<boolean> {\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n this.service.setTransactionDeliveryOptions().then(async (response) => {\n if (response) {\n await this.service.saveTransaction().then();\n } else {\n await this.promptService.showError(\"Opslag bezorging mislukt\", \" \");\n }\n resolve(true);\n }).catch((reason: ValidationResult) => {\n this.promptService.showError(\"Opslag transactie mislukt\", \" \");\n });\n });\n }\n\n public async saveNewRelation(): Promise<void> {\n if (isNill(this.service.currentRelation.relationId)) {\n await this.service.saveNewRelation();\n } else {\n await this.service.saveRelation();\n }\n }\n\n public stepChanged(event: StepperSelectionEvent): void {\n this.overview.moveToStep(CheckoutComponent._currentStepByIndex(event.selectedIndex), true);\n }\n\n public async insertData(): Promise<void> {\n await this.service.insertCustomer(this.relation);\n }\n\n public async updateData(): Promise<void> {\n const relation: RelationAnyType = this.relation;\n await this.service.updateCustomer(relation);\n }\n}\n","import {CheckoutComponent} from \"../checkout/checkout.component\";\nimport {Component, Inject, ViewChild} from \"@angular/core\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {CheckoutSteps} from \"../../../enum/checkout-steps.enum\";\n\n@Component({\n selector: \"app-retail-transaction-checkout\",\n template: `\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <app-checkout class=\"checkout\"></app-checkout>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <ng-template #content>\n <div class=\"checkout-retail-viewport checkout-row-end\">\n <co-button [label]=\"'BACK'| localize\" [disabled]=\"!canPrevious\" (click)=\"previousCheckout()\"></co-button>\n <co-button [label]=\"'CONTINUE'| localize\" [disabled]=\"!canContinue\" (click)=\"continueCheckout()\"></co-button>\n </div>\n </ng-template>\n `,\n styleUrls: [\n \"./retail-transaction-checkout.component.scss\"\n ]\n})\nexport class RetailTransactionCheckoutComponent {\n @ViewChild(CheckoutComponent, { static: true })\n public checkout: CheckoutComponent;\n\n public get canPrevious(): boolean {\n return this.checkout && this.checkout.stepper?.selectedIndex !== 0;\n }\n\n public get canContinue(): boolean {\n return this.checkout && this.checkout.stepper?.selectedIndex !== 3;\n }\n\n public get started(): boolean {\n return this.checkout && this.checkout.stepper?.selectedIndex === 0;\n }\n\n public get finished(): boolean {\n return this.checkout && this.checkout.finished;\n }\n\n constructor(\n public service: TransactionService\n ) {}\n\n public continueCheckout(): void {\n this.checkout.continue();\n }\n\n public previousCheckout(): void {\n this.checkout.previous();\n }\n}\n","import {Component, EventEmitter, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {FormComponent} from \"@colijnit/corecomponents_v12\";\n\n@Component({\n selector: \"checkout-login\",\n template: `\n <h1>{{ \"LOGIN\" | localize}}</h1>\n <div class=\"users\">\n <co-form #loginForm (validSubmit)=\"login()\">\n <div class=\"existing-user\">\n <p><strong>{{ \"EXISTING_CUSTOMERS\" | localize }}</strong></p>\n <co-input-text\n [(model)]=\"userEmailAddress\"\n [placeholder]=\"'EMAIL_ADDRESS' | localize \"\n [type]=\"'email'\"\n required\n ></co-input-text>\n\n <co-input-text\n [(model)]=\"userPassword\"\n [placeholder]=\"'PASSWORD' | localize \"\n [type]=\"'password'\"\n required\n ></co-input-text>\n <div class=\"login-button\">\n <co-button\n [label]=\"'LOGIN' | localize\" (click)=\"submit()\"\n ></co-button>\n </div>\n </div>\n </co-form>\n\n <co-form #accountForm (validSubmit)=\"accountLogin()\">\n <div class=\"new-user\">\n <p class=\"boxedbottom\">\n <strong>{{ \"NEW_AT\" | localize}}{{company}}</strong>\n <br/>{{ \"CREATE_ACCOUNT_IN_2_MIN\" | localize }}\n </p>\n <div class=\"new-user-e-mail\">\n <co-input-text\n [(model)]=\"userNewEmailAddress\"\n [placeholder]=\"'EMAIL_ADDRESS' | localize \"\n [type]=\"'email'\"\n required\n ></co-input-text>\n </div>\n <div class=\"login-button\">\n <co-button\n [label]=\"'CREATE_ACCOUNT' | localize\"\n (click)=\"createAccountSubmit()\"\n ></co-button>\n <co-button\n [label]=\"'CONTINUE_WITHOUT_ACCOUNT' | localize\"\n (click)=\"continueSubmit()\"\n ></co-button>\n </div>\n </div>\n </co-form>\n </div>\n `,\n styleUrls: [\"./checkout-login.component.scss\"]\n})\nexport class CheckoutLoginComponent implements OnInit {\n @ViewChild(\"loginForm\")\n public loginForm: FormComponent;\n\n @ViewChild(\"accountForm\")\n public accountForm: FormComponent;\n\n @Output()\n public createNewAccountSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public continueWithoutSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public loginSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n public userEmailAddress: string = \"\";\n public userNewEmailAddress: string = \"\";\n public userPassword: string = \"\";\n public continueWithoutAccount: boolean = false;\n\n public company: string = \"<bedrijf>\";\n constructor(\n ) { }\n\n ngOnInit(): void {\n }\n\n public login(): void {\n this.loginSubmit.emit();\n }\n\n public submit(): void {\n this.loginForm.submit();\n }\n\n public createAccountSubmit(): void {\n this.accountForm.submit();\n }\n\n public continueSubmit(): void {\n this.continueWithoutAccount = true;\n this.accountForm.submit();\n }\n\n public accountLogin(): void {\n if (this.continueWithoutAccount) {\n this.continueWithoutSubmit.emit();\n } else {\n this.createNewAccountSubmit.emit();\n }\n }\n}\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter, Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild, ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {OptionsService} from \"../../service/options.service\";\r\nimport {TransactionService} from \"../../service/transaction.service\";\r\nimport {DictionaryService} from \"../../service/dictionary.service\";\r\nimport {IOneConnectorAdapterService} from \"../../service/ione-connector-adapter.service\";\r\nimport {TransactionEventService} from \"../../service/transaction-event.service\";\r\nimport {RetailTransactionCheckoutComponent} from \"./../checkout/retail-transaction-checkout/retail-transaction-checkout.component\";\r\nimport {PromptService} from \"@colijnit/corecomponents_v12\";\r\nimport {CheckoutLoginComponent} from \"./checkout-login/checkout-login.component\";\r\nimport {ContactOption} from \"@colijnit/transactionapi/build/model/contact-option.bo\";\r\n\r\n@Component({\r\n selector: \"ione-checkout\",\r\n template: `\r\n <ng-container *ngIf=\"show && (applicationUser || loggedIn)\">\r\n <app-retail-transaction-checkout></app-retail-transaction-checkout>\r\n </ng-container>\r\n\r\n\r\n <div *ngIf=\"show && !applicationUser && !loggedIn\">\r\n <checkout-login\r\n #checkoutLogin\r\n (continueWithoutSubmit)=\"continueWithoutAccount()\"\r\n (createNewAccountSubmit)=\"createNewAccount()\"\r\n ></checkout-login>\r\n </div>\r\n `\r\n})\r\nexport class IoneCheckoutComponent implements OnInit, OnDestroy {\r\n @ViewChild(RetailTransactionCheckoutComponent)\r\n public retailCheckout: RetailTransactionCheckoutComponent;\r\n\r\n @ViewChild(CheckoutLoginComponent)\r\n public checkoutLogin: CheckoutLoginComponent;\r\n\r\n @Input()\r\n public set options(value: any) {\r\n if (value) {\r\n let options: any;\r\n if (typeof value === \"string\") {\r\n options = JSON.parse(value);\r\n } else {\r\n options = value;\r\n }\r\n this._publicOptions = true;\r\n this._optionsService.initialize(options).then();\r\n }\r\n }\r\n\r\n @Input()\r\n public set applicationUser(value: boolean) {\r\n this._applicationUser = value;\r\n this._service.applicationUser = this.applicationUser;\r\n }\r\n\r\n public get transactionNr(): number {\r\n return this._service.currentTransaction.transactionNr;\r\n }\r\n\r\n public get applicationUser(): boolean {\r\n return this._applicationUser;\r\n }\r\n\r\n public upAndLoaded: boolean = false;\r\n public show: boolean = false;\r\n public loggedIn: boolean = false;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n private _remoteOptions: boolean = true;\r\n private _publicOptions: boolean = true;\r\n private _applicationUser: boolean = false;\r\n\r\n constructor(\r\n public _changeDetector: ChangeDetectorRef,\r\n public _optionsService: OptionsService,\r\n public _connector: IOneConnectorAdapterService,\r\n public _dictionary: DictionaryService,\r\n public _service: TransactionService,\r\n public transactionEvents: TransactionEventService,\r\n public _promptService: PromptService,\r\n public globalEvents: TransactionEventService\r\n ) {\r\n this._subscriptions.push(\r\n this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),\r\n );\r\n\r\n this._subscriptions.push(\r\n this.transactionEvents.loggedIn.subscribe(() => {\r\n this.loggedIn = true;\r\n })\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this._publicOptions) {\r\n this._optionsService.initializeDevelopmentOptions(this._remoteOptions);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n private async _handleSettingsLoaded(loaded: boolean): Promise<void> {\r\n if (loaded) {\r\n await this._initConnection().then();\r\n this.upAndLoaded = true;\r\n }\r\n }\r\n\r\n private async _initConnection(): Promise<void> {\r\n await this._connector.connect(this._optionsService.options);\r\n\r\n if (this._optionsService.options.url) {\r\n this._dictionary.rootUrl = this._optionsService.options.url.replace(\"/ajaxservice\", \"\");\r\n }\r\n await this._dictionary.setDictionary(this._optionsService.options.languageCode);\r\n setTimeout(() => {\r\n this._changeDetector.detectChanges();\r\n });\r\n }\r\n\r\n public loginSubmit(): void {\r\n this.globalEvents.addUserRelationShoppingCartModule.next({user: this.checkoutLogin.userEmailAddress, pw: this.checkoutLogin.userPassword});\r\n this.loggedIn = true;\r\n }\r\n\r\n public continueWithoutAccount(): void {\r\n this.closeLogin();\r\n this.loggedIn = true;\r\n this.transactionEvents.addNewUserToShoppingCartModule.next(this.checkoutLogin.userNewEmailAddress);\r\n }\r\n\r\n public createNewAccount(): void {\r\n this.closeLogin();\r\n this.transactionEvents.addNewUserToShoppingCartModule.next(this.checkoutLogin.userNewEmailAddress);\r\n }\r\n\r\n private closeLogin(): void {\r\n this.loggedIn = true;\r\n this.show = true;\r\n }\r\n}\r\n","import {Component, Inject, Input, OnInit} from \"@angular/core\";\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\nimport {IOneConnectorAdapterService} from \"../../../service/ione-connector-adapter.service\";\nimport {GetPostalCodeRetrievalOutputParams} from \"@colijnit/transactionapi/build/model/get-postal-code-retrieval-output-params\";\nimport {StringUtils} from \"../../../utils/string-utils\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\n\n@Component({\n selector: \"checkout-overview-relation-address\",\n template: `\n <label [textContent]=\"label | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.postalCode\"\n [placeholder]=\"'POSTAL_CODE' | localize\"\n (blur)=\"checkForPostalCodeCheckError()\"\n required\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.houseNo\"\n [placeholder]=\"'HOUSE_NO' | localize\"\n (blur)=\"checkForPostalCodeCheckError()\"\n (modelChange) = \"changeHouseNo()\"\n required\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.houseNoAddition\"\n [placeholder]=\"'HOUSE_NO_ADDITION' | localize\"\n ></co-input-text>\n </div>\n </div>\n <div>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.streetName\" [placeholder]=\"'STREET' | localize\" required></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.city\" [placeholder]=\"'CITY' | localize\" required></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"address.countryId\"\n [source]=\"countries\"\n [fields]=\"fields\"\n [placeholder]=\"'COUNTRY'| localize\"\n [required]=\"true\"\n ></co-input-combo-box>\n </div>\n </div>\n </div>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\"\n ]\n})\nexport class CheckoutOverviewRelationAddressComponent implements OnInit {\n\n @Input()\n public label: string;\n\n @Input()\n public set address(address: Address) {\n this._address = address;\n }\n\n public get address(): Address {\n if (this._address === undefined) {\n this._address = new Address();\n }\n\n return this._address;\n }\n\n public countries: Country[] = [];\n public fields: Object = { text: \"description\", value: \"code\" };\n\n public constructor(\n private _dictionary: DictionaryService,\n private _connector: IOneConnectorAdapterService\n ) {}\n\n public postalCodeCheckErrorMessage: string = \"\";\n\n private _prevPostalCodeForCheck: string = \"\";\n private _prevHouseNoForCheck: number;\n private _address: Address;\n\n async ngOnInit(): Promise<void> {\n this.countries = await this._connector.getCountries();\n }\n\n public async checkForPostalCodeCheckError(): Promise<void> {\n if (!this.address.postalCode || isNill(this.address.houseNo)) {\n this.postalCodeCheckErrorMessage = \"\";\n return;\n }\n\n if (this._prevPostalCodeForCheck !== this.address.postalCode || this._prevHouseNoForCheck !== this.address.houseNo) {\n this._prevPostalCodeForCheck = this.address.postalCode;\n this._prevHouseNoForCheck = this.address.houseNo;\n const postalCodeResponse: GetPostalCodeRetrievalOutputParams = await this._connector.getPostalCodeRetrieval((this.address.postalCode ? this.address.postalCode : \"\"),\n StringUtils.ParseString(this.address.houseNo));\n if (postalCodeResponse && postalCodeResponse.isBadAddress) {\n this.postalCodeCheckErrorMessage = this._dictionary.get(\"UNKNOWN_ADDRESS_CHECK_IT\");\n } else {\n this.postalCodeCheckErrorMessage = \"\";\n this.address.streetName = postalCodeResponse.street;\n this.address.city = postalCodeResponse.city;\n }\n }\n }\n\n public changeHouseNo(): void {\n this.address.houseNo = Number(this.address.houseNo);\n }\n}\n","import {Component, EventEmitter, Inject, Input, Output} from \"@angular/core\";\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\nimport {TransactionService} from \"../../../service/transaction.service\";\n\n@Component({\n selector: \"checkout-overview-delivery-address\",\n template: `\n <div>\n <div>\n <label [textContent]=\"label | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div (click)=\"onClick()\">\n <div>\n {{ address?.streetName }} {{ address?.houseNo}} {{ address?.houseNoAddition}}\n </div>\n <div>\n {{ address?.postalCode }} {{ address?.city}}\n </div>\n <div>\n {{ address?.countryName }}\n </div>\n </div>\n </div>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\",\n \"./checkout-overview-delivery-address.component.scss\"\n ]\n})\nexport class CheckoutOverviewDeliveryAddressComponent {\n\n @Input()\n public label: string;\n\n @Input()\n public address: Address;\n\n @Output()\n public editRequest: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n public service: TransactionService\n ) {}\n\n public onClick(): void {\n this.editRequest.emit();\n }\n}\n","// Direction type for regular straight directions.\r\nexport enum Direction {\r\n Right = \"right\",\r\n Left = \"left\",\r\n Up = \"top\",\r\n Down = \"bottom\",\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from \"@angular/core\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\nimport {Direction} from \"../../../enum/direction.enum\";\n\n@Component({\n selector: \"checkout-relation-suggestions-list\",\n template: `\n <div class=\"flex-column items-wrapper\">\n <checkout-relation-suggestions-list-item *ngFor=\"let suggestion of suggestions\" [suggestion]=\"suggestion\"\n [arrowDirection]=\"arrowDirection\"\n (buttonClick)=\"suggestionButtonClick.emit(suggestion)\"></checkout-relation-suggestions-list-item>\n <span *ngIf=\"suggestions?.length === 0\" class=\"no-results\" localize=\"NO_RESULTS_FOUND\"></span>\n </div>\n `,\n host: {\n \"class\": \"narrow-scrollbar\"\n },\n styleUrls: [\n \"./checkout-relation-suggestions-list.component.scss\"\n ]\n})\nexport class CheckOutRelationSuggestionsListComponent {\n @Input()\n public suggestions: RelationListObject[] = [];\n\n @Input()\n public arrowDirection: Direction = Direction.Left;\n\n // Emits the clicked relation list object.\n @Output()\n public suggestionButtonClick: EventEmitter<RelationListObject> = new EventEmitter<RelationListObject>();\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from \"@angular/core\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\n//import {Icon} from \"../../../../enum/icon.enum\";\nimport {Direction} from \"../../../enum/direction.enum\";\n\n@Component({\n selector: \"checkout-relation-suggestions-list-item\",\n template: `\n<!-- <div class=\"left\" fxLayout fxLayoutAlign=\"start center\">-->\n<!-- <avatar [relation]=\"suggestion\" class=\"smaller\"></avatar>-->\n<!-- </div>-->\n <div class=\"right\">\n <div class=\"name medium-big-font\" *ngIf=\"suggestion.displayName as displayName\" [textContent]=\"displayName\"></div>\n <div class=\"email\" *ngIf=\"suggestion.email\">\n {{ suggestion.email }}\n </div>\n <div class=\"address\" *ngIf=\"suggestion.displayAddress as address\" [textContent]=\"address\"></div>\n <div class=\"phone\" *ngIf=\"suggestion.tel1\">\n {{ suggestion?.tel1 }}\n </div>\n </div>\n <co-button [label]=\"'SELECT' | localize\" class=\"popup rounded\" (click)=\"buttonClick.emit($event)\"></co-button>\n `,\n styleUrls: [\n \"./checkout-relation-suggestions-list-item.component.scss\"\n ]\n})\nexport class CheckOutRelationSuggestionsListItemComponent implements OnInit {\n @Input()\n public suggestion: RelationListObject;\n\n @Input()\n public set arrowDirection(arrowDirection: Direction) {\n this._arrowDirection = arrowDirection;\n this._updateIcon();\n }\n\n @Output()\n public buttonClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n// public icon: Icon;\n\n private _arrowDirection: Direction = Direction.Left;\n\n constructor() {\n }\n\n ngOnInit(): void {\n this._updateIcon();\n }\n\n private _updateIcon(): void {\n // if (this._arrowDirection === Direction.Left) {\n // this.icon = Icon.ArrowFatLeft;\n // } else {\n // this.icon = Icon.ArrowFatRight;\n // }\n }\n}\n","// A pipe for appending strings to other strings in view templates.\r\nimport {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({name: \"append\"})\r\nexport class AppendPipe implements PipeTransform {\r\n transform(value: string, append?: string): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n\r\n if (!append) {\r\n return value;\r\n }\r\n\r\n return value + append;\r\n }\r\n}\r\n","// Time size types, as in 'days' or 'weeks' or 'months'.\r\nexport enum TimeSizeType {\r\n Hours = \"hours\",\r\n Days = \"days\",\r\n Weeks = \"weeks\",\r\n Months = \"months\",\r\n Years = \"years\"\r\n}\r\n","import {Inject, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DictionaryService} from \"../service/dictionary.service\";\r\nimport {DateUtils} from \"@colijnit/transactionapi/build/utils/date-utils\";\r\nimport {TimeSizeType} from \"../enum/time-size.type\";\r\n\r\n@Pipe({name: \"dateDuration\", pure: false})\r\nexport class DateDurationPipe implements PipeTransform {\r\n\r\n constructor(protected _dictionary: DictionaryService) {\r\n }\r\n\r\n // Transforms some date in the future to a duration string, e.g. \"x days\" or \"x weeks\" (from now)\r\n transform(value: Date, timeSize: TimeSizeType = TimeSizeType.Days): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n const deltaDays: number = Math.round(DateUtils.GetDaysFromNow(value));\r\n\r\n if (deltaDays === 0) {\r\n return this._dictionary.get(\"NOW\");\r\n } else if (timeSize === TimeSizeType.Days) {\r\n return this.transformByDeltaDays(deltaDays);\r\n } else if (timeSize === TimeSizeType.Weeks) {\r\n return this.transformByDeltaWeeks(deltaDays);\r\n } else {\r\n return this.transformByDeltaDays(deltaDays);\r\n }\r\n }\r\n\r\n // @returns like \"1 day\" or \"5 days\"\r\n public transformByDeltaDays(deltaDays: number): string {\r\n let daySuffix: string;\r\n if (deltaDays === 1) {\r\n daySuffix = this._dictionary.get(\"DAY\", false);\r\n } else {\r\n daySuffix = this._dictionary.get(\"DAYS\", false);\r\n }\r\n return deltaDays + \" \" + daySuffix;\r\n }\r\n\r\n // @returns like \"1 week\" or \"5 weeks\"\r\n public transformByDeltaWeeks(deltaWeeks: number): string {\r\n let weeksSuffix: string;\r\n if (deltaWeeks === 1) {\r\n weeksSuffix = this._dictionary.get(\"WEEK\", false);\r\n } else {\r\n weeksSuffix = this._dictionary.get(\"WEEKS\", false);\r\n }\r\n return deltaWeeks + \" \" + weeksSuffix;\r\n }\r\n}\r\n","import {Inject, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DateDurationPipe} from \"./date-duration.pipe\";\r\nimport {DictionaryService} from \"../service/dictionary.service\";\r\nimport {TimeSizeType} from \"../enum/time-size.type\";\r\nimport {DateUtils} from \"@colijnit/transactionapi/build/utils/date-utils\";\r\n\r\n@Pipe({name: \"deliveryTime\", pure: false})\r\nexport class DeliveryTimePipe extends DateDurationPipe implements PipeTransform {\r\n\r\n constructor(_dictionaryService: DictionaryService) {\r\n super(_dictionaryService);\r\n }\r\n\r\n /**\r\n * Transforms some Date in the future to a duration string such as \"x days\" or \"x months\" (from now).\r\n * Outputs 'directly available' if 0 days diff.\r\n */\r\n transform(value: Date, timeSize: TimeSizeType = TimeSizeType.Days): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n\r\n const deltaDays: number = Math.round(DateUtils.GetDaysFromNow(value));\r\n\r\n if (deltaDays <= 0) {\r\n return this._dictionary.get(\"DELIVERY_DIRECT\");\r\n } else {\r\n return super.transform(value, timeSize);\r\n }\r\n }\r\n}\r\n","import {Inject, Pipe, PipeTransform} from \"@angular/core\";\r\nimport { DictionaryService } from \"../service/dictionary.service\";\r\n\r\n@Pipe({\r\n name: \"localize\"\r\n})\r\n// A pipe for localizing string values in view templates.\r\nexport class LocalizePipe implements PipeTransform {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n constructor(private _dictionaryService: DictionaryService) {}\r\n\r\n transform(value: string, upperCaseFirst: boolean = true, replace: string|string[] = []): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n replace = replace ? replace : [];\r\n if (!Array.isArray(replace)) {\r\n replace = [replace];\r\n }\r\n return this._dictionaryService.get(value, upperCaseFirst, ...replace);\r\n }\r\n}\r\n","/**\r\n * A pipe for transforming strings or numbers to currency formatted strings for display as a price text, e.g. the number 1300.82 to \"€ 1,300.82\"\r\n * or the string \"9000\" to \"€ 9000,-\"\r\n */\r\nimport {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {NumberUtils} from \"@colijnit/transactionapi/build/utils/number-utils\";\r\n\r\n@Pipe({name: \"coCurrency\"})\r\nexport class CoCurrencyPipe implements PipeTransform {\r\n private static readonly _CurrencySymbol: string = \"€\";\r\n private static readonly _WholeNumberedPriceSuffix: string = \",-\";\r\n\r\n transform(value: any, allowZero: boolean = false): string {\r\n if (value === null || value === undefined) {\r\n if (allowZero) {\r\n value = 0;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n if (value === 0 && !allowZero) {\r\n return \"\";\r\n }\r\n let suffix: string = \"\";\r\n const valueAsFloat: number = NumberUtils.ParseFloat(value, 2);\r\n if (NumberUtils.IsNaN(valueAsFloat)) {\r\n return \"\";\r\n }\r\n // append ,- if integer\r\n if (NumberUtils.IsInteger(valueAsFloat)) {\r\n suffix = CoCurrencyPipe._WholeNumberedPriceSuffix;\r\n }\r\n let valueAsString: string = valueAsFloat.toString();\r\n // add extra zero if price has only one decimal, something like '100.2'\r\n if (valueAsString.indexOf(\".\") > -1 && valueAsString.split(\".\")[1].length === 1) {\r\n valueAsString += \"0\";\r\n }\r\n valueAsString = NumberUtils.AddThousandsCommasTo(valueAsString);\r\n // switch '.' and ',' characters (Dutch number view .. hard coded format for now)\r\n valueAsString = valueAsString.replace(\",\", \"#\");\r\n valueAsString = valueAsString.replace(\".\", \",\");\r\n valueAsString = valueAsString.replace(\"#\", \".\");\r\n return CoCurrencyPipe._CurrencySymbol + \" \" + valueAsString + suffix;\r\n }\r\n}\r\n","import {Inject, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DomSanitizer, SafeStyle} from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n name: \"safeStyle\"\r\n})\r\nexport class SafeStylePipe implements PipeTransform {\r\n\r\n constructor(private _sanitizer: DomSanitizer) {}\r\n\r\n transform(value: string): SafeStyle | any {\r\n return this._sanitizer.bypassSecurityTrustStyle(value);\r\n }\r\n}\r\n","import {Component, HostBinding, Input} from \"@angular/core\";\n\n@Component({\n selector: \"image-display\",\n template: `\n <div class=\"img-wrapper\">\n <div *ngIf=\"!!model\" class=\"image\" [style.background-image]=\"'url(' + model + ')' | safeStyle\"></div>\n <no-image-display *ngIf=\"!model\" [label]=\"label\"></no-image-display>\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: [\"./image-display.component.scss\"]\n})\nexport class ImageDisplayComponent {\n // Image data URI string. Meant for direct use in [src] attribute of an <img> tag.\n @Input()\n public model: string;\n\n // The (localized) text to show when there is no image. Defaults to 'NO_IMAGE'.\n @Input()\n public label: string = \"NO_IMAGE\";\n\n /**\n * By default, this component shows a special icon and missing-image text when model is empty. Set this to true to hide\n * self instead of showing a <no-image-display> placeholder, when there was no input image data.\n */\n @Input()\n public hideOnEmptyModel: boolean = false;\n\n @Input()\n @HostBinding(\"class.circle\")\n public circle: boolean = false;\n\n // Contain is default. Provide this attribute true to have a cover-style image.\n @Input()\n @HostBinding(\"class.cover-image\")\n public cover: boolean = false;\n\n // Set to true for a cursor: pointer style on hover on this component.\n @Input()\n @HostBinding(\"class.pointer-hover\")\n public pointerOnHover: boolean;\n\n @HostBinding(\"class.hidden\")\n public get shouldBeHidden(): boolean {\n return (this.hideOnEmptyModel && !this.model);\n }\n}\n","import {Component, Input} from \"@angular/core\";\nimport {CoreComponentsIcon} from \"@colijnit/corecomponents_v12\";\n\n@Component({\n selector: \"no-image-display\",\n template: `\n <icon [icon]=\"icon\"></icon>\n <span [textContent]=\"label | localize\" class=\"no-image-label\"></span>\n `,\n styleUrls: [\n \"./no-image-display.component.scss\"\n ]\n})\n// Component that shows a standardized icon and text for when there was no image (default: a camera icon and the 'no image' text).\nexport class NoImageDisplayComponent {\n // The placeholder icon to show when there is no image. Defaults to 'camera'.\n @Input()\n public icon: CoreComponentsIcon = CoreComponentsIcon.Camera;\n\n // The (localized) text to show when there is no image. Defaults to 'NO_IMAGE'.\n @Input()\n public label: string = \"NO_IMAGE\";\n}\n","import {Component, HostBinding, Input, OnDestroy} from \"@angular/core\";\nimport {SafeHtml} from \"@angular/platform-browser\";\nimport {CoreComponentsIcon, IconCacheService} from \"@colijnit/corecomponents_v12\";\n\n@Component({\n selector: \"icon\",\n template: \"\",\n styleUrls: [\n \"./icon.component.scss\"\n ]\n})\nexport class IconComponent implements OnDestroy {\n\n @Input()\n public set icon(icon: CoreComponentsIcon) {\n this._setSvg(icon);\n }\n\n @HostBinding(\"innerHtml\")\n public svg?: SafeHtml;\n\n constructor(\n private _iconCacheService: IconCacheService) {\n }\n\n ngOnDestroy(): void {\n this.svg = undefined;\n }\n\n private _setSvg(icon: CoreComponentsIcon): void {\n this.svg = this._iconCacheService.getIcon(icon);\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport {AppendPipe} from \"../../pipe/append.pipe\";\nimport {DeliveryTimePipe} from \"../../pipe/delivery-time.pipe\";\nimport {DateDurationPipe} from \"../../pipe/date-duration.pipe\";\nimport {LocalizePipe} from \"../../pipe/localize.pipe\";\nimport {CoCurrencyPipe} from \"../../pipe/co-currency.pipe\";\nimport {SafeStylePipe} from \"../../pipe/safe-style-pipe\";\nimport {ImageDisplayComponent} from \"../common/image-display/image-display.component\";\nimport {NoImageDisplayComponent} from \"../common/no-image-display/no-image-display.component\";\nimport {IconComponent} from \"../common/icon/icon.component\";\n\n@NgModule({\n declarations: [\n AppendPipe,\n DeliveryTimePipe,\n DateDurationPipe,\n LocalizePipe,\n CoCurrencyPipe,\n SafeStylePipe,\n ImageDisplayComponent,\n NoImageDisplayComponent,\n IconComponent,\n ],\n exports: [\n LocalizePipe,\n CoCurrencyPipe,\n AppendPipe,\n DeliveryTimePipe,\n SafeStylePipe,\n CoCurrencyPipe,\n ImageDisplayComponent,\n NoImageDisplayComponent,\n IconComponent,\n ],\n imports: [\n CommonModule\n ]\n})\nexport class CoreModule { }\n","import {NgModule} from \"@angular/core\";\r\nimport {BrowserAnimationsModule} from \"@angular/platform-browser/animations\";\r\nimport {\r\n ButtonModule,\r\n CoDialogModule,\r\n CoDialogPromptModule,\r\n CoGridModule,\r\n CoSidebarModule,\r\n DropDownModule,\r\n FormModule,\r\n IconModule,\r\n InputCheckboxModule,\r\n InputComboBoxModule,\r\n InputDatePickerModule,\r\n InputNumberPickerModule,\r\n InputRadioButtonModule,\r\n InputTextModule,\r\n MultiSelectListModule,\r\n PopupModule,\r\n} from \"@colijnit/corecomponents_v12\";\r\nimport {FlexModule} from \"@angular/flex-layout\";\r\nimport {IOneConnectorAdapterService} from \"../../service/ione-connector-adapter.service\";\r\nimport {DictionaryService} from \"../../service/dictionary.service\";\r\nimport {CheckoutComponent} from \"./../checkout/checkout/checkout.component\";\r\nimport {CheckoutOverviewComponent} from \"./checkout-overview/checkout-overview.component\";\r\nimport {CheckoutOverviewBlockComponent} from \"./checkout-overview-block/checkout-overview-block.component\";\r\nimport {CheckoutOverviewRelationEditComponent} from \"./checkout-overview-relation-edit/checkout-overview-relation-edit.component\";\r\nimport {CheckoutOverviewRelationAddressComponent} from \"./checkout-overview-relation-address/checkout-overview-relation-address.component\";\r\nimport {CheckoutOverviewDeliveryEditComponent} from \"./checkout-overview-delivery-edit/checkout-overview-delivery-edit.component\";\r\nimport {RetailTransactionCheckoutComponent} from \"./retail-transaction-checkout/retail-transaction-checkout.component\";\r\nimport {CheckoutOverviewDeliveryAddressComponent} from \"./checkout-overview-delivery-address/checkout-overview-delivery-address.component\";\r\nimport {CheckOutRelationSuggestionsListComponent} from \"./checkout-relation-suggestions-list/checkout-relation-suggestions-list.component\";\r\nimport {CheckOutRelationSuggestionsListItemComponent} from \"./checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component\";\r\nimport {CheckoutLoginComponent} from \"./checkout-login/checkout-login.component\";\r\nimport {MatStepperModule} from \"@angular/material/stepper\";\r\nimport {TransactionService} from \"../../service/transaction.service\";\r\nimport {OptionsService} from \"../../service/options.service\";\r\nimport {IoneCheckoutComponent} from \"./ione-checkout.component\";\r\nimport {CoreModule} from \"../core/core.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserAnimationsModule,\r\n IconModule,\r\n InputTextModule,\r\n InputCheckboxModule,\r\n InputRadioButtonModule,\r\n FormModule,\r\n InputComboBoxModule,\r\n InputDatePickerModule,\r\n InputNumberPickerModule,\r\n CoDialogModule,\r\n CoDialogPromptModule,\r\n ButtonModule,\r\n FlexModule,\r\n MultiSelectListModule,\r\n MatStepperModule,\r\n DropDownModule,\r\n PopupModule.forRoot(),\r\n CoSidebarModule,\r\n CoGridModule,\r\n CoreModule,\r\n ],\r\n declarations: [\r\n CheckoutComponent,\r\n CheckoutOverviewComponent,\r\n CheckoutOverviewBlockComponent,\r\n CheckoutOverviewRelationEditComponent,\r\n CheckoutOverviewRelationAddressComponent,\r\n CheckoutOverviewDeliveryEditComponent,\r\n RetailTransactionCheckoutComponent,\r\n CheckoutOverviewDeliveryAddressComponent,\r\n CheckOutRelationSuggestionsListComponent,\r\n CheckOutRelationSuggestionsListItemComponent,\r\n CheckoutLoginComponent,\r\n IoneCheckoutComponent,\r\n ],\r\n providers: [\r\n IOneConnectorAdapterService,\r\n DictionaryService,\r\n TransactionService,\r\n OptionsService\r\n ],\r\n entryComponents: [\r\n IoneCheckoutComponent\r\n ],\r\n exports: [IoneCheckoutComponent],\r\n bootstrap: [IoneCheckoutComponent]\r\n})\r\nexport class IoneCheckoutModule {}\r\n","export enum PositionGridRow {\r\n Before = \"before\",\r\n After = \"after\",\r\n}\r\n","import {Component, EventEmitter, Inject, OnDestroy, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {NumberUtils} from \"@colijnit/transactionapi/build/utils/number-utils\";\nimport {Subscription, throwError} from \"rxjs\";\nimport {TransactionEventService} from \"../../../service/transaction-event.service\";\nimport {CommissionCodeType} from \"@colijnit/transactionapi/build/enum/refcode/commission-code-type.enum\";\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\nimport {ResolvePendingLineReasonRequest} from \"@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo\";\nimport {TransactionLineType} from \"@colijnit/transactionapi/build/enum/transaction-line-type.enum\";\nimport {CoDomainValue} from \"@colijnit/transactionapi/build/model/co-domain-value.bo\";\nimport {TransactionArticleWarehouse} from \"@colijnit/transactionapi/build/model/transaction-article-warehouse.bo\";\nimport {LineOperationStatus} from \"@colijnit/transactionapi/build/model/line-operation-status.bo\";\nimport {CoDialogComponent, CoGridComponent, PromptService} from \"@colijnit/corecomponents_v12\";\nimport {PendingReasonType} from \"@colijnit/transactionapi/build/enum/pending-reason-type.enum\";\nimport {ArticleFullObject} from \"@colijnit/transactionapi/build/model/article-full-object\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {LineOperationResponse} from \"@colijnit/transactionapi/build/model/line-operation-response.bo\";\nimport {CharacteristicAnswerComponent} from \"../characteristic-answer/characteristic-answer.component\";\nimport {PositionGridRow} from \"../../../../enum/position-grid-row.enum\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"shopping-cart-manager\",\n template: `\n <co-dialog #warehouseDialog\n (closeClick)=\"hide()\"\n (overlayClick)=\"onStockManagerCancelClick()\"\n >\n <ng-container header>{{ 'STOCK_NOTIFICATION' | localize }}</ng-container>\n\n <ng-container content>\n <co-form>\n <div class=\"form-content\">\n <span *ngIf=\"message\" class=\"message-field\" [textContent]=\"message | localize\"></span>\n <div class=\"commission-fields\" fxLayout=\"row\">\n <co-input-number-picker class=\"horizontal\" [(model)]=\"amount\" [min]=\"0\" decimals=\"3\"></co-input-number-picker>\n <co-input-combo-box [(model)]=\"commissionCode\"\n [source]=\"commissionCodes\"\n [fields]=\"commissionFields\"\n [placeholder]=\"'COMMISSION_CODE' | localize\"\n [required]=\"true\"\n ></co-input-combo-box>\n </div>\n <div>\n <co-grid #warehouseGrid\n [data]=\"transactionArticleWarehouses\"\n [columns]=\"columns\"\n [pagingEnabled]=\"'true'\"\n [maxNumberOfRows]=\"'20'\"\n (rowsSelected)=\"handleRowsSelected($event)\"\n ></co-grid>\n </div>\n </div>\n </co-form>\n </ng-container>\n\n <ng-container footer>\n <div class=\"flex-center\">\n <co-button [label]=\"'OK' | localize\" (click)=\"onStockManagerOkClick()\"></co-button>\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"onStockManagerCancelClick()\"></co-button>\n </div>\n </ng-container>\n </co-dialog>\n\n <characteristic-answer\n #characteristicAnswer\n (okClick)=\"handleCharacteristicAnswerOkClick($event)\"\n ></characteristic-answer>\n `,\n styleUrls: [\"./shopping-cart-manager.component.scss\"]\n})\nexport class ShoppingCartManagerComponent implements OnInit, OnDestroy {\n @ViewChild(\"warehouseDialog\")\n public warehouseDialog: CoDialogComponent;\n\n @ViewChild(\"warehouseGrid\")\n public warehouseGrid: CoGridComponent<any>;\n\n @ViewChild(\"characteristicAnswer\")\n public characteristicAnswer: CharacteristicAnswerComponent;\n\n @Output()\n public readonly linesChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n public readonly openCart: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n public readonly articleAdded: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public get amountOfLines(): number {\n return NumberUtils.NrOrDefault(this.service.articleAmount, 0);\n }\n\n public get showCharacteristicDialog(): boolean {\n return this._showCharacteristic;\n }\n\n public set showCharacteristicDialog(value: boolean) {\n this._showCharacteristic = value;\n }\n\n public branchNr: string;\n public newArticleNr: string;\n public newArticle: ArticleFullObject;\n public selectedWarehouseNr: number;\n public amount: number;\n public isReturn: boolean = false;\n\n public waitForLinesChangedToOpenCart: boolean = false;\n public message: string = \"CHECK_WAREHOUSE_AND_COMMISSIONCODE\";\n\n public commissionCode: CommissionCodeType;\n public commissionCodes: CoDomainValue[] = [];\n public commissionFields: Object = { text: \"description\", value: \"code\" };\n\n public transactionArticleWarehouses: TransactionArticleWarehouse[] = [];\n public transactionArticleWarehouseFields: Object = { text: \"warehouseDesc\", value: \"warehouseNr\" };\n public columns: any[] = [];\n\n public currentPendingLine: TransactionLineInfo;\n public currentReason: ResolvePendingLineReasonRequest;\n public editingLine: TransactionLineInfo;\n\n public dialogPromptHeader: string = \"\";\n\n public rootElement: HTMLElement = null;\n\n private _subscriptions: Subscription[] = [];\n private currentOperationStatus: LineOperationStatus;\n private _inOutCollection: CoDomainValue[] = [];\n private _okOrCancelClick: boolean = false;\n private _showCharacteristic: boolean = false;\n\n constructor(\n public service: TransactionService,\n public transactionEvents: TransactionEventService,\n public promptService: PromptService,\n public _dictionaryService: DictionaryService,\n ) {\n this._subscriptions.push(\n this.service.transactionUpdated.subscribe(() => {\n this.linesChanged.emit(this.waitForLinesChangedToOpenCart);\n this.waitForLinesChangedToOpenCart = false;\n }),\n\n this.transactionEvents.addToCartBySku.subscribe((params: {sku: string, amount: number, popCart: boolean}) => {\n this.waitForLinesChangedToOpenCart = params.popCart;\n this.addToCart(params.sku, params.amount).then();\n }),\n\n this.transactionEvents.addArticleLineAt.subscribe((params: {sku: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow}) => {\n this.addArticleLineToCartAt(params.sku, params.amount, params.lineNr, params.beforeOrAfter).then();\n }),\n\n this.transactionEvents.addTextLineAt.subscribe((params: {text: string, lineNr: number, beforeOrAfter: PositionGridRow}) => {\n this.addTextLineToCartAt(params.text, params.lineNr, params.beforeOrAfter).then();\n }),\n\n this.transactionEvents.changeLineSequence.subscribe((params: {fromIndex: number, toIndex: number}) => {\n this.changeLineSequence(params.fromIndex, params.toIndex).then();\n }),\n\n this.transactionEvents.addToCartBySelectorResult.subscribe(\n (params: {selectorResult: {goodId: number, baseGoodId: number, selectorData: any, quantity: number}, popCart: boolean}) => {\n this.waitForLinesChangedToOpenCart = params.popCart;\n this.addToCartBySelectorResult(params.selectorResult).then();\n }),\n\n this.transactionEvents.openShoppingCartModule.subscribe(() => {\n this.openCart.emit(false);\n }),\n\n this.transactionEvents.addUserRelationShoppingCartModule.subscribe((login: {user: string, pw: string}) => {\n this.addUserRelationToTransactionAndLogin(login.user, login.pw);\n }),\n\n this.transactionEvents.addNewUserToShoppingCartModule.subscribe((emailAddress) => {\n this.addEmailAddressToTransaction(emailAddress);\n })\n );\n\n this.columns.push(\n {field: \"warehouseNr\", headerText: this._dictionaryService.get(\"WAREHOUSE\"), allowFiltering: false},\n {field: \"warehouseDesc\", headerText: this._dictionaryService.get(\"DESCRIPTION\")},\n {field: \"stockAmount\", headerText: this._dictionaryService.get(\"STOCK\")}\n );\n\n }\n\n async ngOnInit(): Promise<void> {\n this.commissionCodes = await this.service.getCommissionCodes(\"NL\");\n this.linesChanged.emit(this.waitForLinesChangedToOpenCart);\n this.waitForLinesChangedToOpenCart = false;\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(sub => sub.unsubscribe());\n this.warehouseDialog.close();\n }\n\n public async addToCart(sku: string, amount: number): Promise<void> {\n const goodId: number = await this.service.getGoodIdFromArticleNr(sku);\n await this._loadArticle(goodId);\n await this._createTransaction();\n await this._handleAddArticle(amount);\n this.articleAdded.emit();\n }\n\n public async addArticleLineToCartAt(sku: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow): Promise<void> {\n const goodId: number = await this.service.getGoodIdFromArticleNr(sku);\n await this._loadArticle(goodId);\n await this._createTransaction();\n await this._handleAddArticleLineAt(amount, lineNr, beforeOrAfter);\n this.articleAdded.emit();\n }\n\n public async addTextLineToCartAt(text: string, lineNr: number, beforeOrAfter: PositionGridRow): Promise<void> {\n await this.service.addTextLineToTransaction(0, text, 0, false, 0,\n beforeOrAfter === PositionGridRow.Before ? lineNr : undefined,\n beforeOrAfter === PositionGridRow.After ? lineNr : undefined)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n },\n (error) => this.promptService.showError(error));\n }\n\n public async changeLineSequence(fromIndex: number, toIndex: number): Promise<void> {\n let fromLine: TransactionLineInfo = this._getTransactionLineInfoByIndex(fromIndex)\n let toLine: TransactionLineInfo = this._getTransactionLineInfoByIndex(toIndex);\n let aboveLineNr: number;\n let belowLineNr: number;\n\n if (fromIndex > toIndex) {\n aboveLineNr = toLine.lineNr;\n } else {\n belowLineNr = toLine.lineNr;\n }\n\n await this.service.changeLineSequence(fromLine.uuid, aboveLineNr, belowLineNr)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n },\n (error) => this.promptService.showError(error));\n }\n\n public async addToCartBySelectorResult(result: {goodId: number, baseGoodId: number, selectorData: any, quantity: number}): Promise<void> {\n await this._loadArticle(result.goodId);\n await this._createTransaction();\n await this._handleAddArticle(result.quantity);\n this.articleAdded.emit();\n }\n\n // TODO public user logs in.... how reconnect the Connector?\n public async addUserRelationToTransactionAndLogin(userName: string, password: string): Promise<void> {\n const success: boolean = await this.service.setRelationByUser(userName, password);\n if (success) {\n this.transactionEvents.loggedIn.next();\n }\n }\n\n public async showStockManager(line: TransactionLineInfo): Promise<void> {\n this.selectedWarehouseNr = line.warehouseNumber;\n this.amount = line.amount;\n this.commissionCode = line.commissionCode;\n this.show(line.articleNumber);\n }\n\n public async hide(): Promise<void> {\n if (this._okOrCancelClick) {\n this._okOrCancelClick = false;\n return;\n }\n await this.onStockManagerCancelClick();\n }\n\n public show(articleNr: string): void {\n this._reloadDataCollections(articleNr).then();\n\n this.message = this.currentOperationStatus.pendingReason;\n this.warehouseGrid.selectRow(this.selectedWarehouseNr);\n this.warehouseDialog.targetElement = null;\n this.warehouseDialog.open();\n }\n\n public async onStockManagerCancelClick(): Promise<void> {\n this._okOrCancelClick = true;\n this.warehouseDialog.close();\n\n if (this.currentReason) {\n await this.service.cancelAddTransactionLine(this.currentReason.lineUuid);\n }\n\n this.editingLine = undefined;\n }\n\n public async onStockManagerOkClick(): Promise<void> {\n this._okOrCancelClick = true;\n this.warehouseDialog.close();\n\n if (this.commissionCode !== undefined) {\n this.currentReason.commissionCode = this.commissionCode.valueOf();\n }\n\n if (this.amount !== undefined) {\n this.currentReason.quantity = this.amount.valueOf();\n }\n\n if (this.selectedWarehouseNr !== undefined) {\n this.currentReason.warehouseNr = this.selectedWarehouseNr;\n }\n\n if (this.currentReason) {\n await this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n } else {\n if (this.editingLine === undefined) {\n await this.service.addTransactionLine(TransactionLineType.ArticleLine, this.newArticleNr, this.amount, this.selectedWarehouseNr, this.commissionCode, this.isReturn, 0, 0)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n } else {\n await this.service.changeTransactionLineQuantity(this.editingLine.uuid, this.amount)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n }\n }\n\n this.editingLine = undefined;\n }\n\n public handleRowsSelected(rows: any): void {\n this.selectedWarehouseNr = (rows.find(x => x !== undefined)).warehouseNr;\n }\n\n public async handleCharacteristicAnswerOkClick(answer: string): Promise<void> {\n this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);\n this.currentReason.textualUserInput = answer;\n await this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n }\n\n private async _reloadDataCollections(articleNr: string): Promise<void> {\n const goodId: number = await this.service.getGoodIdFromArticleNr(articleNr);\n this.transactionArticleWarehouses = await this.service.getTransactionArticleWarehouses(goodId);\n }\n\n private async _handleAddArticle(amount: number = 1): Promise<void> {\n await this.service.addTransactionLine(TransactionLineType.ArticleLine,\n this.newArticleNr,\n amount,\n this.newArticle.standardWareHouse,\n this.newArticle.commissionCode,\n false,\n 0,\n 0)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n },\n (error) => this.promptService.showError(error));\n }\n\n private async _handleAddArticleLineAt(amount: number, lineNr: number, beforeOrAfter: PositionGridRow): Promise<void> {\n await this.service.addTransactionLine(TransactionLineType.ArticleLine,\n this.newArticleNr,\n amount,\n this.newArticle.standardWareHouse,\n this.newArticle.commissionCode,\n false,\n beforeOrAfter === PositionGridRow.Before ? lineNr : undefined,\n beforeOrAfter === PositionGridRow.After ? lineNr : undefined)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n },\n (error) => this.promptService.showError(error));\n }\n\n private _getWareHouseNoFromArticle(): number {\n if (this.newArticle !== undefined && this.newArticle.stockLocations !== undefined && this.newArticle.stockLocations.length) {\n return this.newArticle.stockLocations[0].warehouseNr;\n }\n return 0;\n }\n\n private _isLineOperationStatus(): boolean {\n this.currentOperationStatus = this.service.currentLineOperationStatus;\n if (this.currentOperationStatus !== undefined) {\n return true;\n }\n return false;\n }\n\n private _checkIfShoppingCartNeedsToDisplay(): void {\n if (this.service.currentTransaction && this.service.currentTransaction.transactionNr) {\n this.linesChanged.emit(this.waitForLinesChangedToOpenCart);\n this.waitForLinesChangedToOpenCart = false;\n }\n }\n\n private async _confirmAction(): Promise<void> {\n this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);\n const pendingReasonText: string = await this._getPendingReasonText(this.currentOperationStatus.pendingReason);\n this.currentReason.confirmation = await this.promptService.showYesNo(pendingReasonText, \" \");\n await this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n }\n\n private async _showInformation(): Promise<void> {\n this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);\n const pendingReasonText: string = await this._getPendingReasonText(this.currentOperationStatus.pendingReason);\n await this.promptService.showOkModal(pendingReasonText, \" \");\n await this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n }\n\n private async _getPendingReasonText(pendingReason: string): Promise<string> {\n if (pendingReason === \"ARTICLE_IS_DISCONTINUED_DO_YOU_WANT_TO_CONTINUE_PLEASE_CONFIRM\") {\n return this._dictionaryService.get(\"ARTICLE_IN_OUT_COLLECTION\").replace(\"|~\", await this.getInOutCollectionOfArticle());\n }\n return this._dictionaryService.get(pendingReason);\n }\n\n private async getInOutCollectionOfArticle(): Promise<string> {\n if (!this._inOutCollection.length) {\n this._inOutCollection = await this.service.getInOutCollection(\"NL\");\n }\n\n const domainValue: CoDomainValue = this._inOutCollection.find(element => element.code === this.newArticle.inOutCollection);\n if (domainValue) {\n return domainValue.description;\n }\n return \"\";\n }\n\n private async _handleLineOperationStatus(): Promise<void> {\n if (this._isLineOperationStatus()) {\n await this._handlePendingLine(this.currentOperationStatus.uuid).then();\n } else {\n this._checkIfShoppingCartNeedsToDisplay();\n }\n }\n\n private async _handlePendingLine(lineUuid: string): Promise<void> {\n this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);\n this.currentPendingLine = this.service.currentLines.find(l => l.uuid === lineUuid);\n\n switch (this.currentOperationStatus.pendingReasonType) {\n case PendingReasonType.ABORTED:\n case PendingReasonType.CANCELLED:\n this.service.cancelAddTransactionLine(this.currentPendingLine.uuid).then();\n break;\n case PendingReasonType.CONFIRMATION_NEEDED:\n await this._confirmAction();\n break;\n case PendingReasonType.INVALID_LOGISTICS:\n await this.showStockManager(this.currentPendingLine);\n break;\n case PendingReasonType.NON_CRITICAL_DISCONTINUATION:\n await this._showInformation();\n break;\n case PendingReasonType.CHARACTERISTICS_ANSWER_NEEDED:\n this.CharacteristicsAnswerNeeded();\n break;\n case PendingReasonType.NONE:\n default:\n this.currentReason = undefined;\n this.currentPendingLine = undefined;\n break;\n }\n }\n\n private async _createTransaction(): Promise<void> {\n if (!this.service.currentTransaction.transactionNr) {\n if (!await this.service.createTransaction()) {\n throwError(\"Failed to create transaction\");\n }\n }\n }\n\n private async _loadArticle(goodId: number): Promise<void> {\n this.newArticle = await this.service.getArticleFullObject(goodId);\n this.newArticleNr = this.newArticle.articleNr;\n }\n\n private addEmailAddressToTransaction(emailAddress: string): void {\n this.service.emailAddress = emailAddress;\n }\n\n private CharacteristicsAnswerNeeded(): void {\n this.characteristicAnswer.question = this.currentOperationStatus.characteristic.question;\n this.characteristicAnswer.title = this.newArticle.description;\n this.characteristicAnswer.value = this.currentOperationStatus.characteristic.value;\n this.characteristicAnswer.characteristics = this.currentOperationStatus.characteristic.transactionLineCharacteristicChoices;\n\n setTimeout(() => {\n this.characteristicAnswer.open();\n // eslint-disable-next-line no-magic-numbers\n }, 1000);\n\n }\n\n private _getLineUuidByLineNr(lineNr: number): string {\n const transactionLine: TransactionLineInfo[] = this.service.currentLines.filter(transLines => transLines.lineNr === lineNr);\n return transactionLine[0].uuid;\n }\n\n private _getTransactionLineInfoByIndex(index: number): TransactionLineInfo {\n if (index >= 0 && index < this.service.currentLines.length) {\n return this.service.currentLines[index]\n }\n }\n}\n","export enum OrderDiscountType {\r\n DiscountAmount = \"DISCOUNT_AMOUNT\",\r\n DiscountPercentage = \"DISCOUNT_PERCENTAGE\",\r\n OrderTotal = \"ORDER_TOTAL\"\r\n}\r\n","// The different view modes for content, e.g. list, grid, ..\r\nexport enum ContentViewMode {\r\n List,\r\n Grid,\r\n GridExpanded,\r\n MasterDetail,\r\n Timeline,\r\n}\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild\n} from \"@angular/core\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {OrderDiscountType} from \"../../../enum/order-discount-type.enum\";\nimport {BusinessObject} from \"@colijnit/transactionapi/build/model/business-object\";\nimport {SortProperty} from \"@colijnit/transactionapi/build/interface/sort-property\";\nimport {SortDirection} from \"@colijnit/transactionapi/build/enum/sort-direction\";\nimport {SortType} from \"@colijnit/transactionapi/build/enum/sort-type.enum\";\nimport {Subscription} from \"rxjs\";\nimport {CoreComponentsIcon, CoSidebarComponent, IconCacheService} from \"@colijnit/corecomponents_v12\";\nimport {TransactionEventService} from \"../../../service/transaction-event.service\";\nimport {ContentViewMode} from \"../../../enum/content-view-mode.enum\";\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\nimport {ContextMenuItemModel, RowDragEventArgs} from \"@syncfusion/ej2-angular-grids\";\nimport {MenuEventArgs} from \"@syncfusion/ej2-angular-navigations\";\nimport {PositionGridRow} from \"../../../../enum/position-grid-row.enum\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"shopping-cart\",\n template: `\n <div class=\"cart-header\">\n <span class=\"cart-header-label\" [textContent]=\"getCartLabel()\"></span>\n <div class=\"view-mode-buttons\">\n <co-button [iconData]=\"iconCacheService.getIcon(iconThickLines)\"\n [title]=\"'LIST_VIEW' | localize\"\n (click)=\"this.activeViewMode = viewModes.List\"\n class=\"triangle white\"\n iconClass=\"medium light\"></co-button>\n <co-button [iconData]=\"iconCacheService.getIcon(iconThinLines)\"\n [title]=\"'GRID_VIEW' | localize\"\n (click)=\"this.activeViewMode = viewModes.Grid\"\n class=\"triangle white\"\n iconClass=\"medium light\"></co-button>\n </div>\n </div>\n <div class=\"cart-lines\">\n <div class=\"cart-list-wrapper\" *ngIf=\"activeViewMode === viewModes.List\" fxFlex=\"column\">\n <shopping-cart-line [overlayMode]=\"overlayMode\" [overviewMode]=\"overviewMode\"\n *ngFor=\"let line of filteredCollection; trackBy:trackByFn;\"\n [line]=\"line\"\n ></shopping-cart-line>\n </div>\n <div class=\"cart-list-wrapper\" *ngIf=\"activeViewMode === viewModes.Grid\" fxFlex=\"column\">\n <co-grid\n [data]=\"filteredCollection\"\n [rowDragAndDropEnabled]=\"true\"\n [contextMenuItems]=\"contextMenuItems\"\n [sortingEnabled]=\"false\"\n [columns]=\"columns\"\n [pagingEnabled]=\"'true'\"\n [maxNumberOfRows]=\"'20'\"\n (rowsSelected)=\"handleRowsSelected($event)\"\n (contextMenuItemClick)=\"menuItemClick($event)\"\n (rowDropEvent)=\"rowDrop($event)\"\n ></co-grid>\n </div>\n </div>\n <div class=\"shopping-cart-totals\" fxLayout=\"column\" fxLayoutGap=\"10px\">\n <div fxLayout=\"row\">\n <span [textContent]=\"'ORDER_GROSS' | localize\"></span>\n <span [textContent]=\"service.currentTotals?.grossAmount | coCurrency: true\"></span>\n </div>\n <div fxLayout=\"row\" *ngIf=\"service.currentTotals?.discountAmount\">\n <span [textContent]=\"'DISCOUNT_AMOUNT' | localize\"></span>\n <span [textContent]=\"service.currentTotals?.discountAmount | coCurrency: true\"></span>\n </div>\n <div fxLayout=\"row\" *ngIf=\"service.currentTotals?.transactionDiscountAmount\">\n <span [textContent]=\"'TRANSACTION_DISCOUNT' | localize\"></span>\n <span [textContent]=\"service.currentTotals?.transactionDiscountAmount | coCurrency: true\"></span>\n </div>\n <div fxLayout=\"row\" *ngIf=\"service.currentTotals?.transactionDiscountPercentage\">\n <span [textContent]=\"'TRANSACTION_DISCOUNT_PERC' | localize\"></span>\n <span [textContent]=\"service.currentTotals?.transactionDiscountPercentage.toString() | append:' %'\"></span>\n </div>\n <div fxLayout=\"row\">\n <span [textContent]=\"'ORDER_NET'| localize\"></span>\n <span [textContent]=\"service.currentTotals?.netAmount | coCurrency: true\"></span>\n </div>\n <a (click)=\"addDiscount()\" [textContent]=\"'ADD_DISCOUNTS' | localize\"></a>\n </div>\n <div class=\"shopping-cart-row-end\">\n <co-button *ngIf=\"!hideOverviewButton\" [label]=\"'OVERVIEW' | localize\"\n (click)=\"overview.emit()\"\n ></co-button>\n <co-button *ngIf=\"!hideCloseCartButton\"[label]=\"'SHOPPING_CART_RESUME' | localize\"\n (click)=\"closeCart.emit()\"\n ></co-button>\n <co-button *ngIf=\"!hideCheckoutButton\" [label]=\"'SHOPPING_CART_CHECKOUT' | localize\"\n [disabled]=\"!service.articleAmount\"\n (click)=\"checkout.emit()\"></co-button>\n </div>\n\n <co-sidebar #discountsSidebar isOpen=\"false\" *ngIf=\"showDiscountsSidebar\">\n <div fxLayout=\"column\" fxLayoutGap=\"10px\">\n <co-button class=\"rectangular\" [label]=\"'TRANSACTION_DISCOUNT_PERC' | localize\"\n (click)=\"onStartDiscountInput(orderDiscountType.DiscountPercentage, 'TRANSACTION_DISCOUNT_PERC')\"></co-button>\n <co-button class=\"rectangular\" [label]=\"'TRANSACTION_DISCOUNT'| localize\"\n (click)=\"onStartDiscountInput(orderDiscountType.DiscountAmount, 'TRANSACTION_DISCOUNT')\"></co-button>\n <co-button class=\"rectangular\" [label]=\"'TRANSACTION_TOTAL'| localize\"\n (click)=\"onStartDiscountInput(orderDiscountType.OrderTotal, 'TRANSACTION_TOTAL')\"></co-button>\n\n </div>\n </co-sidebar>\n\n <co-dialog [visible]=\"inputDiscounts\">\n <ng-container header>{{ discountHeader | localize }}</ng-container>\n <co-form>\n <co-input-text\n *ngIf=\"discountType === orderDiscountType.DiscountPercentage\"\n [type]=\"'number'\"\n [(model)]=\"transactionDiscountPercentage\"\n [placeholder]=\"'TRANSACTION_DISCOUNT_PERC' | localize\"\n ></co-input-text>\n <co-input-text\n *ngIf=\"discountType === orderDiscountType.DiscountAmount\"\n [type]=\"'number'\"\n [(model)]=\"transactionDiscountAmount\"\n [placeholder]=\"'TRANSACTION_DISCOUNT' | localize\"\n ></co-input-text>\n <co-input-text\n *ngIf=\"discountType === orderDiscountType.OrderTotal\"\n [type]=\"'number'\"\n [(model)]=\"transactionTotal\"\n [placeholder]=\"'TRANSACTION_TOTAL' | localize\"\n ></co-input-text>\n\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end\">\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"inputDiscounts = false\"></co-button>\n <co-button [label]=\"'OK' | localize\" (click)=\"onInputDiscountsOkClick()\"></co-button>\n </div>\n </co-form>\n </co-dialog>\n `,\n styleUrls: [\n \"./shopping-cart.component.scss\",\n \"../shopping-cart-overview/shopping-cart-overview.component.scss\",\n ]\n})\nexport class ShoppingCartComponent implements AfterViewInit, OnDestroy {\n public readonly orderDiscountType: typeof OrderDiscountType = OrderDiscountType;\n public readonly iconThickLines: CoreComponentsIcon = CoreComponentsIcon.ThickLines;\n public readonly iconThinLines: CoreComponentsIcon = CoreComponentsIcon.ThinLines;\n public readonly viewModes: typeof ContentViewMode = ContentViewMode;\n\n\n @ViewChild(CoSidebarComponent, { static: false })\n public discountsSidebar: CoSidebarComponent;\n\n @Input()\n @HostBinding(\"class.overlayed\")\n public overlayMode: boolean;\n\n @Input()\n @HostBinding(\"class.overview\")\n public overviewMode: boolean;\n\n @Input()\n public hideOverviewButton: boolean = false;\n\n @Input()\n public hideCheckoutButton: boolean = false;\n\n @Input()\n public hideCloseCartButton: boolean = false;\n\n @Output()\n public closeCart: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public checkout: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public overview: EventEmitter<void> = new EventEmitter<void>();\n\n public get filteredCollection(): TransactionLineInfo[] {\n return this._filteredCollection;\n }\n\n public setFilteredCollection(value: BusinessObject[]): void {\n this._filteredCollection = (value as TransactionLineInfo[]);\n const sortByLineNr: SortProperty = {\n active: true,\n direction: SortDirection.Ascending,\n property: \"lineNr\",\n type: SortType.Number};\n// SortUtils.SortObjectArray(this._filteredCollection, [sortByLineNr]);\n }\n\n public discountHeader: string;\n public inputDiscounts: boolean;\n public transactionDiscountAmount: number;\n public transactionDiscountPercentage: number;\n public transactionTotal: number;\n public discountType: OrderDiscountType;\n\n public activeViewMode: ContentViewMode = ContentViewMode.List;\n public columns: any[] = [];\n\n public contextMenuItems: ContextMenuItemModel[] = [];\n\n public showDiscountsSidebar: boolean = false;\n private _filteredCollection: TransactionLineInfo[];\n private _transactionUpdated: Subscription;\n private _selectedRow: TransactionLineInfo;\n\n constructor(\n public iconCacheService: IconCacheService,\n private _dictionary: DictionaryService,\n public service: TransactionService,\n private _transactionEvents: TransactionEventService,\n private _changeDetector: ChangeDetectorRef\n ) {\n this._transactionUpdated = this.service.transactionUpdated.subscribe(() => {\n this.setFilteredCollection(this.service.currentLines);\n });\n this.setFilteredCollection(this.service.currentLines);\n\n const mediaQuery: string = \"(min-width: 500px)\";\n\n this.columns.push(\n {field: \"lineNr\", headerText: this._dictionary.get(\"NR\"), allowFiltering: false, allowSorting: false},\n {field: \"text\", headerText: this._dictionary.get(\"TEXT\")},\n {field: \"articleNumber\", headerText: this._dictionary.get(\"ARTICLE_NR\")},\n {field: \"goodDescription\", headerText: this._dictionary.get(\"GOOD_DESCRIPTION\"), hideAtMedia: mediaQuery},\n {field: \"amount\", headerText: this._dictionary.get(\"NUMBER\"), textAlign: \"Right\"},\n {field: \"price\", headerText: this._dictionary.get(\"PRICE\"), format: \"C2\", textAlign: \"Right\"},\n {field: \"priceListCode\", headerText: this._dictionary.get(\"PRICE_LIST\"), hideAtMedia: mediaQuery},\n {field: \"lineDiscount\", headerText: this._dictionary.get(\"DISCOUNT_PERCENTAGE\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"specialDiscount\", headerText: this._dictionary.get(\"SPECIAL_DISCOUNT\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"discountAmount\", headerText: this._dictionary.get(\"DISCOUNT_AMOUNT\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"surchargeAmount\", headerText: this._dictionary.get(\"SURCHARGE_AMOUNT\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"assemblyCost\", headerText: this._dictionary.get(\"ASSEMBLY_COSTS\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"grossLineTotal\", headerText: this._dictionary.get(\"TOTAL_GROSS\"), format: \"C2\", visible: true, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"lineTotalDiscountAmount\", headerText: this._dictionary.get(\"DISCOUNT\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"netLineTotal\", headerText: this._dictionary.get(\"SUBTOTAL\"), format: \"C2\", visible: false, textAlign: \"Right\"},\n {field: \"vatId\", headerText: this._dictionary.get(\"VAT\"), hideAtMedia: mediaQuery, visible: false, textAlign: \"Right\"},\n {field: \"priceDeclaration\", headerText: this._dictionary.get(\"TRANSACTION_PRICE_DECLARATION\"), visible: false, hideAtMedia: mediaQuery},\n {field: \"netto\", headerText: this._dictionary.get(\"NETT\"), format: \"C2\", hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"warehouseNumber\", headerText: this._dictionary.get(\"WAREHOUSE\"), hideAtMedia: mediaQuery, textAlign: \"Right\"},\n );\n\n this.contextMenuItems.push(\n { text: this._dictionary.get(\"ADD_ARTICLE_LINE_UP\"), target: \".e-content\", id: \"articleLineUp\" },\n { text: this._dictionary.get(\"ADD_ARTICLE_LINE_DOWN\"), target: \".e-content\", id: \"articleLineDown\" },\n { text: this._dictionary.get(\"ADD_ARTICLE_TEXT_LINE_UP\"), target: \".e-content\", id: \"articleTextLineUp\" },\n { text: this._dictionary.get(\"ADD_ARTICLE_TEXT_LINE_DOWN\"), target: \".e-content\", id: \"articleTextLineDown\" }\n );\n }\n\n ngAfterViewInit(): void {\n this.hideSidebar();\n }\n\n ngOnDestroy(): void {\n this._transactionUpdated.unsubscribe();\n }\n\n public getCartLabel(): string {\n return this._dictionary.get(\"SHOPPING_CART_OVERVIEW\", true) + \"(\" + this.service.articleAmount.toString() + \")\";\n\n }\n\n public addDiscount(): void {\n this.showSidebar();\n\n // TODO\n // this.transactionDiscountPercentage = this.service.currentTransaction.transactionDiscountPercentage;\n // this.transactionDiscountAmount = this.service.currentTransaction.transactionDiscountAmount;\n // this.transactionTotal = undefined;\n }\n\n public onStartDiscountInput(discountType: OrderDiscountType, header: string): void {\n this.hideSidebar();\n\n this.discountType = discountType;\n this.discountHeader = header;\n this.inputDiscounts = true;\n }\n\n public openShoppingCartModule(): void {\n this._transactionEvents.openShoppingCartModule.next();\n this.closeCart.emit();\n }\n\n public setDiscountHeader(discountType: OrderDiscountType): void {\n switch (this.discountType) {\n case OrderDiscountType.DiscountPercentage:\n this.discountHeader = this._dictionary.get(\"DISCOUNT_PERCENTAGE\", true);\n break;\n case OrderDiscountType.DiscountAmount:\n this.discountHeader = this._dictionary.get(\"DISCOUNT_AMOUNT\", true);\n break;\n case OrderDiscountType.OrderTotal:\n this.discountHeader = this._dictionary.get(\"ORDER_TOTAL\", true);\n break;\n }\n }\n\n public onInputDiscountsOkClick(): void {\n let valueToUse: number;\n switch (this.discountType) {\n case OrderDiscountType.DiscountPercentage:\n valueToUse = this.transactionDiscountPercentage;\n break;\n case OrderDiscountType.DiscountAmount:\n valueToUse = this.transactionDiscountAmount;\n break;\n case OrderDiscountType.OrderTotal:\n valueToUse = this.transactionTotal;\n break;\n }\n //TODO this.service.setTransactionDiscounts(this.service.currentTransaction.uuid, this.discountType, valueToUse);\n this.inputDiscounts = false;\n }\n\n public trackByFn(index: number, line: TransactionLineInfo): any {\n return line.lineNr;\n }\n\n public handleRowsSelected(rows: any): void {\n this._selectedRow = rows.find(x => x !== undefined);\n }\n\n public showSidebar(): void {\n this.showDiscountsSidebar = true;\n this._changeDetector.detectChanges();\n\n if (this.discountsSidebar) {\n this.discountsSidebar.show();\n }\n }\n\n public hideSidebar(): void {\n this.showDiscountsSidebar = false;\n this._changeDetector.detectChanges();\n\n if (this.discountsSidebar) {\n this.discountsSidebar.hide();\n }\n }\n\n public menuItemClick(args: MenuEventArgs): void {\n const lineNr: number = this._selectedRow.lineNr;\n switch (args.item.id) {\n case \"articleLineUp\":\n// this._transactionEvents.addArticleLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});\n this._transactionEvents.addArticleLineAt.next({sku: \"iPod\", amount: 1, lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});\n break;\n case \"articleLineDown\":\n// this._transactionEvents.addArticleLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.After});\n this._transactionEvents.addArticleLineAt.next({sku: \"iPod\", amount: 1, lineNr: lineNr, beforeOrAfter: PositionGridRow.After});\n break;\n case \"articleTextLineUp\":\n// this._transactionEvents.addTextLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});\n this._transactionEvents.addTextLineAt.next({text: \"textregel before\", lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});\n break;\n case \"articleTextLineDown\":\n// this._transactionEvents.addTextLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.After});\n this._transactionEvents.addTextLineAt.next({text: \"textregel after\", lineNr: lineNr, beforeOrAfter: PositionGridRow.After});\n break;\n\n }\n }\n\n public rowDrop(args: RowDragEventArgs): void {\n this._transactionEvents.changeLineSequence.next({fromIndex: args.fromIndex, toIndex: args.dropIndex});\n\n // Transaction lines will be reloaded by previous action on success, not by failure. So, cancel the drop in all cases.\n args.cancel = true;\n }\n}\n","import {ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {OptionsService} from \"../../service/options.service\";\nimport {ShoppingCartManagerComponent} from \"./shopping-cart-manager/shopping-cart-manager.component\";\nimport {ShoppingCartComponent} from \"./shopping-cart/shopping-cart.component\";\nimport {TransactionService} from \"../../service/transaction.service\";\nimport {DictionaryService} from \"../../service/dictionary.service\";\nimport {IOneConnectorAdapterService} from \"../../service/ione-connector-adapter.service\";\nimport {TransactionEventService} from \"../../service/transaction-event.service\";\nimport {PromptService} from \"@colijnit/corecomponents_v12\";\nimport {PositionGridRow} from \"../../../enum/position-grid-row.enum\";\n\n// <co-sidebar #catalogSidebar isOpen=\"false\" *ngIf=\"showCatalogSidebar\">\n// <div class=\"relation-sidebar-header\">\n// <label [textContent]=\"'ARTICLE' | localize \"\n// class=\"checkout-label-h3\"\n// ></label>\n// </div>\n// <app-ione-catalog\n// [settings]=\"options\"\n// [parameters]=\"{publicationCode: 71}\"\n// (onAddToCart)=\"addToCart($event)\"\n// (onAddArticleButtonClick)=\"addArticleButtonClick($event)\"\n// ></app-ione-catalog>\n// </co-sidebar>\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"ione-shopping-cart\",\n template: `\n <ng-container *ngIf=\"upAndLoaded\">\n <shopping-cart-manager\n (linesChanged)=\"linesChanged($event)\"\n ></shopping-cart-manager>\n </ng-container>\n <ng-container *ngIf=\"show\">\n <shopping-cart\n [hideOverviewButton]=\"hideOverviewButton\"\n [hideCloseCartButton]=\"hideCloseCartButton\"\n [hideCheckoutButton]=\"hideCheckoutButton\"\n (overview)=\"onOverviewButtonClicked()\"\n (closeCart)=\"onCloseCartButtonClicked()\"\n (checkout)=\"onCheckoutButtonClicked()\"\n ></shopping-cart>\n </ng-container>\n `\n})\nexport class IoneShoppingCartComponent implements OnInit, OnDestroy {\n @ViewChild(ShoppingCartManagerComponent)\n public manager: ShoppingCartManagerComponent;\n\n @ViewChild(ShoppingCartComponent)\n public shoppingCart: ShoppingCartComponent;\n\n @Input()\n public set options(value: any) {\n if (value) {\n if (typeof value === \"string\") {\n this._options = JSON.parse(value);\n } else {\n this._options = value;\n }\n this._publicOptions = true;\n this._optionsService.initialize(this._options).then();\n }\n }\n\n @Input()\n public hideOverviewButton: boolean = false;\n\n @Input()\n public hideCheckoutButton: boolean = false;\n\n @Input()\n public hideCloseCartButton: boolean = false;\n\n @Output()\n public closeCart: EventEmitter<void> = new EventEmitter<void>();\n\n @Output( )\n public checkout: EventEmitter<void> = new EventEmitter<void>();\n\n @Output( )\n public overview: EventEmitter<void> = new EventEmitter<void>();\n\n @Output( )\n public addArticleLine: EventEmitter<{ lineNr: number; beforeOrAfter: PositionGridRow }> = new EventEmitter<{ lineNr: number; beforeOrAfter: PositionGridRow }>();\n\n @Output( )\n public addTextLine: EventEmitter<{ lineNr: number; beforeOrAfter: PositionGridRow }> = new EventEmitter<{ lineNr: number; beforeOrAfter: PositionGridRow }>();\n\n public get transactionNr(): number {\n return this._service.currentTransaction.transactionNr;\n }\n\n public get options(): any {\n return this._options;\n }\n\n public showCatalogSidebar: boolean = false;\n public currentArticleLineNr: number = 0;\n public currentPositionGridRow: PositionGridRow = PositionGridRow.After;\n\n public show: boolean = false;\n public amountOfLines: number = 0;\n public upAndLoaded: boolean = false;\n public overviewMode: boolean = true;\n\n private _subscriptions: Subscription[] = [];\n private _remoteOptions: boolean = true;\n private _publicOptions: boolean = true;\n private _options: any;\n\n constructor(\n public _changeDetector: ChangeDetectorRef,\n public _optionsService: OptionsService,\n public _connector: IOneConnectorAdapterService,\n public _dictionary: DictionaryService,\n public _service: TransactionService,\n public transactionEvents: TransactionEventService,\n public _promptService: PromptService\n ) {\n this._subscriptions.push(\n this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),\n this.transactionEvents.addArticleLine.subscribe(args => this._handleAddArticleLine(args)),\n this.transactionEvents.addTextLine.subscribe(args => this._handleAddTextLine(args))\n );\n }\n\n ngOnInit(): void {\n if (!this._publicOptions) {\n this._optionsService.initializeDevelopmentOptions(this._remoteOptions);\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n public onCloseCartButtonClicked(): void {\n this.closeCart.emit();\n }\n\n public onCheckoutButtonClicked(): void {\n this.checkout.emit();\n }\n\n public onOverviewButtonClicked(): void {\n this.overview.emit();\n }\n\n public linesChanged(openCart: boolean): void {\n this.amountOfLines = this.manager ? this.manager.amountOfLines : 0;\n }\n\n public addArticle(articleNo: string, amount: number): void {\n this.transactionEvents.addToCartBySku.next({sku: articleNo, amount: amount, popCart: true});\n }\n\n public addArticleButtonClick(article: any) {\n this.transactionEvents.addArticleLineAt.next({sku: article.articleNumber, amount: 1, lineNr: this.currentArticleLineNr, beforeOrAfter: this.currentPositionGridRow});\n }\n\n public addToCart(article: any) {\n this.transactionEvents.addArticleLineAt.next({sku: article.articleNumber, amount: 1, lineNr: this.currentArticleLineNr, beforeOrAfter: this.currentPositionGridRow});\n }\n\n public addArticleLineAt(articleNo: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow) {\n this.transactionEvents.addArticleLineAt.next({sku: articleNo, amount: amount, lineNr: lineNr, beforeOrAfter: beforeOrAfter});\n }\n\n public addTextLineAt(text: string, lineNr: number, beforeOrAfter: PositionGridRow) {\n this.transactionEvents.addTextLineAt.next({text: text, lineNr: lineNr, beforeOrAfter: beforeOrAfter});\n }\n\n public addArticleByBySelectorResult(selectorResult: { selectorData: {}; quantity: number; baseGoodId: number; goodId: number }, popCart: boolean): void {\n this.transactionEvents.addToCartBySelectorResult.next({selectorResult: selectorResult, popCart: popCart});\n }\n\n private async _handleSettingsLoaded(loaded: boolean): Promise<void> {\n if (loaded) {\n await this._initConnection().then();\n this.upAndLoaded = true;\n }\n }\n\n private async _initConnection(): Promise<void> {\n await this._connector.connect(this._optionsService.options);\n\n if (this._optionsService.options.url) {\n this._dictionary.rootUrl = this._optionsService.options.url.replace(\"/ajaxservice\", \"\");\n }\n await this._dictionary.setDictionary(this._optionsService.options.languageCode);\n setTimeout(() => {\n this._changeDetector.detectChanges();\n });\n }\n\n private _handleAddArticleLine(args: { lineNr: number; beforeOrAfter: PositionGridRow }) {\n //this.addArticleLine.next(args);\n this.showCatalogSidebar = true;\n this.currentArticleLineNr = args.lineNr;\n this.currentPositionGridRow = args.beforeOrAfter;\n }\n\n private _handleAddTextLine(args: { lineNr: number; beforeOrAfter: PositionGridRow }) {\n this.addTextLine.next(args);\n }\n}\n","import {AfterViewInit, Component, HostBinding, Inject, Input} from \"@angular/core\";\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\nimport {StockStatus} from \"@colijnit/transactionapi/build/enum/refcode/stock-status.enum\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {CoreComponentsIcon, IconCacheService, PromptService} from \"@colijnit/corecomponents_v12\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {ResolvePendingLineReasonRequest} from \"@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo\";\nimport {PendingReasonType} from \"@colijnit/transactionapi/build/enum/pending-reason-type.enum\";\nimport {LineOperationResponse} from \"@colijnit/transactionapi/build/model/line-operation-response.bo\";\n\n@Component({\n selector: \"shopping-cart-line\",\n template: `\n <div *ngIf=\"line.isArticle\" class=\"cart-line-r\" fxFlex>\n <div fxLayout=\"row\" class=\"full-width\">\n <div fxLayout=\"column\" class=\"cart-line-image\" *ngIf=\"!overviewMode\">\n <co-button [iconData]=\"iconCacheService.getIcon(iconTrashBin)\"\n [title]=\"'DELETE_TRANSACTION_LINE_HINT' | localize\"\n (click)=\"deleteTransactionLineClick()\"\n class=\"triangle white\"\n iconClass=\"medium light\"></co-button>\n </div>\n <div fxLayout=\"column\" class=\"cart-line-image\" *ngIf=\"!overviewMode\">\n <image-display [model]=\"image\" hideOnEmptyModel></image-display>\n </div>\n <div fxLayout=\"column\" class=\"cart-line-description\" fxLayoutGap=\"20px\">\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\n <span [textContent]=\"line.goodDescription\" class=\"cart-line-description-main\"></span>\n <span *ngIf=\"line.goodDescription && line.articleNumber\">|</span>\n <span [textContent]=\"line.articleNumber\" class=\"cart-line-description-artnr\"></span>\n </div>\n <span [innerHTML]=\"line.configurationReadable\"></span>\n </div>\n </div>\n <div fxLayout=\"row\" class=\"cart-line-right\">\n <div fxLayout=\"column\" class=\"cart-line-stock\" *ngIf=\"!overlayMode && !overviewMode\">\n <span [textContent]=\"'STOCK' | localize\" class=\"small-font\"></span>\n <stock-status-indicator [model]=\"stock\"></stock-status-indicator>\n <span [textContent]=\"'DELIVERY_TIME_PERIOD' | localize\" class=\"small-font\"></span>\n <span [textContent]=\"line.deliveryDate | deliveryTime\"></span>\n </div>\n <div class=\"cart-line-amount\">\n <co-input-number-picker\n class=\"horizontal\"\n [(model)]=\"localAmount\" [min]=\"0\" [buttonShowMode]=\"'always'\"\n [readonly]=\"true\"\n (modelChange)=\"changeLineAmount($event)\"></co-input-number-picker>\n </div>\n\n <div class=\"cart-line-totals\">\n <span [textContent]=\"line.displayNetLineTotal | coCurrency: true\"></span>\n </div>\n </div>\n </div>\n <div *ngIf=\"line.isText\" class=\"cart-line-t\" fxFlex\n [class.article-text]=\"line.articleBound\"\n [textContent]=\"line.text\">\n </div>\n `,\n styleUrls: [\"./shopping-cart-line.component.scss\"]\n})\nexport class ShoppingCartLineComponent implements AfterViewInit {\n public readonly iconTrashBin: CoreComponentsIcon = CoreComponentsIcon.TrashBin;\n\n @Input()\n @HostBinding(\"class.overlayed\")\n public overlayMode: boolean;\n\n @Input()\n @HostBinding(\"class.overview\")\n public overviewMode: boolean;\n\n @HostBinding(\"class.is-text\")\n public isText: boolean;\n\n @HostBinding(\"class.is-article\")\n public isArticle: boolean;\n\n @HostBinding(\"class.is-selected\")\n public isSelected: boolean;\n\n @Input()\n public get line(): TransactionLineInfo {\n return this._line;\n }\n\n public set line(value: TransactionLineInfo) {\n this._line = value;\n this.localAmount = this._line.amount;\n this.isText = this._line.isText;\n this.isArticle = this._line.isArticle;\n this.isSelected = this._line.isSelected;\n this._loadLineImage();\n }\n\n public localAmount: number;\n public image: string;\n public stock: StockStatus = StockStatus.Low;\n public currentReason: ResolvePendingLineReasonRequest;\n\n private _line: TransactionLineInfo;\n\n constructor(\n public iconCacheService: IconCacheService,\n public service: TransactionService,\n private _promptService: PromptService,\n private _dictionaryService: DictionaryService) {\n }\n\n ngAfterViewInit(): void {\n this._loadLineImage();\n }\n\n public changeLineAmount(amount: number): void {\n this.service.changeTransactionLineQuantity(this.line.uuid, amount).then((value: LineOperationResponse) => {\n if (!value || !value.isSuccess) {\n this.localAmount = this._line.amount;\n return;\n }\n this._handleLine(value).then();\n });\n }\n\n public async deleteTransactionLineClick(): Promise<void> {\n const deleteLine: boolean = await this._promptService.showYesNo(this._dictionaryService.get(\"DELETE_TRANSACTION_LINE\"), \" \");\n if (deleteLine) {\n this.service.deleteTransactionLine(this.service.currentTransaction.uuid, this.line.uuid).then((value: LineOperationResponse) => {\n this._handleLine(value);\n });\n }\n }\n\n private async _loadLineImage(): Promise<void> {\n this.image = this.line ? await this.service.retrieveLineImage(this.line) : undefined;\n }\n\n\n private async _confirmAction(lineOperationResponse: LineOperationResponse): Promise<void> {\n this.currentReason.confirmation = await this._promptService.showYesNo(lineOperationResponse.pendingReason, \" \");\n this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLine(value);\n });\n }\n\n private async _showInformation(lineOperationResponse: LineOperationResponse): Promise<void> {\n await this._promptService.showOkModal(lineOperationResponse.pendingReason, \" \");\n this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLine(value);\n });\n }\n\n private async _handleLine(lineOperationResponse: LineOperationResponse): Promise<void> {\n if (lineOperationResponse === undefined) {\n return;\n }\n this.currentReason = new ResolvePendingLineReasonRequest(lineOperationResponse.lineUuid,\n lineOperationResponse.pendingReason, lineOperationResponse.pendingReasonType);\n\n switch (lineOperationResponse.pendingReasonType) {\n case PendingReasonType.ABORTED:\n case PendingReasonType.CANCELLED:\n this.localAmount = this._line.amount;\n if (lineOperationResponse.pendingReason !== \"USER_DECISION\") {\n await this._promptService.showNotification(this._dictionaryService.get(lineOperationResponse.pendingReason), \" \");\n }\n break;\n case PendingReasonType.CONFIRMATION_NEEDED:\n await this._confirmAction(lineOperationResponse);\n break;\n case PendingReasonType.NON_CRITICAL_DISCONTINUATION:\n await this._showInformation(lineOperationResponse);\n break;\n case PendingReasonType.INVALID_LOGISTICS:\n this.localAmount = this._line.amount;\n await this._promptService.showError(this._dictionaryService.get(lineOperationResponse.pendingReason), \" \");\n break;\n case PendingReasonType.NONE:\n default:\n break;\n }\n }\n\n}\n","import {Component, Input, OnInit} from \"@angular/core\";\nimport {StockStatus} from \"@colijnit/transactionapi/build/enum/refcode/stock-status.enum\";\n\n@Component({\n selector: \"stock-status-indicator\",\n template: `\n <div [class]=\"stockClass\">\n <div class=\"square-1\"></div>\n <div class=\"square-2\"></div>\n <div class=\"square-3\"></div>\n </div>\n `,\n styleUrls: [\n \"./stock-status-indicator.component.scss\"\n ]\n})\n// Component that visually shows a stock status with three colored boxes.\nexport class StockStatusIndicatorComponent {\n @Input()\n public model: StockStatus;\n\n public get stockClass(): string {\n return this.model;\n }\n}\n","import {Component, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {CoDialogComponent} from \"@colijnit/corecomponents_v12\";\nimport {CoDomainValue} from \"@colijnit/transactionapi/build/model/co-domain-value.bo\";\nimport {TransactionLineCharacteristicChoice} from \"@colijnit/transactionapi/build/model/transactionLineCharacteristicChoice.bo\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\n\n@Component({\n selector: \"characteristic-answer\",\n template: `\n <co-dialog\n #characteristic\n [showCloseIcon]=\"false\"\n >\n <ng-container header>\n <div>\n <span class=\"characteristic-title\"\n [textContent]=\"getTranslationWithColon('ARTICLE')\"\n ></span>\n <span [textContent]=\"title\"></span>\n </div>\n </ng-container>\n\n <ng-container>\n <div>\n <div class=\"characteristic-header\">\n <span class=\"characteristic-title\"\n [textContent]=\"getTranslationWithColon('CHARACTERISTIC_QUESTION')\"\n ></span>\n </div>\n <div class=\"characteristic-header\">\n <span [textContent]=\"question | localize\"></span>\n </div>\n <div *ngIf=\"characteristicOptions\" class=\"npm characteristic-options\">\n <co-input-combo-box [(model)]=\"value\"\n [source]=\"characteristics\"\n [fields]=\"characteristicsFields\"\n [placeholder]=\"'VALUE' | localize\"\n [required]=\"true\"\n ></co-input-combo-box>\n </div>\n <div *ngIf=\"!characteristicOptions\" class=\"characteristic-value\">\n <co-input-text\n [(model)]=\"value\"\n [placeholder]=\"'VALUE' | localize \"\n required\n ></co-input-text>\n </div>\n </div>\n </ng-container>\n\n <ng-container footer>\n <div class=\"flex-center\">\n <co-button [label]=\"'OK' | localize\" (click)=\"onCharacteristicOkClick()\"></co-button>\n </div>\n </ng-container>\n </co-dialog>\n `,\n styleUrls: [\"./characteristic-answer.component.scss\"]\n})\nexport class CharacteristicAnswerComponent implements OnInit {\n @ViewChild(\"characteristic\")\n public characteristicDialog: CoDialogComponent;\n\n @Input()\n public title: string = \"\";\n\n @Input()\n public question: string = \"\";\n\n @Output()\n public readonly okClick: EventEmitter<string> = new EventEmitter<string>();\n\n public get characteristicOptions(): boolean {\n return this.characteristics.length > 0;\n }\n public value: string;\n\n public characteristics: TransactionLineCharacteristicChoice[] = [];\n\n public characteristicsCodes: TransactionLineCharacteristicChoice[] = [];\n public characteristicsFields: Object = { text: \"value\", value: \"value\" };\n\n constructor(\n private _dictionaryService: DictionaryService,\n ) { }\n\n ngOnInit(): void {\n }\n\n public getTranslationWithColon(text: string): string {\n return this._dictionaryService.get(text) + \":\";\n }\n\n public open(): void {\n this.characteristicDialog.open();\n }\n\n public close(): void {\n this.characteristicDialog.close();\n }\n\n public async onCharacteristicOkClick(): Promise<void> {\n this.close();\n this.okClick.emit(this.value);\n }\n}\n","import {NgModule} from \"@angular/core\";\nimport {BrowserAnimationsModule} from \"@angular/platform-browser/animations\";\nimport {\n ButtonModule,\n CoDialogModule,\n CoDialogPromptModule,\n CoGridModule,\n CoSidebarModule,\n DropDownModule,\n FormModule,\n IconModule,\n InputCheckboxModule,\n InputComboBoxModule,\n InputDatePickerModule,\n InputNumberPickerModule,\n InputRadioButtonModule,\n InputTextModule,\n MultiSelectListModule,\n PopupModule,\n} from \"@colijnit/corecomponents_v12\";\nimport {FlexModule} from \"@angular/flex-layout\";\nimport {DictionaryService} from \"../../service/dictionary.service\";\nimport {ShoppingCartManagerComponent} from \"./shopping-cart-manager/shopping-cart-manager.component\";\nimport {ShoppingCartComponent} from \"./shopping-cart/shopping-cart.component\";\nimport {ShoppingCartLineComponent} from \"./shopping-cart-line/shopping-cart-line.component\";\nimport {StockStatusIndicatorComponent} from \"./stock-status-indicator/stock-status-indicator.component\";\nimport {MatStepperModule} from \"@angular/material/stepper\";\nimport {TransactionService} from \"../../service/transaction.service\";\nimport {OptionsService} from \"../../service/options.service\";\nimport {IOneConnectorAdapterService} from \"../../service/ione-connector-adapter.service\";\nimport {IoneShoppingCartComponent} from \"./ione-shopping-cart.component\";\nimport {CoreModule} from \"../core/core.module\";\nimport {CharacteristicAnswerComponent} from \"./characteristic-answer/characteristic-answer.component\";\nimport {CommonModule} from \"@angular/common\";\n\n@NgModule({\n declarations: [\n ShoppingCartManagerComponent,\n ShoppingCartComponent,\n ShoppingCartLineComponent,\n StockStatusIndicatorComponent,\n IoneShoppingCartComponent,\n CharacteristicAnswerComponent,\n ],\n imports: [\n BrowserAnimationsModule,\n CommonModule,\n IconModule,\n InputTextModule,\n InputCheckboxModule,\n InputRadioButtonModule,\n FormModule,\n InputComboBoxModule,\n InputDatePickerModule,\n InputNumberPickerModule,\n CoDialogModule,\n CoDialogPromptModule,\n ButtonModule,\n FlexModule,\n MultiSelectListModule,\n MatStepperModule,\n DropDownModule,\n PopupModule.forRoot(),\n CoSidebarModule,\n CoGridModule,\n CoreModule\n ],\n providers: [\n IOneConnectorAdapterService,\n DictionaryService,\n TransactionService,\n OptionsService\n ],\n entryComponents: [\n IoneShoppingCartComponent\n ],\n exports: [IoneShoppingCartComponent],\n bootstrap: [IoneShoppingCartComponent]\n})\nexport class IoneShoppingCartModule {}\n","//export * from \"./app/component/ione-transaction.module\";\r\n//export * from \"./app/component/ione-transaction.component\";\r\n//export * from \"./app/component/checkout/retail-transaction-checkout/retail-transaction-checkout.component\";\r\nexport * from \"./app/component/checkout/ione-checkout.component\";\r\nexport * from \"./app/component/checkout/ione-checkout.module\";\r\nexport * from \"./app/component/shopping-cart/ione-shopping-cart.component\";\r\nexport * from \"./app/component/shopping-cart/ione-shopping-cart.module\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {CheckoutLoginComponent as ɵj} from './app/component/checkout/checkout-login/checkout-login.component';\nexport {CheckoutOverviewBlockComponent as ɵd} from './app/component/checkout/checkout-overview-block/checkout-overview-block.component';\nexport {CheckoutOverviewDeliveryAddressComponent as ɵx} from './app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component';\nexport {CheckoutOverviewDeliveryEditComponent as ɵh} from './app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component';\nexport {CheckoutOverviewRelationAddressComponent as ɵw} from './app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component';\nexport {CheckoutOverviewRelationEditComponent as ɵe} from './app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component';\nexport {CheckoutOverviewComponent as ɵc} from './app/component/checkout/checkout-overview/checkout-overview.component';\nexport {CheckOutRelationSuggestionsListItemComponent as ɵz} from './app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component';\nexport {CheckOutRelationSuggestionsListComponent as ɵy} from './app/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component';\nexport {CheckoutComponent as ɵb} from './app/component/checkout/checkout/checkout.component';\nexport {RetailTransactionCheckoutComponent as ɵa} from './app/component/checkout/retail-transaction-checkout/retail-transaction-checkout.component';\nexport {IconComponent as ɵv} from './app/component/common/icon/icon.component';\nexport {ImageDisplayComponent as ɵt} from './app/component/common/image-display/image-display.component';\nexport {NoImageDisplayComponent as ɵu} from './app/component/common/no-image-display/no-image-display.component';\nexport {CoreModule as ɵm} from './app/component/core/core.module';\nexport {CharacteristicAnswerComponent as ɵbe} from './app/component/shopping-cart/characteristic-answer/characteristic-answer.component';\nexport {ShoppingCartLineComponent as ɵbc} from './app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component';\nexport {ShoppingCartManagerComponent as ɵba} from './app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component';\nexport {ShoppingCartComponent as ɵbb} from './app/component/shopping-cart/shopping-cart/shopping-cart.component';\nexport {StockStatusIndicatorComponent as ɵbd} from './app/component/shopping-cart/stock-status-indicator/stock-status-indicator.component';\nexport {AppendPipe as ɵn} from './app/pipe/append.pipe';\nexport {CoCurrencyPipe as ɵr} from './app/pipe/co-currency.pipe';\nexport {DateDurationPipe as ɵp} from './app/pipe/date-duration.pipe';\nexport {DeliveryTimePipe as ɵo} from './app/pipe/delivery-time.pipe';\nexport {LocalizePipe as ɵq} from './app/pipe/localize.pipe';\nexport {SafeStylePipe as ɵs} from './app/pipe/safe-style-pipe';\nexport {DictionaryService as ɵi} from './app/service/dictionary.service';\nexport {IOneConnectorAdapterService as ɵg} from './app/service/ione-connector-adapter.service';\nexport {OptionsService as ɵk} from './app/service/options.service';\nexport {TransactionEventService as ɵl} from './app/service/transaction-event.service';\nexport {TransactionService as ɵf} from './app/service/transaction.service';"],"names":["BehaviorSubject","Options","Injectable","PROP_META_KEY","ObjectUtils","notNill","GetLogicalBooleanValue","GetYesNoDbBooleanValue","GetTrueFalseDbBooleanValue","GetOneZeroDbBooleanValue","DateUtils","NumberUtils","isNill","MapPropertyDecorator","BooleanTextDecorator","JsonFieldFieldDecorator","ComplexArrayDecorator","Transaction","ArticleFullObject","ImageUtils","RelationPrivacySetting","TransactionInfoResponse","CustomerFullObject","GetPostalCodeRetrievalOutputParams","LineOperationResponse","EventEmitter","TransactionTotal","NULL_RELATION_OBJECT","TransactionInfo","LineOperationStatus","ArrayUtils","PendingReasonType","SequenceName","TransactionKind","TransactionLineType","SetTransactionDeliveryOptionsRequest","Subject","Component","Input","Output","GenderType","ContactOption","RelationNameKind","FunctionUtils","Address","AddressType","CommunicationType","BusinessObjectUtils","ChangeDetectorRef","ViewChild","FormComponent","CoSidebarComponent","PromptService","Pipe","DomSanitizer","HostBinding","CoreComponentsIcon","IconCacheService","NgModule","CommonModule","BrowserAnimationsModule","IconModule","InputTextModule","InputCheckboxModule","InputRadioButtonModule","FormModule","InputComboBoxModule","InputDatePickerModule","InputNumberPickerModule","CoDialogModule","CoDialogPromptModule","ButtonModule","FlexModule","MultiSelectListModule","MatStepperModule","DropDownModule","PopupModule","CoSidebarModule","CoGridModule","ResolvePendingLineReasonRequest","throwError","SortDirection","SortType","StockStatus"],"mappings":"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"}
1
+ {"version":3,"file":"colijnit-transaction.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/app/service/options.service.ts","../../src/factory/decorators/complex-field.decorator.ts","../../src/factory/decorators/complex-array.decorator.ts","../../src/factory/decorators/boolean.decorator.ts","../../src/factory/decorators/date-field.decorator.ts","../../src/factory/decorators/string-number.decorator.ts","../../src/utils/is-nill.function.ts","../../src/utils/array-utils.ts","../../src/app/model/business-object.ts","../../src/factory/business-object-factory.ts","../../src/app/service/ione-connector-adapter.service.ts","../../src/app/service/transaction.service.ts","../../src/app/enum/language-code.enum.ts","../../src/app/utils/string-utils.ts","../../src/assets/dictionary/text.properties.ts","../../src/app/service/dictionary.service.ts","../../src/app/service/transaction-event.service.ts","../../src/app/enum/checkout-steps.enum.ts","../../src/app/component/checkout/checkout-overview-block/checkout-overview-block.component.ts","../../src/app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.ts","../../src/app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.ts","../../src/app/component/checkout/checkout-overview/checkout-overview.component.ts","../../src/app/component/checkout/checkout/checkout.component.ts","../../src/app/component/checkout/retail-transaction-checkout/retail-transaction-checkout.component.ts","../../src/app/component/checkout/checkout-login/checkout-login.component.ts","../../src/app/component/checkout/ione-checkout.component.ts","../../src/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.ts","../../src/app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.ts","../../src/app/enum/direction.enum.ts","../../src/app/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.ts","../../src/app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.ts","../../src/app/pipe/append.pipe.ts","../../src/app/enum/time-size.type.ts","../../src/app/pipe/date-duration.pipe.ts","../../src/app/pipe/delivery-time.pipe.ts","../../src/app/pipe/localize.pipe.ts","../../src/app/pipe/co-currency.pipe.ts","../../src/app/pipe/safe-style-pipe.ts","../../src/app/component/common/image-display/image-display.component.ts","../../src/app/component/common/no-image-display/no-image-display.component.ts","../../src/app/component/common/icon/icon.component.ts","../../src/app/component/core/core.module.ts","../../src/app/component/checkout/ione-checkout.module.ts","../../src/enum/position-grid-row.enum.ts","../../src/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.ts","../../src/app/enum/order-discount-type.enum.ts","../../src/app/enum/content-view-mode.enum.ts","../../src/app/component/shopping-cart/shopping-cart/shopping-cart.component.ts","../../src/app/component/shopping-cart/ione-shopping-cart.component.ts","../../src/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.ts","../../src/app/component/core/stock-status-indicator/stock-status-indicator.component.ts","../../src/app/component/shopping-cart/characteristic-answer/characteristic-answer.component.ts","../../src/app/component/shopping-cart/ione-shopping-cart.module.ts","../../src/app/component/service-order/ione-service-order.component.ts","../../src/app/component/core/base/transaction-base.component.ts","../../src/app/component/service-order/transaction-article-text/transaction-article-text.component.ts","../../src/app/component/service-order/service-order.component.ts","../../src/app/component/service-order/transaction-order-totals/transaction-order-totals.component.ts","../../src/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.ts","../../src/app/component/service-order/transaction-order-lines/transaction-order-lines.component.ts","../../src/app/component/service-order/transaction-relation/transaction-relation-address.component.ts","../../src/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.ts","../../src/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.ts","../../src/app/component/service-order/transaction-relation/transaction-relation-edit.component.ts","../../src/app/component/service-order/transaction-header-block/transaction-header-block.component.ts","../../src/app/component/service-order/summary/transaction-service-summary.component.ts","../../src/app/component/service-order/summary/transaction-summary-block.component.ts","../../src/app/component/service-order/summary/transaction-service-status.component.ts","../../src/app/component/service-order/summary/transaction-order-summary.component.ts","../../src/app/component/service-order/summary/transaction-payment-info.component.ts","../../src/app/component/service-order/summary/transaction-article-summary.component.ts","../../src/app/component/service-order/summary/transaction-delivery-summary.component.ts","../../src/app/component/service-order/summary/transaction-product-contract-summary.component.ts","../../src/app/component/service-order/summary/transaction-product-summary.component.ts","../../src/app/component/core/directive/template-wrapper.directive.ts","../../src/app/component/core/base/default-ok-cancel-buttons.component.ts","../../src/app/component/service-order/ione-service-order-module.ts","../../src/public_api.ts","../../src/colijnit-transaction.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\nimport {Options} from \"@colijnit/ioneconnector/build/model/options\";\r\n\r\n@Injectable()\r\nexport class OptionsService {\r\n\r\n public set options(value: Options) {\r\n this._options = value;\r\n }\r\n\r\n public get options(): Options {\r\n return this._options;\r\n }\r\n\r\n public optionsLoaded: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n private _options: Options;\r\n\r\n constructor() {}\r\n\r\n public async createSettingsFromObject(obj: any): Promise<void> {\r\n this.options = new Options();\r\n if (obj.hasOwnProperty(\"url\")) {\r\n this.options.url = obj[\"url\"];\r\n }\r\n if (obj.hasOwnProperty(\"schema\")) {\r\n this.options.schema = obj[\"schema\"];\r\n }\r\n if (obj.hasOwnProperty(\"version\")) {\r\n this.options.version = obj[\"version\"];\r\n }\r\n if (obj.hasOwnProperty(\"languageCode\")) {\r\n this.options.languageCode = obj[\"languageCode\"];\r\n } else {\r\n this.options.languageCode = \"NL\";\r\n }\r\n if (obj.hasOwnProperty(\"username\")) {\r\n this.options.username = obj[\"username\"];\r\n }\r\n if (obj.hasOwnProperty(\"password\")) {\r\n this.options.password = obj[\"password\"];\r\n }\r\n if (obj.hasOwnProperty(\"session\")) {\r\n this.options.session = obj[\"session\"];\r\n }\r\n if (obj.hasOwnProperty(\"useLoginEncryption\")) {\r\n this.options.useLoginEncryption = obj[\"useLoginEncryption\"];\r\n }\r\n\r\n this.optionsLoaded.next(true);\r\n }\r\n\r\n public async initialize(options: any): Promise<void> {\r\n if (options) {\r\n await this.createSettingsFromObject(options);\r\n }\r\n }\r\n\r\n public initializeDevelopmentOptions(remote: boolean): void {\r\n if (remote) {\r\n this._initializeDevelopmentRemoteOptions();\r\n } else {\r\n this._initializeDevelopmentLocalOptions();\r\n }\r\n }\r\n\r\n private _initializeDevelopmentRemoteOptions(): void {\r\n this.initialize( {\r\n url: \"http://130.62.7.180:8082/ione\",\r\n ajaxUrl: \"http://130.62.7.180:8082/ione\",\r\n schema: \"815\",\r\n version: \"251\",\r\n useLoginEncryption: true,\r\n username: \"sjaak\",\r\n password: \"sjaak1\",\r\n languageCode: \"NL\",\r\n }).then();\r\n }\r\n\r\n private _initializeDevelopmentLocalOptions(): void {\r\n this.initialize( {\r\n url: \"http://127.0.0.1:8080/ione\",\r\n ajaxUrl: \"http://127.0.0.1:8080/ione\",\r\n schema: \"815\",\r\n version: \"251\",\r\n useLoginEncryption: true,\r\n username: \"sjaak\",\r\n password: \"sjaak1\",\r\n languageCode: \"NL\",\r\n }).then();\r\n }\r\n}\r\n","import {notNill} from \"@colijnit/transactionapi/build/utils/function/not-nill.function\";\r\nimport {ObjectUtils} from \"@colijnit/transactionapi/build/utils/object-utils\";\r\n\r\nconst PROP_META_KEY: string = \"complexField\";\r\n\r\n/**\r\n * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.\r\n */\r\n\r\n/**\r\n * Property decorator for properties of businessobject classes that are other strongly typed businessobjects.\r\n * Ensures that the BusinessObjectFactoryService makes properly typed objects from incoming raw persistence data. Otherwise we couldn't add methods\r\n * to our own businessobjects and use them, since all fields would be flat data without methods after BusinessObjectFactoryService creation.\r\n *\r\n * Usage:\r\n *\r\n * @ComplexField(Transaction)\r\n * public transaction: Transaction\r\n *\r\n * Also keeps track of a \"complexFieldProps\" metadata on the class-level, as a reflect-metadata workaround to be able to\r\n * retrieve all properties that have the @ComplexField(..) decorator (impossible with current Reflect API).\r\n */\r\nexport function ComplexField(type: any): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey) {\r\n return;\r\n }\r\n\r\n // warn the programmer if given type was undefined; it's probably an import order glitch that caused this, because decorators seem\r\n // to be immediately processed when a class is first imported\r\n if (!type) {\r\n // eslint-disable-next-line no-console\r\n console.warn(`@ComplexField(type): type was UNDEFINED. Called on prop (${ObjectUtils.GetClassName(target)}, ${propertyKey}). ` +\r\n `Class will not properly serialize and deserialize now. We've always been able to fix this by CHANGING IMPORT ORDERS ` +\r\n `where both classes and their dependencies are used, e.g. factory, repository or models..`);\r\n return;\r\n }\r\n Reflect.defineMetadata(PROP_META_KEY, type, target, propertyKey);\r\n };\r\n}\r\n\r\n// Utility function holder of the ComplexFieldDecorator decorator.\r\nexport class ComplexFieldDecorator {\r\n\r\n /**\r\n * Returns whether given property (as a string) on given object is a complex field. A complex field is a field that is decorated\r\n * with the @ComplexField decorator.\r\n */\r\n public static IsComplexField(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n return (notNill(Reflect.getMetadata(PROP_META_KEY, target, propertyKey)));\r\n }\r\n\r\n // Returns the VALUE of the @ComplexField(VALUE) property decorator on the given propertyKey on the given modelObject.\r\n public static GetComplexFieldType(target: Object, propertyKey: string): any {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return undefined;\r\n }\r\n return Reflect.getMetadata(PROP_META_KEY, target, propertyKey);\r\n }\r\n}\r\n","import {notNill} from \"@colijnit/transactionapi/build/utils/function/not-nill.function\";\r\nimport {ObjectUtils} from \"@colijnit/transactionapi/build/utils/object-utils\";\r\n\r\nconst PROP_META_KEY: string = \"complexArray\";\r\n\r\n/**\r\n * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.\r\n */\r\n\r\n/**\r\n * Property decorator for properties of businessobject classes that are an array of other strongly typed businessobjects.\r\n * Ensures that the BusinessObjectFactoryService makes properly typed objects from incoming raw persistence data. Otherwise we couldn't add methods\r\n * to our own businessobjects and use them, since all fields would be flat data without methods after BusinessObjectFactoryService creation.\r\n *\r\n * Usage:\r\n *\r\n * @ComplexArray(TransactionLine)\r\n * public transactionLines: TransactionLine[]\r\n */\r\nexport function ComplexArray(type: any): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return;\r\n }\r\n // warn the programmer if given type was undefined; it's probably an import order glitch that caused this, because decorators seem\r\n // to be immediately processed when a class is first imported\r\n if (!type) {\r\n console.warn(`@ComplexArray(type): type was UNDEFINED. Called on prop (${ObjectUtils.GetClassName(target)}, ${propertyKey}). ` +\r\n `Class will not properly serialize and deserialize now. We've always been able to fix this by CHANGING IMPORT ORDERS ` +\r\n `where both classes and their dependencies are used, e.g. factory, repository or models..`);\r\n return;\r\n }\r\n Reflect.defineMetadata(PROP_META_KEY, type, target, propertyKey);\r\n };\r\n}\r\n\r\n// Utility function holder of the ComplexArrayDecorator decorator.\r\nexport class ComplexArrayDecorator {\r\n /**\r\n * Returns whether given property (as a string) on given object is a complex array. A complex array is an array field that is decorated\r\n * with the @ComplexArray decorator.\r\n */\r\n public static IsComplexArray(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n\r\n return (notNill(Reflect.getMetadata(PROP_META_KEY, target, propertyKey)));\r\n }\r\n\r\n /**\r\n * Returns the VALUE of the @ComplexArray(VALUE) property decorator on the given propertyKey on the given modelobject.\r\n */\r\n public static GetComplexArrayType(target: Object, propertyKey: string): any {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return undefined;\r\n }\r\n\r\n return Reflect.getMetadata(PROP_META_KEY, target, propertyKey);\r\n }\r\n}\r\n","import {GetYesNoDbBooleanValue} from \"@colijnit/transactionapi/build/enum/yes-no-db-type.enum\";\r\nimport {GetTrueFalseDbBooleanValue} from \"@colijnit/transactionapi/build/enum/true-false-db-type.enum\";\r\nimport {GetOneZeroDbBooleanValue} from \"@colijnit/transactionapi/build/enum/one-zero-bool-db-type.enum\";\r\nimport {DbBooleanValueType, GetLogicalBooleanValue} from \"@colijnit/transactionapi/build/enum/db-boolean-value-type.enum\";\r\n\r\nconst PROP_META_KEY_JN: string = \"booleanTextJN\";\r\nconst PROP_META_KEY_TF: string = \"booleanTextTF\";\r\nconst PROP_META_KEY_10: string = \"booleanText10\";\r\n\r\n/**\r\n * There are 'J', 'T', 'N', 'F', 0 and 1 'boolean values' in the database. These should be translated to true and false boolean values in\r\n * our client application.\r\n *\r\n * The values 'J' and 'N' seem to be most commonly used. This is the default setting when using this decorator.\r\n * You can pass 'T' or 1 for the other variants as follows:\r\n *\r\n * Usage:\r\n *\r\n * @BooleanText() or @BooleanText(\"J\") (the default, uses YesNoDbType char values)\r\n * public foo: boolean // 'J' and 'N' become true and false after BusinessObjectFactoryService and -SerializerService processing\r\n *\r\n * @BooleanText('T') (uses TrueFalseDbType char values)\r\n * public bar: boolean // 'T' and 'F' become true and false after BusinessObjectFactoryService and -SerializerService processing\r\n *\r\n * @BooleanText(1)\r\n * public baz: boolean // 1 and 0 become true and false after BusinessObjectFactoryService and -SerializerService processing\r\n */\r\nexport function BooleanText(type?: \"J\" | \"T\" | 1): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey) {\r\n return;\r\n }\r\n // by default, it's a J N boolean text\r\n if (!type || type === \"J\") {\r\n Reflect.defineMetadata(PROP_META_KEY_JN, true, target, propertyKey);\r\n } else if (type === \"T\") {\r\n Reflect.defineMetadata(PROP_META_KEY_TF, true, target, propertyKey);\r\n } else if (type === 1) {\r\n Reflect.defineMetadata(PROP_META_KEY_10, true, target, propertyKey);\r\n }\r\n };\r\n}\r\n\r\n// Utility function holder of the BooleanTextDecorator decorator.\r\nexport class BooleanTextDecorator {\r\n\r\n /**\r\n * Returns whether given property (as a string) on given object is a boolean text field. That is, it's a field that is decorated\r\n * with the @BooleanText decorator.\r\n */\r\n public static IsBooleanTextField(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n return (\r\n Reflect.getMetadata(PROP_META_KEY_JN, target, propertyKey) === true\r\n ||\r\n Reflect.getMetadata(PROP_META_KEY_TF, target, propertyKey) === true\r\n ||\r\n Reflect.getMetadata(PROP_META_KEY_10, target, propertyKey) === true\r\n );\r\n }\r\n\r\n /**\r\n * Returns the logical true or false value of given character ('J', 'N', 'T' or 'F') or number (0 or 1).\r\n * Returns UNDEFINED if given boolChar was not recognised as a boolean text.\r\n */\r\n public static GetLogicalBooleanValue(dbBoolChar: DbBooleanValueType | string): boolean {\r\n return GetLogicalBooleanValue(dbBoolChar);\r\n }\r\n\r\n /**\r\n * Returns the boolean character / number of given logical bool property on target object. Uses its @BooleanText() annotation to decide\r\n * what character / number to return.\r\n * Used in BusinessObjectSerializerServiceService to convert logical bools to their original boolean character.\r\n * @returns {string|number} The original, reverse-engineered boolean character (or number) of given object property, or undefined.\r\n */\r\n public static GetDbBooleanValue(target: Object, propertyKey: string): DbBooleanValueType {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return undefined;\r\n }\r\n\r\n let dbBoolVal: any = undefined;\r\n\r\n const curBoolVal: boolean = target[propertyKey];\r\n\r\n if (BooleanTextDecorator._IsJaNeeProp(target, propertyKey)) {\r\n dbBoolVal = GetYesNoDbBooleanValue(curBoolVal);\r\n } else if (BooleanTextDecorator._IsTrueFalseProp(target, propertyKey)) {\r\n dbBoolVal = GetTrueFalseDbBooleanValue(curBoolVal);\r\n } else if (BooleanTextDecorator._IsZeroOneProp(target, propertyKey)) {\r\n dbBoolVal = GetOneZeroDbBooleanValue(curBoolVal);\r\n }\r\n\r\n return dbBoolVal as any as DbBooleanValueType;\r\n }\r\n\r\n private static _IsJaNeeProp(target: Object, propertyKey: string): boolean {\r\n return BooleanTextDecorator._IsProp(PROP_META_KEY_JN, target, propertyKey);\r\n }\r\n\r\n private static _IsTrueFalseProp(target: Object, propertyKey: string): boolean {\r\n return BooleanTextDecorator._IsProp(PROP_META_KEY_TF, target, propertyKey);\r\n }\r\n\r\n private static _IsZeroOneProp(target: Object, propertyKey: string): boolean {\r\n return BooleanTextDecorator._IsProp(PROP_META_KEY_10, target, propertyKey);\r\n }\r\n\r\n private static _IsProp(prop: string, target: Object, propertyKey: string): boolean {\r\n return !!target && !!propertyKey && typeof target === \"object\" && Reflect.hasMetadata(prop, target, propertyKey);\r\n }\r\n}\r\n","import {DateUtils} from \"@colijnit/transactionapi/build/utils/date-utils\";\r\n\r\nconst PROP_META_KEY: string = \"dateField\";\r\n\r\n/**\r\n * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.\r\n */\r\n\r\n/**\r\n * Property decorator for properties of businessobject classes that are of type Date, but are sent to us as strings.\r\n * Ensures that the BusinessObjectFactory makes proper JavaScript Date objects from incoming strings for @DateField() decorated properties.\r\n *\r\n * Usage:\r\n *\r\n * @DateField()\r\n * public expectedDeliveryDate: Date\r\n */\r\nexport function DateField(): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey) {\r\n return;\r\n }\r\n Reflect.defineMetadata(PROP_META_KEY, undefined, target, propertyKey);\r\n };\r\n}\r\n\r\n// Utility function holder of the @DateField() decorator.\r\nexport class DateFieldFieldDecorator {\r\n\r\n // Returns whether given property (as a string) on given object is decorated with @DateField().\r\n public static IsDateField(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n return Reflect.hasMetadata(PROP_META_KEY, target, propertyKey);\r\n }\r\n\r\n public static StringAsDate(str: string): Date {\r\n return DateUtils.StringAsDate(str);\r\n }\r\n}\r\n","import {NumberUtils} from \"@colijnit/transactionapi/build/utils/number-utils\";\r\n\r\nconst PROP_META_KEY: string = \"stringNumber\";\r\n/**\r\n * !! just a TAG DECORATOR for now, there is no code that uses this meta data within the ione connector lib itself.\r\n */\r\n\r\n/**\r\n * Decorator for properties of businessobjects that are sent to us as strings from the database, but which we want to use as a number in the client.\r\n *\r\n * Can be handy for incongruent backend api cases, where id data types are communicated wrongly via strings instead of numbers\r\n * (e.g. on EmployeeFullObject.district, points to a District which has a number id, but in employee it's a string representation of that number...)\r\n *\r\n * Used by business object factory and -serializer.\r\n *\r\n * Usage:\r\n *\r\n * @StringNumber()\r\n * public rights: UserRightType\r\n */\r\nexport function StringNumber(): PropertyDecorator {\r\n return function (target: any, propertyKey: string): void {\r\n if (!target || !propertyKey) {\r\n return;\r\n }\r\n Reflect.defineMetadata(PROP_META_KEY, undefined, target, propertyKey);\r\n };\r\n}\r\n\r\n// Utility function holder of the @StringNumber() decorator.\r\nexport class StringNumberDecorator {\r\n\r\n // Returns whether given property (as a string) on given object is decorated with @StringNumber().\r\n public static IsStringNumber(target: Object, propertyKey: string): boolean {\r\n if (!target || !propertyKey || typeof target !== \"object\") {\r\n return false;\r\n }\r\n return Reflect.hasMetadata(PROP_META_KEY, target, propertyKey);\r\n }\r\n\r\n public static StringAsNumber(str: string): number {\r\n return NumberUtils.ParseFloatKeepPrecision(str);\r\n }\r\n\r\n public static NumberAsString(nr: number): string {\r\n return \"\" + nr;\r\n }\r\n}\r\n","// @returns true iff given value equals null or equals undefined\r\nexport function isNill(value: any): boolean {\r\n return value === null || value === undefined;\r\n}","import {ObjectUtils} from \"@colijnit/transactionapi/build/utils/object-utils\";\r\nimport {NumberUtils} from \"@colijnit/transactionapi/build/utils/number-utils\";\r\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\r\nimport {notNill} from \"@colijnit/transactionapi/build/utils/function/not-nill.function\";\r\n\r\nexport class ArrayUtils {\r\n /**\r\n * Returns whether at least one element in given array could be found by given finder function.\r\n *\r\n * @param {T[]} array\r\n * @param {(element: T) => boolean} finder A finder function that takes an element of the array and returns a boolean that represents\r\n * the 'found status' for that element; whether it should have been found or not.\r\n */\r\n public static ContainsAnElementFoundBy<T>(array: T[], finder: (element: T) => boolean): boolean {\r\n if (!array || !finder) {\r\n return false;\r\n }\r\n\r\n return notNill(this.Find<T>(array, finder));\r\n }\r\n\r\n /**\r\n * Cross-browser Array.find() function. Returns the first item in given array for which the foundBy function returns true. Returns\r\n * undefined when none was found.\r\n *\r\n * Example usage:\r\n * const foundItem: BusinessObject = ArrayUtils.Find<BusinessObject>(modelArray, (modelItem: BusinessObject) => <br>\r\n * (return modelItem.getId() === '1')\r\n * * });\r\n *\r\n * @param array The array with items to search in.\r\n * @param foundBy The finder function applied on each items of the array, when that returns true, the item is considered found.\r\n */\r\n public static Find<T>(array: T[], foundBy: (item: T) => boolean): T {\r\n if (!array || !foundBy) {\r\n return undefined;\r\n }\r\n\r\n for (let i: number = 0, len: number = array.length; i < len; i++) {\r\n const itemCur: T = array[i];\r\n if (foundBy(itemCur) ) {\r\n return itemCur;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n // @returns empty array when nothing found, otherwise array with found items\r\n public static FindAll<T>(array: T[], foundBy: (item: T) => boolean): T[] {\r\n const answer: T[] = [];\r\n if (!array || !foundBy) {\r\n return answer;\r\n }\r\n\r\n for (let i: number = 0, len: number = array.length; i < len; i++) {\r\n const itemCur: T = array[i];\r\n if (foundBy(itemCur)) {\r\n answer.push(itemCur);\r\n }\r\n }\r\n return answer;\r\n }\r\n\r\n // returns a simple clone of given array, using array.slice(0)\r\n public static CloneArray<T>(array: T[]): T[] {\r\n let answer: T[] = [];\r\n\r\n if (array) {\r\n answer = array.slice(0);\r\n }\r\n\r\n return answer;\r\n }\r\n\r\n /**\r\n * Returns a 'semi deep clone' of given array. Its first-level members are object-shallow-cloned (optionally with a strongly typed constructor),\r\n * or just as plain object (see param arrayItemsClass).\r\n * @param array\r\n * @param arrayItemsClass If provided, the cloned array's first-level items will be strongly typed to / constructed as this class. Otherwise\r\n * it'll be a plain object.\r\n * @param deepClone Set to true if array items contain FUNCTIONS that need to be cloned..\r\n * @returns {Array} semi-deep clone of given array\r\n */\r\n public static CloneArrayAndItsItems<T>(array: T[], arrayItemsClass?: any, deepClone: boolean = false): T[] {\r\n const cloneArray: T[] = [];\r\n\r\n if (array) {\r\n for (let i: number = 0, len: number = array.length; i < len; i++) {\r\n if (deepClone) {\r\n cloneArray.push(ObjectUtils.GetDeepClone(array[i]));\r\n } else {\r\n cloneArray.push(ObjectUtils.GetShallowClone(array[i], arrayItemsClass));\r\n }\r\n }\r\n } else {\r\n return [];\r\n }\r\n\r\n return cloneArray;\r\n }\r\n\r\n /**\r\n * Removes element at given index from given array. Doesn't just set it to null like JavaScripts standard 'delete' does, but really\r\n * removes the element using splice().\r\n *\r\n * @param {number} index\r\n * @param {any[]} array in-out\r\n * @returns {boolean} True if and only if the element on given index is succesfully removed from given array.\r\n */\r\n public static RemoveElementAtIndex(index: number, array: any[]): boolean {\r\n if (NumberUtils.IsNaN(index) || index < 0 || !Array.isArray(array) || array.length === 0) {\r\n return false;\r\n }\r\n\r\n if (index in array) {\r\n array.splice(index, 1);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Removes given element from given array. Doesn't just set it to null like JavaScripts standard 'delete' does, but really removes the\r\n * element using splice(). Also works on associative arrays.\r\n *\r\n * @param {T} element The element to remove.\r\n * @param {T[]} array The array to remove the element from.\r\n * @returns {boolean} True iff given element was truly successfully removed from given array.\r\n */\r\n public static RemoveElement<T>(element: T, array: T[]): boolean {\r\n if (!Array.isArray(array)) {\r\n return false;\r\n }\r\n\r\n const index: number = array.indexOf(element);\r\n return ArrayUtils.RemoveElementAtIndex(index, array);\r\n }\r\n\r\n // Checks if given array is defined, and is an array, and has length > 0, and, optionally checks that the first element is of type given clazz.\r\n public static IsArrayWithElements<T>(arrayToCheck: T[], classItemsMustBeInstanceOf?: any): boolean {\r\n if (isNill(arrayToCheck)) {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(arrayToCheck) && arrayToCheck.length > 0) {\r\n if (classItemsMustBeInstanceOf) {\r\n return arrayToCheck[0] instanceof classItemsMustBeInstanceOf;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // Removes all elements from given array for which given filter function holds true. Returns true if at least one removed, else false.\r\n public static RemoveElementsByFilter(array: any[], filterFunction: (item: any) => boolean): boolean {\r\n if (!ArrayUtils.IsArrayWithElements(array) || !filterFunction) {\r\n return false;\r\n }\r\n\r\n let atLeastOneRemoved: boolean = false;\r\n\r\n const len: number = array.length;\r\n for (let i: number = len - 1; i >= 0; i--) {\r\n const item: any = array[i];\r\n if (filterFunction.call(this, item) === true) {\r\n array.splice(i, 1);\r\n atLeastOneRemoved = true;\r\n }\r\n }\r\n\r\n return atLeastOneRemoved;\r\n }\r\n\r\n public static MoveElement<T>(element: T, toIndex: number, array: T[]): boolean {\r\n if (!Array.isArray(array) || isNill(toIndex)) {\r\n return false;\r\n }\r\n\r\n const fromIndex: number = array.indexOf(element);\r\n const toIndexCorrected: number = NumberUtils.GetNearestNumberWithinBounds(toIndex, 0, array.length - 1);\r\n if (fromIndex === -1 || array[toIndexCorrected] === element) {\r\n // element did not exist in given array, or already existed on given toIndex\r\n return false;\r\n }\r\n array.splice(toIndexCorrected, 0, array.splice(fromIndex, 1)[0]);\r\n return true;\r\n }\r\n\r\n // PRE: elements exists in given array. POST: given elementToPlace has a lower index than given afterThisElement. Array is in-out manipulated.\r\n public static PlaceElementAfterOther(array: any[], elementToPlace: any, afterThisElement: any): void {\r\n if (array) {\r\n const afterThisElIdx: number = array.indexOf(afterThisElement);\r\n const elToPlaceIdx: number = array.indexOf(elementToPlace);\r\n if (afterThisElIdx >= elToPlaceIdx) {\r\n ArrayUtils.MoveElement(elementToPlace, afterThisElIdx + 1, array);\r\n }\r\n }\r\n }\r\n}\r\n","/**\r\n * This type represents the concept of a business object ID type. ID's of business objects can be a primary number, a simple string or a\r\n * object for a composite key.\r\n *\r\n * Simply to prevent type declarations of 'number | string | Object' for BO ID data all over the application.\r\n */\r\nimport {MapPropertyDecorator} from \"@colijnit/transactionapi/build/factory/decorators/map-property.decorator\";\r\nimport {BooleanTextDecorator} from \"@colijnit/transactionapi/build/factory/decorators/boolean.decorator\";\r\nimport {JsonFieldFieldDecorator} from \"@colijnit/transactionapi/build/factory/decorators/json.decorator\";\r\nimport {ComplexArrayDecorator} from \"@colijnit/transactionapi/build/factory/decorators/complex-array.decorator\";\r\n\r\nexport type BusinessObjectIDType = number | string | Object;\r\n\r\nexport abstract class BusinessObject {\r\n // The ID of the model.\r\n public id: BusinessObjectIDType;\r\n\r\n // Overridable. Returns the ID of the model. Concrete model classes often override this method to provide their specific ID getter.\r\n public getId(): BusinessObjectIDType {\r\n return this.id;\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n protected setOwnMappedPropsFromRawData(rawData: any = {}): void {\r\n if (!rawData) {\r\n return;\r\n }\r\n Object.keys(this).forEach((key) => {\r\n // check if property needs to be mapped\r\n if (MapPropertyDecorator.IsMapProperty(this, key)) {\r\n const mapKeys: string[] = MapPropertyDecorator.GetMapProperty(this, key).split(\",\");\r\n const len: number = mapKeys.length;\r\n for (let i: number = 0; i < len; i++) {\r\n // eslint-disable-next-line \r\n const mapKey = mapKeys[i].trim();\r\n const objProp: any = rawData[mapKey];\r\n let decorated: boolean = false;\r\n if (rawData.hasOwnProperty(mapKey)) {\r\n if (BooleanTextDecorator.IsBooleanTextField(this, key)) {\r\n this[key] = BooleanTextDecorator.GetLogicalBooleanValue(objProp);\r\n decorated = true;\r\n }\r\n if (JsonFieldFieldDecorator.IsJsonField(this, key)) {\r\n this[key] = JsonFieldFieldDecorator.StringAsJson(objProp);\r\n decorated = true;\r\n }\r\n if (ComplexArrayDecorator.IsComplexArray(this, key)) {\r\n const arrayClass: any = ComplexArrayDecorator.GetComplexArrayType(this, key);\r\n // eslint-disable-next-line \r\n const origArray = this[key];\r\n // eslint-disable-next-line \r\n const newArray = [];\r\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n for (let j = 0; j < origArray.length; j++) {\r\n // eslint-disable-next-line\r\n const item = new arrayClass(origArray[j]);\r\n newArray.push(item);\r\n }\r\n this[key] = newArray;\r\n } else {\r\n if (!decorated) {\r\n this[key] = objProp;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n } else {\r\n if (rawData.hasOwnProperty(key)) {\r\n const objProp: any = rawData[key];\r\n if (BooleanTextDecorator.IsBooleanTextField(this, key)) {\r\n this[key] = BooleanTextDecorator.GetLogicalBooleanValue(objProp);\r\n } else if (JsonFieldFieldDecorator.IsJsonField(this, key)) {\r\n this[key] = JsonFieldFieldDecorator.StringAsJson(objProp);\r\n } else {\r\n this[key] = objProp;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import {ComplexFieldDecorator} from \"./decorators/complex-field.decorator\";\r\nimport {ComplexArrayDecorator} from \"./decorators/complex-array.decorator\";\r\nimport {BooleanTextDecorator} from \"./decorators/boolean.decorator\";\r\nimport {DateFieldFieldDecorator} from \"./decorators/date-field.decorator\";\r\nimport {StringNumberDecorator} from \"./decorators/string-number.decorator\";\r\nimport {isNill} from \"../utils/is-nill.function\";\r\nimport {ArrayUtils} from \"../utils/array-utils\";\r\nimport {BusinessObject} from \"../app/model/business-object\";\r\n\r\n// Factory service creates businessobjects, using their decorators in the process.\r\nexport class BusinessObjectFactory {\r\n constructor() {\r\n }\r\n\r\n /**\r\n * Creates and returns a new business data object instance of given class, with all given data properties applied to it in a\r\n * complex-aware style. That is, all properties on given class that are decorated with @ComplexField(..) or @ComplexArray(..) decorators\r\n * become strongly typed business objects, with methods that are usable and such.\r\n *\r\n * @param modelClass\r\n * @param {Object} rawData The object with all (possibly raw/flat/not alive) data to be applied to the created model object\r\n */\r\n public makeWithRawBackendData(modelClass: any, rawData: Object): BusinessObject {\r\n if (!modelClass) {\r\n return undefined;\r\n }\r\n if (typeof modelClass !== typeof BusinessObject) {\r\n return undefined;\r\n }\r\n\r\n const model: BusinessObject = new modelClass();\r\n this._copyAllPropertiesDecoratorProcessedFrom(rawData, model);\r\n return model;\r\n }\r\n\r\n // see makeWithRawBackendData, this is a loop-wrapper around that method\r\n public makeBOArrayFromRawBackendDataArray(modelClass: any, arrayOfRawDatas: Object[]): BusinessObject[] {\r\n if (!modelClass) {\r\n return undefined;\r\n }\r\n\r\n const trueClientBos: BusinessObject[] = [];\r\n if (arrayOfRawDatas) {\r\n for (let i: number = 0, len: number = arrayOfRawDatas.length; i < len; i++) {\r\n trueClientBos.push(this.makeWithRawBackendData(modelClass, arrayOfRawDatas[i]));\r\n }\r\n }\r\n return trueClientBos;\r\n }\r\n\r\n public instantiateNewBo(modelClass: any): BusinessObject {\r\n return this.makeWithRawBackendData(modelClass, {});\r\n }\r\n\r\n /**\r\n * Applies all properties of given 'source' object to the given 'destination' businessobject, if destination has that property.\r\n * Works with the @ComplexField(), @ComplexArray, @BooleanText, @CoInject and @DateField annotations of given destination model.\r\n *\r\n * @param sourceData Raw data to copy to destination model\r\n * @param {BusinessObject} destinationModel InOut: The annotated businessobject to apply source properties to\r\n */\r\n private _copyAllPropertiesDecoratorProcessedFrom(sourceData: any, destinationModel: BusinessObject): void {\r\n if (!sourceData || !destinationModel) {\r\n return;\r\n }\r\n\r\n // process all source data into destinationModel\r\n for (const srcPropKey in sourceData) {\r\n if (!sourceData.hasOwnProperty(srcPropKey)) {\r\n continue;\r\n }\r\n\r\n const srcPropVal: any = sourceData[srcPropKey];\r\n\r\n if (ComplexFieldDecorator.IsComplexField(destinationModel, srcPropKey)) {\r\n const classOfField: any = ComplexFieldDecorator.GetComplexFieldType(destinationModel, srcPropKey);\r\n destinationModel[srcPropKey] = this.makeWithRawBackendData(classOfField, srcPropVal);\r\n } else if (ComplexArrayDecorator.IsComplexArray(destinationModel, srcPropKey)) {\r\n const sourceArray: any[] = srcPropVal;\r\n if (!sourceArray) {\r\n continue;\r\n }\r\n const classOfArrayItems: any = ComplexArrayDecorator.GetComplexArrayType(destinationModel, srcPropKey);\r\n const tempArray: any[] = [];\r\n for (let i: number = 0, len: number = sourceArray.length; i < len; i++) {\r\n tempArray.push(this.makeWithRawBackendData(classOfArrayItems, sourceArray[i]));\r\n }\r\n destinationModel[srcPropKey] = tempArray;\r\n } else if (BooleanTextDecorator.IsBooleanTextField(destinationModel, srcPropKey)) {\r\n // logical 'true' and 'false' also allowed as incoming values for @BooleanText() properties: then just copy their value\r\n if (typeof srcPropVal === \"boolean\") {\r\n destinationModel[srcPropKey] = srcPropVal;\r\n // here, it should be a 'J' or 'N' (or 'T' or 'F'): assign the associated boolean value\r\n } else {\r\n destinationModel[srcPropKey] = BooleanTextDecorator.GetLogicalBooleanValue(srcPropVal);\r\n }\r\n } else if (DateFieldFieldDecorator.IsDateField(destinationModel, srcPropKey)) {\r\n destinationModel[srcPropKey] = DateFieldFieldDecorator.StringAsDate(srcPropVal);\r\n } else if (StringNumberDecorator.IsStringNumber(destinationModel, srcPropKey)) {\r\n destinationModel[srcPropKey] = StringNumberDecorator.StringAsNumber(srcPropVal);\r\n }\r\n // non-decorated prop\r\n else {\r\n if (isNill(srcPropVal)) {\r\n destinationModel[srcPropKey] = undefined;\r\n } else if (Array.isArray(srcPropVal)) {\r\n destinationModel[srcPropKey] = ArrayUtils.CloneArray(srcPropVal);\r\n } else if (typeof srcPropVal === \"object\") {\r\n if (srcPropVal instanceof Map) { //just copy the value in case of maps\r\n destinationModel[srcPropKey] = srcPropVal;\r\n } else {\r\n destinationModel[srcPropKey] = Object.assign({}, srcPropVal);\r\n }\r\n } else {\r\n destinationModel[srcPropKey] = srcPropVal;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\nimport {Marketing} from \"@colijnit/transactionapi/build/model/marketing.bo\";\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\nimport {TransactionKind} from \"@colijnit/transactionapi/build/enum/transaction-kind.enum\";\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\nimport {PrivacySetting} from \"@colijnit/transactionapi/build/model/privacy-setting.bo\";\nimport {RelationPrivacySetting} from \"@colijnit/transactionapi/build/model/relation-privacy-setting.bo\";\nimport {SequenceName} from \"@colijnit/transactionapi/build/enum/sequence-name.enum\";\nimport {DeliveryMethod} from \"@colijnit/transactionapi/build/model/delivery-method.bo\";\nimport {DeliveryOption} from \"@colijnit/transactionapi/build/model/delivery-option.bo\";\nimport {SetTransactionDeliveryOptionsRequest} from \"@colijnit/transactionapi/build/model/set-transaction-delivery-options-request.bo\";\nimport {GetPostalCodeRetrievalOutputParams} from \"@colijnit/transactionapi/build/model/get-postal-code-retrieval-output-params\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\nimport {RelationRequest} from \"@colijnit/transactionapi/build/model/relation-request\";\nimport {TransactionLineType} from \"@colijnit/transactionapi/build/enum/transaction-line-type.enum\";\nimport {ResolvePendingLineReasonRequest} from \"@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo\";\nimport {CoDomainValue} from \"@colijnit/transactionapi/build/model/co-domain-value.bo\";\nimport {TransactionArticleWarehouse} from \"@colijnit/transactionapi/build/model/transaction-article-warehouse.bo\";\nimport {ArticleFullObject} from \"@colijnit/transactionapi/build/model/article-full-object\";\nimport {LineOperationResponse} from \"@colijnit/transactionapi/build/model/line-operation-response.bo\";\nimport {TransactionResponseBase} from \"@colijnit/transactionapi/build/model/transaction-response-base.bo\";\nimport {Transaction} from \"@colijnit/transactionapi/build/transaction\";\nimport {DataServiceResponseData} from \"@colijnit/transactionapi/build/model/data-service-response-data\";\nimport {BusinessObjectFactory} from \"../../factory/business-object-factory\";\nimport {Options} from \"@colijnit/ioneconnector/build/model/options\";\nimport {ImageUtils} from \"@colijnit/transactionapi/build/utils/image-utils\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class IOneConnectorAdapterService {\n public options: any;\n\n public connector: Transaction;\n\n private _boFactory: BusinessObjectFactory = new BusinessObjectFactory();\n private _countryList: Country[] = [];\n\n constructor() {}\n\n public async connect(options: Options): Promise<void> {\n if (this.options === undefined) {\n this.options = options;\n this.connector = new Transaction(options);\n this.options.session = this.connector.session;\n }\n }\n\n public async disconnect(): Promise<void> {\n this.options = undefined;\n }\n\n public async getArticleFullObject(goodId: number): Promise<ArticleFullObject> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getArticleFullObject(goodId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n if (result.resultObject) {\n resolve(this._boFactory.makeWithRawBackendData(ArticleFullObject, result.resultObject));\n }\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getGoodIdFromArticleNr(articleNr: string): Promise<number> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getGoodIdFromArticleNr(articleNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObject);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getSingleImage(nodeId: number | string, publication: number, includeMimetype: boolean, thumb: boolean): Promise<string> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getSingleImage(nodeId, publication, includeMimetype, thumb).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n if (result.resultObject && result.resultObject.filePath !== null && result.resultObject.filePath !== \"\") {\n return resolve(ImageUtils.getFixedImageFilepathUrl(result.resultObject.filePath));\n } else {\n if (result.resultObject) {\n if (includeMimetype) {\n return resolve(ImageUtils.getDocBodyWithMimeTypeDefinition(result.resultObject.fileName,\n thumb ? result.resultObject.thumbnailBody : result.resultObject.documentBody));\n }\n return resolve(thumb ? result.resultObject.thumbnailBody : result.resultObject.documentBody);\n }\n else {\n reject(result.validationMessagesAsString);\n }\n }\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getDocumentContent(id: number, thumbnail: boolean): Promise<string> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getDocumentContent(id, thumbnail).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObject.documentContent);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getCountries(): Promise<Country[]> {\n if (this._countryList.length > 0) {\n return new Promise((resolve: Function) => {\n resolve(this._countryList);\n });\n }\n\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getCountries().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n this._countryList = result.resultObjects;\n resolve(result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getCountry(countryCode: string): Country {\n this.getCountries();\n return this._countryList.find(country => country.code === countryCode);\n }\n\n public getPrivacySettings(): Promise<PrivacySetting[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getPrivacySettings().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<PrivacySetting[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getRelationPrivacySettings(): Promise<RelationPrivacySetting[]> {\n const privacySettings: RelationPrivacySetting[] = [];\n\n const basePrivacySettings: PrivacySetting[] = await this.getPrivacySettings();\n for (let i: number = 0, len: number = basePrivacySettings.length; i < len; i++) {\n const basePrivSetting: PrivacySetting = basePrivacySettings[i];\n const newRelPrivSet: RelationPrivacySetting = <RelationPrivacySetting><unknown>this._boFactory.instantiateNewBo(RelationPrivacySetting);\n newRelPrivSet.applyBasePrivacySettingValues(basePrivSetting);\n privacySettings.push(newRelPrivSet);\n }\n return privacySettings;\n }\n\n public getMarketingCodes(): Promise<Marketing[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getMarketingCodes().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<CoDomainValue[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public createTransaction(kind: TransactionKind, branchNr: string): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.createTransaction(kind, branchNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getTransactionByNrAndKind(kind: TransactionKind, transactionNo: number): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getTransactionByNrAndKind(kind, transactionNo).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getTransactionById(transactionId: number): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getTransactionById(transactionId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public saveTransaction(uuid: string): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.saveTransaction(uuid).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public getCustomerFullObject(relationNo: number): Promise<CustomerFullObject> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getCustomerFullObject(relationNo).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(CustomerFullObject, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getRelationNumber(relationId: number): Promise<string> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getRelationNumber(relationId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObject);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getSequenceValue(sequenceName: SequenceName): Promise<number> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getSequenceValue(sequenceName).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObject);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async insertCustomer(relation: CustomerFullObject): Promise<CustomerFullObject> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.insertCustomer(relation).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(CustomerFullObject, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async updateCustomer(relation: CustomerFullObject): Promise<CustomerFullObject> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.updateCustomer(relation).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(CustomerFullObject, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getDeliveryMethods(): Promise<DeliveryMethod[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getDeliveryMethods().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<DeliveryMethod[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getDeliveryOptions(): Promise<DeliveryOption[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getDeliveryOptions().then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<DeliveryMethod[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async addRelationToTransaction(uuid: string, relationId: number): Promise<boolean> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.addRelationToTransaction(uuid, relationId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.validationResult.success);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async setTransactionDeliveryOptions(transactionDeliveryOptionsRequest: SetTransactionDeliveryOptionsRequest): Promise<TransactionResponseBase> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.setTransactionDeliveryOptions(transactionDeliveryOptionsRequest).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getPostalCodeRetrieval(postcalCode: string, houseNo: string): Promise<GetPostalCodeRetrievalOutputParams> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getPostalCodeRetrieval(postcalCode, houseNo).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n const outputParams: GetPostalCodeRetrievalOutputParams = new GetPostalCodeRetrievalOutputParams();\n outputParams.city = result.resultObject.city;\n outputParams.street = result.resultObject.street;\n outputParams.status = result.resultObject.status;\n outputParams.netNumber = result.resultObject.netNumber;\n resolve(outputParams);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getRelationListObjects(relationRequest: RelationRequest): Promise<RelationListObject[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getRelationListObjects(relationRequest).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeBOArrayFromRawBackendDataArray(RelationListObject, result.resultObjects));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async addTransactionLine(uuid: string, articleLine: TransactionLineType, articleNo: string, amount: number, warehouseNo: number, commissionCode: string, isReturn: boolean, aboveLineNr: number, belowLineNr: number):\n Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.addTransactionLine(uuid, articleLine, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(LineOperationResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async addTextLineToTransaction(uuid: string, showOnDocuments: number, text: string, amount: number, articleBound: boolean, refArticleLineNr: number, aboveLineNr?: number, belowLineNr?: number):\n Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.addTextLineToTransaction(uuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(LineOperationResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async changeLineSequence(uuid: string, lineUuid: string, aboveLineNr?: number, belowLineNr?: number):\n Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.changeLineSequence(uuid, lineUuid, aboveLineNr, belowLineNr).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(LineOperationResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async cancelAddTransactionLine(lineUuid: string): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.cancelAddTransactionLine(lineUuid).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n\n }\n\n public async deleteTransactionLine(uuid: string, lineUuid: string): Promise<TransactionInfoResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.deleteTransactionLine(uuid, lineUuid).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n\n public async changeTransactionLineQuantity(uuid: string, lineUuid: string, newQuantity: number): Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.changeTransactionLineQuantity(uuid, lineUuid, newQuantity).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async resolvePendingLineReason(pendingLineValues: ResolvePendingLineReasonRequest): Promise<LineOperationResponse> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.resolvePendingLineReason(pendingLineValues).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(this._boFactory.makeWithRawBackendData(TransactionInfoResponse, result.resultObject));\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getCommissionCodes(languageCode: string): Promise<CoDomainValue[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getCommissionCodes(languageCode).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<CoDomainValue[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n\n }\n\n public async getInOutCollection(languageCode: string): Promise<CoDomainValue[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getInOutCollection(languageCode).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<CoDomainValue[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async getTransactionArticleWarehouses(goodId: number): Promise<TransactionArticleWarehouse[]> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.getTransactionArticleWarehouses(goodId).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(<TransactionArticleWarehouse[]>result.resultObjects);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n\n public async setRelationByUser(uuid: string, username: string, password: string): Promise<boolean> {\n return new Promise((resolve: Function, reject: Function) => {\n return this.connector.setRelationByUser(uuid, username, password).then((result: DataServiceResponseData) => {\n if (result.validationResult && result.validationResult.success) {\n resolve(result.validationResult.success);\n } else {\n reject(result.validationMessagesAsString);\n }\n });\n });\n }\n}\n","import {EventEmitter, Inject, inject, Injectable, Optional} from \"@angular/core\";\nimport {IOneConnectorAdapterService} from \"./ione-connector-adapter.service\";\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {\n NULL_CUSTOMER_FULL_OBJECT,\n NULL_RELATION_OBJECT\n} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\nimport {TransactionKind} from \"@colijnit/transactionapi/build/enum/transaction-kind.enum\";\nimport {Marketing} from \"@colijnit/transactionapi/build/model/marketing.bo\";\nimport {RelationPrivacySetting} from \"@colijnit/transactionapi/build/model/relation-privacy-setting.bo\";\nimport {SequenceName} from \"@colijnit/transactionapi/build/enum/sequence-name.enum\";\nimport {DeliveryMethod} from \"@colijnit/transactionapi/build/model/delivery-method.bo\";\nimport {DeliveryOption} from \"@colijnit/transactionapi/build/model/delivery-option.bo\";\nimport {ContactOption} from \"@colijnit/transactionapi/build/model/contact-option.bo\";\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\nimport {ArrayUtils} from \"@colijnit/transactionapi/build/utils/array-utils\";\nimport {SetTransactionDeliveryOptionsRequest} from \"@colijnit/transactionapi/build/model/set-transaction-delivery-options-request.bo\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\nimport {RelationRequest} from \"@colijnit/transactionapi/build/model/relation-request\";\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\nimport {TransactionTotal} from \"@colijnit/transactionapi/build/model/transaction-total.bo\";\nimport {ValidationResult} from \"@colijnit/transactionapi/build/model/validation-result\";\nimport {TransactionLineType} from \"@colijnit/transactionapi/build/enum/transaction-line-type.enum\";\nimport {ResolvePendingLineReasonRequest} from \"@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo\";\nimport {CoDomainValue} from \"@colijnit/transactionapi/build/model/co-domain-value.bo\";\nimport {TransactionArticleWarehouse} from \"@colijnit/transactionapi/build/model/transaction-article-warehouse.bo\";\nimport {ArticleFullObject} from \"@colijnit/transactionapi/build/model/article-full-object\";\nimport {LineOperationStatus} from \"@colijnit/transactionapi/build/model/line-operation-status.bo\";\nimport {LineOperationResponse} from \"@colijnit/transactionapi/build/model/line-operation-response.bo\";\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {TransactionResponseBase} from \"@colijnit/transactionapi/build/model/transaction-response-base.bo\";\nimport {PendingReasonType} from \"@colijnit/transactionapi/build/enum/pending-reason-type.enum\";\n\n@Injectable()\nexport class TransactionService {\n public transactionUpdated: EventEmitter<void> = new EventEmitter<void>();\n public transactionLoaded: EventEmitter<TransactionInfoResponse> = new EventEmitter<TransactionInfoResponse>();\n\n public emailAddress: string;\n public applicationUser: boolean = false;\n\n public get currentLines(): TransactionLineInfo[] {\n return this._currentLines;\n }\n\n public set currentLines(value: TransactionLineInfo[]) {\n this._currentLines = value;\n this.articleAmount = ArrayUtils.FindAll(this._currentLines, line => line.isArticle).length;\n }\n\n public set currentTotals(value: TransactionTotal) {\n this._currentTotals = value;\n }\n\n public get currentTotals(): TransactionTotal {\n return this._currentTotals;\n }\n\n public get currentRelation(): RelationAnyType {\n return this._currentRelation;\n }\n\n public get currentTransaction(): TransactionInfo {\n return this._currentTransaction;\n }\n\n public set currentLineOperationStatuses(values: LineOperationStatus[]) {\n this._currentLineOperationStatuses = values;\n }\n\n public get currentLineOperationStatuses(): LineOperationStatus[] {\n return this._currentLineOperationStatuses;\n }\n\n public set currentLineOperationStatus(value: LineOperationStatus) {\n this._currentLineOperationStatus = value;\n }\n\n public get currentLineOperationStatus(): LineOperationStatus | undefined {\n const status: LineOperationStatus = this.currentLineOperationStatuses.find(line => line.pendingReasonType !== PendingReasonType.NONE\n && line.pendingReasonType !== PendingReasonType.NON_CRITICAL_DISCONTINUATION);\n return status;\n }\n\n public articleAmount: number = 0;\n\n private _currentLines: TransactionLineInfo[] = [];\n private _currentTotals: TransactionTotal = new TransactionTotal();\n private _currentRelation: RelationAnyType = NULL_RELATION_OBJECT;\n private _currentTransaction: TransactionInfo = new TransactionInfo();\n private _currentLineOperationStatus: LineOperationStatus = new LineOperationStatus();\n private _currentLineOperationStatuses: LineOperationStatus[] = [];\n\n constructor(\n public _connector: IOneConnectorAdapterService,\n ) {\n this._initializeTransaction();\n }\n\n public async getArticleFullObject(goodId: number): Promise<ArticleFullObject> {\n return await this._connector.getArticleFullObject(goodId);\n }\n\n public async getGoodIdFromArticleNr(sku: string): Promise<number> {\n return await this._connector.getGoodIdFromArticleNr(sku);\n }\n\n public async getRelation(): Promise<RelationAnyType> {\n const relationNo: string = await this._connector.getRelationNumber(this._currentTransaction.relation.relationId);\n\n if (relationNo) {\n this._currentRelation = await this._connector.getCustomerFullObject(Number(relationNo));\n await this.loadCountriesOfRelationAddresses();\n }\n return this._currentRelation;\n }\n\n public async loadCountriesOfRelationAddresses(): Promise<void> {\n for (const address of this.currentRelation.addresses) {\n const country: Country = await this.getCountry(address.countryId);\n address.countryName = country.description;\n }\n }\n\n public async getCountry(countryCode: string): Promise<Country> {\n return await this._connector.getCountry(countryCode);\n }\n\n public async getRelationNumber(relationId: number): Promise<string> {\n return this._connector.getRelationNumber(relationId);\n }\n\n public async saveNewRelation(): Promise<void> {\n this.cleanRelationBeforeSave();\n this._currentRelation = await this._connector.insertCustomer(this._currentRelation);\n await this.addRelationToTransaction(this._currentRelation.relationId);\n }\n\n public async saveRelation(): Promise<void> {\n this.cleanRelationBeforeSave();\n this._currentRelation = await this._connector.updateCustomer(this._currentRelation);\n }\n\n public cleanRelationBeforeSave(): void {\n ArrayUtils.RemoveElementsByFilter(this._currentRelation.contactOptions, ((item: ContactOption) => {\n return isNill(item.value);\n }));\n }\n\n public async getSequenceValue(): Promise<number> {\n return await this._connector.getSequenceValue(SequenceName.RelationId);\n }\n\n public async getRelationPrivacySettings(): Promise<RelationPrivacySetting[]> {\n return await this._connector.getRelationPrivacySettings();\n }\n\n public async createTransaction(): Promise<boolean> {\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n this._connector.createTransaction(TransactionKind.SalesOrder, \"1\").then((response: TransactionInfoResponse) => {\n this._rememberCurrentTransaction(response);\n resolve(true);\n }, (error) => {\n reject(error);\n }).catch((reason: ValidationResult) => {\n reject(false);\n });\n });\n }\n\n public resolvePendingLineReason(pendingLineValues: ResolvePendingLineReasonRequest): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve: Function) => {\n this._connector.resolvePendingLineReason(pendingLineValues).then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n resolve(response);\n }).catch((reason: ValidationResult) => {\n resolve();\n });\n });\n }\n\n public async getTransaction(transactionNo: number): Promise<boolean> {\n return await this.openExistingTransaction(TransactionKind.SalesOrder, transactionNo);\n }\n\n public openExistingTransaction(kind: TransactionKind, transactionNr: number): Promise<boolean> {\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n this._connector.getTransactionByNrAndKind(kind, transactionNr)\n .then(async (response: TransactionInfoResponse) => {\n if (response.isSuccess) {\n this.transactionLoaded.emit(response);\n resolve(true);\n } else {\n reject(false);\n }\n })\n .catch((reason: ValidationResult) => {\n reject(false);\n });\n });\n }\n\n\n public getTransactionById(transactionId: number): Promise<boolean> {\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n this._connector.getTransactionById(transactionId)\n .then(async (response: TransactionInfoResponse) => {\n if (response.isSuccess) {\n this.transactionLoaded.emit(response);\n resolve(true);\n } else {\n reject(false);\n }\n })\n .catch((reason: ValidationResult) => {\n reject(false);\n });\n });\n }\n\n public async saveTransaction(close: boolean = false): Promise<void> {\n const response: TransactionInfoResponse = await this._connector.saveTransaction(this.currentTransaction.uuid);\n if (response.isSuccess) {\n this._rememberCurrentTransaction(response);\n }\n }\n\n public async addRelationToTransaction(relationId: number): Promise<void> {\n const success: boolean = await this._connector.addRelationToTransaction(this._currentTransaction.uuid, relationId);\n if (success) {\n await this.saveTransaction();\n await this.getTransaction(this._currentTransaction.transactionNr);\n }\n }\n\n public async getCommissionCodes(languageCode: string): Promise<CoDomainValue[]> {\n return await this._connector.getCommissionCodes(languageCode);\n }\n\n public async getInOutCollection(languageCode: string): Promise<CoDomainValue[]> {\n return await this._connector.getInOutCollection(languageCode);\n }\n\n public async getTransactionArticleWarehouses(goodId: number): Promise<TransactionArticleWarehouse[]> {\n return this._connector.getTransactionArticleWarehouses(goodId);\n }\n\n public async getMarketingCodes(): Promise<Marketing[]> {\n return await this._connector.getMarketingCodes();\n }\n\n public async insertCustomer(relation: CustomerFullObject): Promise<CustomerFullObject> {\n return await this._connector.insertCustomer(relation);\n }\n\n public async updateCustomer(relation: CustomerFullObject): Promise<CustomerFullObject> {\n return new Promise<CustomerFullObject>((resolve, reject) => {\n this._connector.updateCustomer(relation).then(async( response: CustomerFullObject) => {\n this._currentRelation = relation;\n resolve(response);\n })\n .catch((response: CustomerFullObject) => {\n resolve(response);\n });\n });\n }\n\n public async getDeliveryMethods(): Promise<DeliveryMethod[]> {\n return await this._connector.getDeliveryMethods();\n }\n\n public async getDeliveryOptions(): Promise<DeliveryOption[]> {\n return await this._connector.getDeliveryOptions();\n }\n\n public async setTransactionDeliveryOptions(): Promise<boolean> {\n const transactionDeliveryOptionsRequest: SetTransactionDeliveryOptionsRequest = this._getTransactionDeliveryOptions();\n return new Promise<boolean>((resolve, reject) => {\n this._connector.setTransactionDeliveryOptions(transactionDeliveryOptionsRequest).then(async( response: TransactionResponseBase) => {\n resolve(response.isSuccess);\n }, (error) => {\n reject(error);\n })\n .catch((response: TransactionResponseBase) => {\n resolve(false);\n });\n });\n }\n\n public async getRelationListObjects(relationRequest: RelationRequest): Promise<RelationListObject[]> {\n return await this._connector.getRelationListObjects(relationRequest);\n }\n\n public async retrieveLineImage(line: TransactionLineInfo): Promise<string> {\n return await this.getArticleImageByArticleNumber(line.articleNumber);\n }\n\n public async getArticleImageByArticleNumber(articleNumber: string): Promise<string> {\n const goodId: number = await this._connector.getGoodIdFromArticleNr(articleNumber);\n return this.getArticleImageByGoodId(goodId);\n }\n\n public async getArticleImageByGoodId(goodId: number): Promise<string> {\n if (!isNaN(goodId)) {\n return this._connector.getSingleImage(goodId, 1, true, true);\n } else {\n return \"\";\n }\n }\n\n public async addArticle(articleNo: string, amount: number = 1, warehouseNo: number = 1, commissionCode: string = \"2\", isReturn: boolean = false, aboveLineNr: number = 0, belowLineNr: number = 0): Promise<boolean> {\n return new Promise<boolean>((resolve, reject) => {\n this._connector.addTransactionLine(this._currentTransaction.uuid, TransactionLineType.ArticleLine, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)\n .then(async( response: LineOperationResponse) => {\n resolve(true);\n }, (error) => {\n reject(error);\n })\n .catch((reason: ValidationResult) => {\n resolve(false);\n });\n });\n }\n\n public async addTransactionLine(lineType: TransactionLineType,\n articleNo: string,\n amount: number,\n warehouseNo?: number,\n commissionCode?: string,\n isReturn?: boolean,\n aboveLineNr?: number,\n belowLineNr?: number): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve, reject) => {\n this._connector.addTransactionLine(this.currentTransaction.uuid, lineType, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)\n .then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n resolve(response);\n }, (error) => {\n reject(error);\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async addTextLineToTransaction(\n showOnDocuments: number,\n text: string,\n amount: number,\n articleBound: boolean,\n refArticleLineNr: number,\n aboveLineNr?: number,\n belowLineNr?: number): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve, reject) => {\n this._connector.addTextLineToTransaction(this.currentTransaction.uuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr)\n .then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n resolve(response);\n }, (error) => {\n reject(error);\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public changeLineSequence(\n lineUuid: string,\n aboveLineNr?: number,\n belowLineNr?: number): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve, reject) => {\n this._connector.changeLineSequence(this.currentTransaction.uuid, lineUuid, aboveLineNr, belowLineNr)\n .then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n resolve(response);\n }, (error) => {\n reject(error);\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async cancelAddTransactionLine(lineUuid: string): Promise<TransactionInfoResponse> {\n return new Promise<TransactionInfoResponse>((resolve, reject) => {\n this._connector.cancelAddTransactionLine(lineUuid)\n .then(async (response: TransactionInfoResponse) => {\n this._rememberCurrentTransaction(response);\n if (response.isSuccess) {\n resolve(response);\n } else {\n reject(response);\n }\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async deleteTransactionLine(transactionUuid: string, TransactionLineUuid: string): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve, reject) => {\n this._connector.deleteTransactionLine(transactionUuid, TransactionLineUuid)\n .then(async (response: LineOperationResponse) => {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n if (response.isSuccess) {\n resolve(response);\n } else {\n reject(response);\n }\n })\n .catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async changeTransactionLineQuantity(lineUuid: string, newQuantity: number): Promise<LineOperationResponse> {\n return new Promise<LineOperationResponse>((resolve: Function) => {\n this._connector.changeTransactionLineQuantity(this.currentTransaction.uuid, lineUuid, newQuantity)\n .then(async (response: LineOperationResponse) => {\n if (response.isSuccess) {\n this._rememberCurrentTransaction(response);\n this._rememberCurrentTransactionLineStatus(response);\n }\n resolve(response);\n }).catch((reason: ValidationResult) => {\n resolve(null);\n });\n });\n }\n\n public async setRelationByUser(username: string, password: string): Promise<boolean> {\n return new Promise<boolean>((resolve: Function) => {\n this._connector.setRelationByUser(this.currentTransaction.uuid, username, password)\n .then(async (isSuccess: boolean) => {\n resolve(isSuccess);\n }).catch((reason: ValidationResult) => {\n resolve(false);\n });\n });\n }\n\n public async getCustomerFulObjectByRelationId(relationId: number): Promise<CustomerFullObject> {\n const relationNr: string = await this._connector.getRelationNumber(relationId);\n if (relationNr) {\n return await this._connector.getCustomerFullObject(Number(relationNr));\n }\n return NULL_CUSTOMER_FULL_OBJECT;\n }\n\n // public async setRelationByUser(username: string, password: string): Promise<boolean> {\n // const response: boolean = await this._connector.setRelationByUser(this.currentTransaction.uuid, username, password);\n // return response;\n // }\n\n private _initializeTransaction(): void {\n if (this._currentTransaction.preferredDeliveryDate2 === undefined) {\n this._currentTransaction.preferredDeliveryDate2 = \"=\";\n }\n }\n private async _rememberCurrentTransaction(value: TransactionInfoResponse): Promise<void> {\n this._currentTransaction = value.transactionInfo;\n this._initializeTransaction();\n\n this.currentLines = value.transactionLines;\n this.currentTotals = value.transactionTotal;\n\n this.currentLineOperationStatuses = value.lineOperationStatuses;\n\n await this._updateRelation();\n this.transactionUpdated.emit();\n }\n\n private _rememberCurrentTransactionLineStatus(value: LineOperationResponse): void {\n // this._currentLineOperationStatus.uuid = value.lineUuid;\n // this._currentLineOperationStatus.pendingReason = value.pendingReason;\n // this._currentLineOperationStatus.pendingReasonType = value.pendingReasonType;\n }\n\n private async _updateRelation(): Promise<void> {\n if (this.currentTransaction && this.currentTransaction.relation && this.currentTransaction.relation.relationId) {\n if (!this._currentRelation || this._currentRelation.relationId !== this.currentTransaction.relation.relationId) {\n this._currentRelation = await this.getCustomerFulObjectByRelationId(this.currentTransaction.relation.relationId);\n }\n }\n }\n\n private _getTransactionDeliveryOptions(): SetTransactionDeliveryOptionsRequest {\n const transactionDeliveryOptionsRequest: SetTransactionDeliveryOptionsRequest = new SetTransactionDeliveryOptionsRequest ();\n transactionDeliveryOptionsRequest.allowPartialDelivery = this._currentTransaction.allowPartialDelivery;\n transactionDeliveryOptionsRequest.deliveryDate = this._currentTransaction.deliveryDate;\n transactionDeliveryOptionsRequest.deliveryMethod = this._currentTransaction.deliveryMethod;\n transactionDeliveryOptionsRequest.deliveryOptions = this._currentTransaction.deliveryOptions;\n transactionDeliveryOptionsRequest.marketingCode = this._currentTransaction.marketingCode;\n transactionDeliveryOptionsRequest.ownReference = this._currentTransaction.ownReference;\n transactionDeliveryOptionsRequest.preferredDeliveryDate = this._currentTransaction.preferredDeliveryDate;\n transactionDeliveryOptionsRequest.preferredDeliveryDate2 = this._currentTransaction.preferredDeliveryDate2;\n transactionDeliveryOptionsRequest.relationReference = this._currentTransaction.relationReference;\n transactionDeliveryOptionsRequest.remark = this._currentTransaction.remark;\n transactionDeliveryOptionsRequest.transactionUuid = this._currentTransaction.uuid;\n transactionDeliveryOptionsRequest.transactionAddress = this._currentTransaction.transactionAddress.nawNr;\n transactionDeliveryOptionsRequest.invoiceAddress = this._currentTransaction.invoiceAddress.nawNr;\n return transactionDeliveryOptionsRequest;\n }\n}\n","export enum LanguageCode {\r\n Dutch = \"nl-NL\",\r\n English = \"en-GB\",\r\n German = \"de-DE\",\r\n French = \"fr-FR\",\r\n}\r\n","// Static utility functions holder related to strings.\r\nexport class StringUtils {\r\n\r\n /**\r\n * Returns a new string where given placeholder in given source string are replaced by given replacement texts.\r\n *\r\n * Example usage:\r\n *\r\n * source = \"ABCDABCD\"\r\n * placeholder = \"BC\"\r\n * replacementTexts = \"Z\", \"Z\" (REST arguments)\r\n * OUTPUT = \"AZDAZD\"\r\n *\r\n * @param {string} source\r\n * @param {string} placeholder\r\n * @param {string} replacementTexts If only one is given, this function replaces all placeholders with that single replacementText.\r\n * If more are given, placeholders without a corresponding replacementText will remain their original placeholder characters.\r\n */\r\n public static ReplaceOccurrencesIn(source: string, placeholder: string, ...replacementTexts: string[]): string {\r\n // parameter guards\r\n if (!(source)) {\r\n return undefined;\r\n }\r\n if (!placeholder || replacementTexts.length === 0) {\r\n return source;\r\n }\r\n let outString: string = source;\r\n // one replacementText means replace for all\r\n if (replacementTexts.length === 1) {\r\n // \"g\" is the g flag to replace globally\r\n outString = outString.replace(new RegExp(this._escapeRegExp(placeholder), \"g\"), replacementTexts[0]);\r\n } else {\r\n // replace occurence i by replacementTexts[i], one at a time in loop (there might be a faster way..)\r\n for (let i: number = 0, len: number = replacementTexts.length; i < len; i++) {\r\n outString = outString.replace(placeholder, replacementTexts[i]);\r\n }\r\n }\r\n return outString;\r\n }\r\n\r\n // Returns the given argument as a string. Returns given defaultValue if conversion of argument to string was impossible.\r\n public static ParseString(arg: any, defaultValue: string = \"\"): string {\r\n if (!StringUtils.IsString(arg)) {\r\n if (arg && typeof arg.toString === \"function\") {\r\n arg = arg.toString();\r\n } else {\r\n arg = defaultValue;\r\n }\r\n }\r\n return arg;\r\n }\r\n\r\n public static IsString(str: any): boolean {\r\n return typeof str === 'string';\r\n }\r\n\r\n // Returns whether given str is a string and has a length > 0.\r\n public static IsStringWithLength(str: string): boolean {\r\n return str && StringUtils.IsString(str) && str.length > 0;\r\n }\r\n\r\n // Returns given string, escaped for use as string literal in regular expressions.\r\n private static _escapeRegExp(str: string): string {\r\n return str;// .replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^$\\|]/g, \"\\\\$&\");\r\n }\r\n\r\n}\r\n","export class Dictionary {\r\n public strings: {} = {\r\n \"nl\": {\r\n \"ACCOUNT_DETAILS\": \"Accountgegevens\",\r\n \"ACCOUNT_EXPLANATION\": \"Het e-mailadres en wachtwoord zijn nodig om toegang te krijgen tot de gegevens. \" +\r\n \"Ook zullen we je via dit e-mailadres op de hoogte houden van de status van bestellingen.\",\r\n \"ADD_ARTICLE_LINE_UP\": \"Artikelregel boven toevoegen\",\r\n \"ADD_ARTICLE_LINE_DOWN\": \"Artikelregel onder toevoegen\",\r\n \"ADD_ARTICLE_TEXT_LINE_UP\": \"Tekstregel boven toevoegen\",\r\n \"ADD_ARTICLE_TEXT_LINE_DOWN\": \"Tekstregel onder toevoegen\",\r\n \"ADD_DISCOUNTS\": \"Korting toevoegen\",\r\n \"ADDRESS\": \"Adres\",\r\n \"ADDRESSES\": \"Adressen\",\r\n \"ADDRESS_ADD\": \"Adres toevoegen\",\r\n \"ADDRESS_CHANGE\": \"Adres wijzigen\",\r\n \"ALWAYS_SHOW_LOGISTICS_POPUP\": \"Controleer magazijn en commissiecode\",\r\n \"ARTICLE\": \"Artikel\",\r\n \"ARTICLE_DESCRIPTION\": \"Artikelomschrijving\",\r\n \"ARTICLE_IN_OUT_COLLECTION\": \"Status van artikel is '|~'. Weet u zeker dat u door wilt gaan?\",\r\n \"ARTICLE_NR\": \"Artikelnummer\",\r\n \"ASSEMBLY_COSTS\": \"Montagekosten\",\r\n \"ASSEMBLY_DATE\": \"Montagedatum\",\r\n \"AMOUNT\": \"Aantal\",\r\n \"BACK\": \"Terug\",\r\n \"CANCEL\": \"Annuleren\",\r\n \"CANNOT_CHANGE_NEGATIVE_QUANTITY\": \"Een negatieve voorraad kan niet gewijzigd worden.\",\r\n \"CHARACTERISTIC_QUESTION\": \"Kenmerkvraag\",\r\n \"CHECK_WAREHOUSE_AND_COMMISSIONCODE\": \"Controleer magazijn en commissiecode.\",\r\n \"CITY\": \"Stad\",\r\n \"COMPANY\": \"Bedrijf\",\r\n \"COMPANY_NAME\": \"Bedrijfsnaam\",\r\n \"COMMISSION_CODE\": \"Commisiecode\",\r\n \"CONTINUE\": \"Volgende\",\r\n \"CONTINUE_ORDER_WHILE_STOCK_AVAILABLE_PLEASE_CONFIRM\": \"U heeft gekozen voor het bestellen van artikelen terwijl er nog voorraad aanwezig is. Wilt u verdergaan?\",\r\n \"CONTINUE_WITHOUT_ACCOUNT\": \"Ga door zonder account\",\r\n \"COSTS\": \"Kosten\",\r\n \"COUNTRY\": \"Land\",\r\n \"CREATE_ACCOUNT\": \"Maak een account aan\",\r\n \"CREATE_ACCOUNT_IN_2_MIN\": \"Maak binnen 2 minuten een account aan.\",\r\n \"DATE_OF_BIRTH\": \"Geboortedatum\",\r\n \"DELETE_TRANSACTION_LINE\": \"Transactieregel verwijderen?\",\r\n \"DELETE_TRANSACTION_LINE_HINT\": \"Verwijder transactieregel\",\r\n \"DELETE_TRANSACTION_LINE_FAILED\": \"Het verwijderen van de transactieregel is mislukt\",\r\n \"DELIVERY\": \"Bezorging\",\r\n \"DELIVERY_ADDRESS\": \"Afleveradres\",\r\n \"DELIVERY_ADDRESS_ADD\": \"Bezorgadres toevoegen\",\r\n \"DELIVERY_ADDRESS_CHANGE\": \"Bezorgadres wijzigen\",\r\n \"DELIVERY_COSTS\": \"Bezorgkosten\",\r\n \"DELIVERY_DATE\": \"Leverdatum\",\r\n \"DELIVERY_DATE_FINAL\": \"Definitieve leverdatum\",\r\n \"DELIVERY_DIRECT\": \"Direct leverbaar\",\r\n \"DELIVERY_LOCATION\": \"Bezorgingslocatie\",\r\n \"DELIVERY_OPTIONS\": \"Leveropties\",\r\n \"DELIVERY_METHOD2\": \"Levermethode\",\r\n \"DELIVERY_MOMENT\": \"Levermoment\",\r\n \"DELIVERY_OPTARTICLE_NRIONS\": \"Bezorgopties\",\r\n \"DELIVERY_TIME_PERIOD\": \"Levertijd\",\r\n \"DESCRIPTION\": \"Omschrijving\",\r\n \"DETAILS\": \"Details\",\r\n \"DISCOUNT\": \"Korting\",\r\n \"DISCOUNT_AMOUNT\": \"Kortingsbedrag\",\r\n \"DISCOUNT_PERCENTAGE\": \"Kortings %\",\r\n \"DROPSHIPMENT\": \"Dropshipment\",\r\n \"EMAIL_ADDRESS\": \"E-mailadres\",\r\n \"EXISTING_CUSTOMERS\": \"Bestaande klanten\",\r\n \"EXPECTED_DELIVERY_DATE\": \"Verwachte bezorgdatum\",\r\n \"EXPECTED_DELIVERY_WEEK\": \"Verwachte leverweek\",\r\n \"FEMALE\": \"Vrouw\",\r\n \"FIRST_NAME\": \"Voornaam\",\r\n \"GOOD_DESCRIPTION\": \"Artikelomschrijving\",\r\n \"HOUSE_NO\": \"Huisnummer\",\r\n \"HOUSE_NO_ADDITION\": \"Huisnummer toevoeging\",\r\n \"INVITE_TO_ACCOUNT\": \"Uitnodigen voor account\",\r\n \"INVOICE_ADDRESS\": \"Factuuradres\",\r\n \"INVOICE_ADDRESS_ADD\": \"Factuuradres toevoegen\",\r\n \"INVOICE_ADDRESS_CHANGE\": \"Factuuradres wijzigen\",\r\n \"LAST_NAME\": \"Achternaam\",\r\n \"LINE_NEEDS_COMMISSION_CODE\": \"De commisiecode ontbreekt. Vul de commissiecode in.\",\r\n \"LOGIN\": \"Inloggen\",\r\n \"LOGIN_DETAILS\": \"Inloggegevens\",\r\n \"MALE\": \"Man\",\r\n \"MARKETING\": \"Marketing\",\r\n \"NAME\": \"Naam\",\r\n \"NETT\": \"Netto\",\r\n \"NEW_AT\": \"Nieuw bij \",\r\n \"NEW_LOCATION\": \"Nieuwe locatie\",\r\n \"NO_IMAGE\": \"Afbeelding niet beschikbaar\",\r\n \"NOT_AFTER\": \"Niet later dan\",\r\n \"NOT_BEFORE\": \"Niet eerder dan\",\r\n \"NR\": \"Nummer\",\r\n \"NUMBER\": \"Aantal\",\r\n \"ON_DATE\": \"Op datum\",\r\n \"OPEN_SHOPPING_CART\": \"Open winkelwagen\",\r\n \"ORDER_DATE\": \"Orderdatum\",\r\n \"ORDER_GROSS\": \"Ordertotaal bruto\",\r\n \"ORDER_NET\": \"Ordertotaal netto\",\r\n \"ORDER_NUMBER\": \"Ordernummer\",\r\n \"ORDER_TYPE\": \"Type bestelling\",\r\n \"OVERVIEW\": \"Overzicht\",\r\n \"OWN_REFERENCE\": \"Eigen referentie\",\r\n \"PAID_DOWN2\": \"Aanbetaald\",\r\n \"PART_DELIVERIES\": \"Deelleveringen\",\r\n \"PASSWORD\": \"Wachtwoord\",\r\n \"PAYMENT\": \"Betaling\",\r\n \"PERSONAL_DATA\": \"Persoonlijke gegevens\",\r\n \"PHONE_NO\": \"Telefoonnummer\",\r\n \"POSTAL_CODE\": \"Postcode\",\r\n \"PREFERRED_DATE\": \"Voorkeursdatum\",\r\n \"PREFIX\": \"Tussenvoegsel\",\r\n \"PRICE\": \"Prijs\",\r\n \"PRICE_LIST\": \"Prijslijst\",\r\n \"PRIVACY_PREFERENCES\": \"Privacyvoorkeuren\",\r\n \"PRIVATE_PERSON\": \"Particulier\",\r\n \"PRODUCT\": \"Product\",\r\n \"PRODUCT_TYPE\": \"Productsoort\",\r\n \"QUANTITY_CANNOT_BE_ZERO_OR_EMPTY\": \"Het aantal mag geen 0 zijn.\",\r\n \"QUANTITY_CANNOT_BE_LESS_THAN_DELIVERED\": \"Het aantal moet gelijk zijn aan het geleverde aantal\",\r\n \"QUANTITY_CANNOT_BE_MORE_THAN_DELIVERED\": \"Het aantal moet gelijk zijn aan het geleverde aantal\",\r\n \"QUANTITY_CANNOT_BE_LESS_THAN_INVOICED\": \"Het aantal moet gelijk zijn aan de bestelde voorraad\",\r\n \"QUANTITY_CANNOT_BE_MORE_THAN_INVOICED\": \"Het aantal moet gelijk zijn aan de bestelde voorraad\",\r\n \"QUANTITY_CANNOT_BE_LESS_THAN_ALLOCATED\": \"Het aantal moet gelijk zijn aan dde toegewezen voorraad\",\r\n \"QUANTITY_CANNOT_BE_MORE_THAN_ALLOCATED\": \"Het aantal moet gelijk zijn aan dde toegewezen voorraad\",\r\n \"QUANTITY_CANNOT_BE_LESS_THAN_RECEIVED\": \"Het aantal moet gelijk zijn aan het aantal ontvangen.\",\r\n \"QUANTITY_CANNOT_BE_MORE_THAN_RECEIVED\": \"Het aantal moet gelijk zijn aan het aantal ontvangen\",\r\n \"QUANTUM_DISCOUNT\": \"Kwantumkorting\",\r\n \"REFERENCE_RELATION\": \"Ref. relatie\",\r\n \"REMARKS\": \"Opmerkingen\",\r\n \"SALUTATION\": \"Aanhef\",\r\n \"SAVE\": \"Opslaan\",\r\n \"SELECT\": \"Selecteren\",\r\n \"SERVICE_NUMBER\": \"Servicenummer\",\r\n \"SERVICE_REQUEST_DATE\": \"Datum aanvraag\",\r\n \"SERVICE_STATE\": \"Service status\",\r\n \"SHOPPING_CART\": \"Winkelwagen\",\r\n \"SHOPPING_CART_CHECKOUT\": \"Bestellen\",\r\n \"SHOPPING_CART_OVERVIEW\": \"Overzicht van uw bestelling\",\r\n \"SHOPPING_CART_RESUME\": \"Verder winkelen\",\r\n \"SPECIAL_DISCOUNT\": \"Speciale korting\",\r\n \"STOCK\": \"Voorraad\",\r\n \"STOCK_NOTIFICATION\": \"Voorraadmelding\",\r\n \"STOCK_AVAILABLE_CHANGE_WAREHOUSE_OR_COMMISSIONCODE\": \"Er is voldoende voorraad. Verander magazijn en/of commissiecode\",\r\n \"SUBTOTAL\": \"Subtotaal\",\r\n \"SUGGESTIONS\": \"Suggesties\",\r\n \"SURCHARGE_AMOUNT\": \"Toeslag\",\r\n \"STATE\": \"Status\",\r\n \"STREET\": \"Straatnaam\",\r\n \"TOTAL_AMOUNT\": \"Totaalbedrag\",\r\n \"TOTAL_GROSS\": \"Totaal bruto\",\r\n \"TOTAL_ASSEMBLY_TIME\": \"Totale montagetijd\",\r\n \"TRANSACTION_DISCOUNT\": \"Totale transactie korting\",\r\n \"TRANSACTION_DISCOUNT_PERC\": \"% Trans. korting\",\r\n \"TRANSACTION_PRICE_DECLARATION\": \"Order prijsverklaring\",\r\n \"TRANSACTION_SUM_I\": \"Ordertotaal incl. BTW\",\r\n \"TRANSACTION_TOTAL\": \"Transactie totaal\",\r\n \"UNKNOWN\": \"Onbekend\",\r\n \"UNKNOWN_ADDRESS_CHECK_IT\": \"Onbekend adres\",\r\n \"VAT\": \"Btw\",\r\n \"VAT_AMOUNT\": \"BTW-bedrag\",\r\n \"VALUE\": \"Waarde\",\r\n \"WAREHOUSE\": \"Magazijn\",\r\n \"YOUR_DATA\": \"Uw gegevens\",\r\n },\r\n \"de\": {},\r\n \"fr\": {},\r\n \"en\": {\r\n \"ACCOUNT_DETAILS\": \"Account details\",\r\n \"ACCOUNT_EXPLANATION\": \"E-mailaddress and password are needed to gain access to the data. We also notify you on this e-mailaddress about the order status\",\r\n \"ADD_ARTICLE_LINE_UP\": \"Add article line up\",\r\n \"ADD_ARTICLE_LINE_DOWN\": \"Add article line down\",\r\n \"ADD_ARTICLE_TEXT_LINE_UP\": \"Add text line up\",\r\n \"ADD_ARTICLE_TEXT_LINE_DOWN\": \"Add text line down\",\r\n \"ADD_DISCOUNTS\": \"Add discount\",\r\n \"ADDRESS\": \"Address\",\r\n \"ADDRESSES\": \"Addresses\",\r\n \"ADDRESS_ADD\": \"Add address\",\r\n \"ADDRESS_CHANGE\": \"Change address\",\r\n \"ALWAYS_SHOW_LOGISTICS_POPUP\": \"Check warehouse and commissioncode\",\r\n \"ARTICLE\": \"Article\",\r\n \"ARTICLE_DESCRIPTION\": \"Article description\",\r\n \"ARTICLE_IN_OUT_COLLECTION\": \"Status of article is '|~'. Are you sure to proceed?\",\r\n \"ARTICLE_NR\": \"Article number\",\r\n \"ASSEMBLY_COSTS\": \"Assembly costs\",\r\n \"ASSEMBLY_DATE\": \"Assembly date\",\r\n \"AMOUNT\": \"Amount\",\r\n \"BACK\": \"Back\",\r\n \"CANCEL\": \"Cancel\",\r\n \"CANNOT_CHANGE_NEGATIVE_QUANTITY\": \"A negative supply cannot be changed.\",\r\n \"CHARACTERISTIC_QUESTION\": \"Characteristic question\",\r\n \"CHECK_WAREHOUSE_AND_COMMISSIONCODE\": \"Check warehouse and commissioncode\",\r\n \"CITY\": \"City\",\r\n \"COMPANY\": \"Company\",\r\n \"COMPANY_NAME\": \"Company name\",\r\n \"COMMISSION_CODE\": \"Commission code\",\r\n \"CONTINUE\": \"Next\",\r\n \"CONTINUE_ORDER_WHILE_STOCK_AVAILABLE_PLEASE_CONFIRM\": \"You have chosen to order articles while stock is still available. Do you wish to proceed?\",\r\n \"CONTINUE_WITHOUT_ACCOUNT\": \"Continue without an account\",\r\n \"COSTS\": \"Costs\",\r\n \"COUNTRY\": \"Country\",\r\n \"CREATE_ACCOUNT\": \"Create an account\",\r\n \"CREATE_ACCOUNT_IN_2_MIN\": \"Create an account in 2 minutes.\",\r\n \"DATE_OF_BIRTH\": \"Date of birth\",\r\n \"DELETE_TRANSACTION_LINE\": \"Delete transaction line verwijderen?\",\r\n \"DELETE_TRANSACTION_LINE_HINT\": \"Delete transaction line\",\r\n \"DELETE_TRANSACTION_LINE_FAILED\": \"Deletion of transaction line has failed\",\r\n \"DELIVERY\": \"Delivery\",\r\n \"DELIVERY_ADDRESS\": \"Delivery address\",\r\n \"DELIVERY_ADDRESS_ADD\": \"Add delivery address\",\r\n \"DELIVERY_ADDRESS_CHANGE\": \"Change delivery address\",\r\n \"DELIVERY_COSTS\": \"Delivery costs\",\r\n \"DELIVERY_DATE\": \"Delivery date\",\r\n \"DELIVERY_DATE_FINAL\": \"Final delivery date\",\r\n \"DELIVERY_DIRECT\": \"Direct delivery\",\r\n \"DELIVERY_LOCATION\": \"Delivery location\",\r\n \"DELIVERY_OPTIONS\": \"Delivery options\",\r\n \"DELIVERY_METHOD2\": \"Delivery method\",\r\n \"DELIVERY_MOMENT\": \"Delivery moment\",\r\n \"DELIVERY_OPTARTICLE_NRIONS\": \"Delivery options\",\r\n \"DELIVERY_TIME_PERIOD\": \"Delivery time period\",\r\n \"DESCRIPTION\": \"Description\",\r\n \"DETAILS\": \"Details\",\r\n \"DISCOUNT\": \"Discount\",\r\n \"DISCOUNT_AMOUNT\": \"Discount amount\",\r\n \"DISCOUNT_PERCENTAGE\": \"Discount %\",\r\n \"DROPSHIPMENT\": \"Dropshipment\",\r\n \"EMAIL_ADDRESS\": \"E-mailadres\",\r\n \"EXISTING_CUSTOMERS\": \"Existing customers\",\r\n \"EXPECTED_DELIVERY_DATE\": \"Expected delivery date\",\r\n \"EXPECTED_DELIVERY_WEEK\": \"Expected delivery week\",\r\n \"FEMALE\": \"Female\",\r\n \"FIRST_NAME\": \"First name\",\r\n \"GOOD_DESCRIPTION\": \"Article description\",\r\n \"HOUSE_NO\": \"Housenumber\",\r\n \"HOUSE_NO_ADDITION\": \"Housenumber addition\",\r\n \"INVITE_TO_ACCOUNT\": \"Invite account\",\r\n \"INVOICE_ADDRESS\": \"Invoice address\",\r\n \"INVOICE_ADDRESS_ADD\": \"Add invoice address\",\r\n \"INVOICE_ADDRESS_CHANGE\": \"Change invoice address\",\r\n \"LAST_NAME\": \"Last name\",\r\n \"LINE_NEEDS_COMMISSION_CODE\": \"Line needs a commission code\",\r\n \"LOGIN\": \"Login\",\r\n \"LOGIN_DETAILS\": \"Login details\",\r\n \"MALE\": \"Male\",\r\n \"MARKETING\": \"Marketing\",\r\n \"NAME\": \"Name\",\r\n \"NETT\": \"Net\",\r\n \"NEW_AT\": \"New at \",\r\n \"NEW_LOCATION\": \"New location\",\r\n \"NO_IMAGE\": \"No image available\",\r\n \"NOT_AFTER\": \"Not after\",\r\n \"NOT_BEFORE\": \"Not before\",\r\n \"NR\": \"Number\",\r\n \"NUMBER\": \"Amount\",\r\n \"ON_DATE\": \"On date\",\r\n \"OPEN_SHOPPING_CART\": \"Open shopping cart\",\r\n \"ORDER_DATE\": \"Order date\",\r\n \"ORDER_GROSS\": \"Total gross amount\",\r\n \"ORDER_NET\": \"Total net amount\",\r\n \"ORDER_NUMBER\": \"Order number\",\r\n \"ORDER_TYPE\": \"Order type\",\r\n \"OVERVIEW\": \"Overview\",\r\n \"OWN_REFERENCE\": \"Own reference\",\r\n \"PAID_DOWN2\": \"Prepaid\",\r\n \"PART_DELIVERIES\": \"Partial deliveries\",\r\n \"PASSWORD\": \"Password\",\r\n \"PAYMENT\": \"Payment\",\r\n \"PERSONAL_DATA\": \"Personal data\",\r\n \"PHONE_NO\": \"Telephone number\",\r\n \"POSTAL_CODE\": \"postal code\",\r\n \"PREFERRED_DATE\": \"Preferred date\",\r\n \"PREFIX\": \"Prefix\",\r\n \"PRICE\": \"Price\",\r\n \"PRICE_LIST\": \"Pricelist\",\r\n \"PRIVACY_PREFERENCES\": \"Privacy preferences\",\r\n \"PRIVATE_PERSON\": \"Private\",\r\n \"PRODUCT\": \"Product\",\r\n \"PRODUCT_TYPE\": \"Product type\",\r\n \"QUANTITY_CANNOT_BE_ZERO_OR_EMPTY\": \"Quantity cannot be zero or empty\",\r\n \"QUANTUM_DISCOUNT\": \"Quantum discount\",\r\n \"REFERENCE_RELATION\": \"Ref. relation\",\r\n \"REMARKS\": \"Remarks\",\r\n \"SALUTATION\": \"Salutation\",\r\n \"SAVE\": \"Save\",\r\n \"SELECT\": \"Select\",\r\n \"SERVICE_NUMBER\": \"Service number\",\r\n \"SERVICE_REQUEST_DATE\": \"Service request data\",\r\n \"SERVICE_STATE\": \"Service state\",\r\n \"SHOPPING_CART\": \"Shopping cart\",\r\n \"SHOPPING_CART_CHECKOUT\": \"Checkout\",\r\n \"SHOPPING_CART_OVERVIEW\": \"Order overview\",\r\n \"SHOPPING_CART_RESUME\": \"Resume shopping\",\r\n \"SPECIAL_DISCOUNT\": \"Special discount\",\r\n \"STOCK\": \"Stock\",\r\n \"STOCK_NOTIFICATION\": \"Stock notification\",\r\n \"STOCK_AVAILABLE_CHANGE_WAREHOUSE_OR_COMMISSIONCODE\": \"Not enough supply. Change warehouse and/or commissioncode\",\r\n \"SUBTOTAL\": \"Subtotal\",\r\n \"SUGGESTIONS\": \"Suggestions\",\r\n \"SURCHARGE_AMOUNT\": \"Surcharge\",\r\n \"STATE\": \"STATUS\",\r\n \"STREET\": \"Streetname\",\r\n \"TOTAL_AMOUNT\": \"Total amount\",\r\n \"TOTAL_GROSS\": \"Gross total\",\r\n \"TOTAL_ASSEMBLY_TIME\": \"Total assembly time\",\r\n \"TRANSACTION_DISCOUNT\": \"Total transaction discount\",\r\n \"TRANSACTION_DISCOUNT_PERC\": \"% Trans. discount\",\r\n \"TRANSACTION_PRICE_DECLARATION\": \"Transaction price declaration\",\r\n \"TRANSACTION_SUM_I\": \"Ordertotal incl VAT\",\r\n \"TRANSACTION_TOTAL\": \"Transaction total\",\r\n \"UNKNOWN\": \"unknown\",\r\n \"UNKNOWN_ADDRESS_CHECK_IT\": \"Unknown address\",\r\n \"VALUE\": \"Value\",\r\n \"VAT\": \"VAT\",\r\n \"VAT_AMOUNT\": \"VAT amount\",\r\n \"WAREHOUSE\": \"Warehouse\",\r\n \"YOUR_DATA\": \"Your data\",\r\n },\r\n };\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { LanguageCode } from \"../enum/language-code.enum\";\r\nimport { StringUtils } from \"../utils/string-utils\";\r\nimport { Dictionary } from \"../../assets/dictionary/text.properties\";\r\n\r\n// The localization service, providing peers with text translation functionality.\r\n@Injectable()\r\nexport class DictionaryService {\r\n private readonly dictionaryUrl: string = \"js/browser/res/dictionary/\";\r\n\r\n public get language(): string {\r\n return this._language;\r\n }\r\n\r\n public set rootUrl(value: string) {\r\n this._rootUrl = value;\r\n this._dictBasePath = this._rootUrl + \"/\" + this.dictionaryUrl;\r\n }\r\n\r\n // public dictionaryLoaded: Subject<void> = new Subject();\r\n\r\n private _dictBasePath: string;\r\n private _rootUrl: string;\r\n // private _dictionaryPromise: Map<LanguageCode, Promise<{ [key: string]: string }>> = new Map<LanguageCode, Promise<{ [key: string]: string }>>();\r\n private _dictionaries: Map<string, { [key: string]: string }> = new Map<string, { [key: string]: string }>();\r\n private _language: string;\r\n\r\n // Some dictionary values have one or more '|~' texts in them, meant to be replaced with client-side given texts.\r\n private readonly _placeholder: string = \"|~\";\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n // Loads the dictionary for given language in memory.\r\n public async setDictionary(language: string): Promise<void> {\r\n this._language = language || LanguageCode.Dutch;\r\n if (!this._dictionaries.has(this._language)) {\r\n const dictionary: Dictionary = new Dictionary();\r\n // eslint-disable-next-line no-magic-numbers\r\n if (dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {\r\n // eslint-disable-next-line no-magic-numbers\r\n this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the localized text for the given dictionary key.\r\n * @param {string} key\r\n * @param {boolean} [upperCaseFirst = true] False for first letter lowercase, true for first letter uppercase for returned dict val\r\n * @param {string[]} replacementTexts Rest params for replacement of '|~' in returned dict value\r\n * @returns {string} The translated text for given dictionary key\r\n */\r\n public get(key: string, upperCaseFirst: boolean = true, ...replacementTexts: string[]): string {\r\n if (!StringUtils.IsStringWithLength(key)) {\r\n return key || \"\";\r\n }\r\n\r\n let text: string = this._dictionaries.get(this.language)[key];\r\n text = StringUtils.IsStringWithLength(text) ? text : key;\r\n\r\n if (upperCaseFirst) {\r\n text = text.charAt(0).toUpperCase() + text.slice(1);\r\n } else {\r\n text = text.charAt(0).toLowerCase() + text.slice(1);\r\n }\r\n\r\n if (replacementTexts.length > 0) {\r\n text = StringUtils.ReplaceOccurrencesIn(text, this._placeholder, ...replacementTexts);\r\n }\r\n\r\n return text;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\nimport {Subject} from \"rxjs\";\nimport {BusinessObject} from \"@colijnit/transactionapi/build/model/business-object\";\nimport {PositionGridRow} from \"../../enum/position-grid-row.enum\";\nimport {Scroll} from \"@angular/router\";\n\n@Injectable({providedIn: \"root\"})\nexport class TransactionEventService {\n public readonly addToCartBySku: Subject<{sku: string, amount: number, popCart: boolean}> = new Subject<{sku: string, amount: number, popCart: boolean}>();\n public readonly addToCartBySelectorResult: Subject<{selectorResult: {goodId: number, baseGoodId: number, selectorData: any, quantity: number}, popCart: boolean}> =\n new Subject<{selectorResult: {goodId: number, baseGoodId: number, selectorData: any, quantity: number}, popCart: boolean}>();\n public readonly openShoppingCartModule: Subject<void> = new Subject<void>();\n public readonly loggedIn: Subject<void> = new Subject<void>();\n public readonly addNewUserToShoppingCartModule: Subject<string> = new Subject<string>();\n public readonly addUserRelationShoppingCartModule: Subject<{user: string, pw: string}> = new Subject<{user: string, pw: string}>();\n public readonly addArticleLine: Subject<{lineNr: number, beforeOrAfter: PositionGridRow}> = new Subject<{lineNr: number, beforeOrAfter: PositionGridRow}>();\n public readonly addTextLine: Subject<{lineNr: number, beforeOrAfter: PositionGridRow}> = new Subject<{lineNr: number, beforeOrAfter: PositionGridRow}>();\n public readonly addArticleLineAt: Subject<{sku: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow}> = new Subject<{sku: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow}>();\n public readonly addTextLineAt: Subject<{text: string, lineNr: number, beforeOrAfter: PositionGridRow}> = new Subject<{text: string, lineNr: number, beforeOrAfter: PositionGridRow}>();\n public readonly changeLineSequence: Subject<({fromIndex: number, toIndex: number})> = new Subject<{fromIndex: number, toIndex: number}>();\n public readonly transactionLineClicked: Subject<BusinessObject> = new Subject<BusinessObject>();\n public readonly rightSidebarClose: Subject<void> = new Subject<void>();\n public readonly scrollContent: Subject<Scroll> = new Subject<Scroll>();\n}\n","export enum CheckoutSteps {\r\n Overview,\r\n // Login,\r\n Relation = 1,\r\n Delivery = 2,\r\n Payment = 3,\r\n Printing = 4\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from \"@angular/core\";\n\n@Component({\n selector: \"checkout-overview-block\",\n template: `\n <div class=\"overview-wrapper\" fxLayout=\"column\" fxLayoutGap=\"0px\">\n <div class=\"overview-header\" fxLayout=\"row\">\n </div>\n <div class=\"overview-body\" fxLayout=\"row\" fxLayoutGap=\"20px\">\n <ng-content select=\"[edit-mode-content]\"></ng-content>\n </div>\n </div>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\"\n ]\n})\nexport class CheckoutOverviewBlockComponent implements OnInit {\n @Input()\n public sequenceNr: number = 1;\n\n @Input()\n public label: string;\n\n @Input()\n public startInEdit: boolean = false;\n\n public editMode: boolean = false;\n\n @Output()\n public editModeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor() {\n }\n\n ngOnInit(): void {\n if (this.startInEdit) {\n this.editMode = true;\n }\n }\n\n public startEdit(): void {\n this.editMode = true;\n this.editModeChange.emit(this.editMode);\n }\n\n public stopEdit(emitChange: boolean = true): void {\n this.editMode = false;\n if (emitChange) {\n this.editModeChange.emit(this.editMode);\n }\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {NULL_RELATION_OBJECT} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\nimport {CommunicationType} from \"@colijnit/transactionapi/build/enum/communication-type.enum\";\nimport {ContactOption} from \"@colijnit/transactionapi/build/model/contact-option.bo\";\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\nimport {RelationNameKind} from \"@colijnit/transactionapi/build/enum/relation-name-kind.enum\";\nimport {AddressType} from \"@colijnit/transactionapi/build/enum/address-type.enum\";\nimport {RelationPrivacySetting} from \"@colijnit/transactionapi/build/model/relation-privacy-setting.bo\";\nimport {GenderType} from \"@colijnit/transactionapi/build/enum/gender-type.enum\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {BusinessObjectUtils} from \"@colijnit/transactionapi/build/utils/business-object-utils\";\nimport {FormComponent} from \"@colijnit/corecomponents_v12\";\nimport {FunctionUtils} from \"@colijnit/transactionapi/build/utils/function-utils\";\nimport {ObjectUtils} from \"@colijnit/transactionapi/build/utils/object-utils\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\nimport {RelationRequest} from \"@colijnit/transactionapi/build/model/relation-request\";\nimport {CoSidebarComponent} from \"@colijnit/corecomponents_v12\";\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\n\n@Component({\n selector: \"checkout-overview-relation-edit\",\n template: `\n <co-form (validSubmit)=\"validSubmit.emit()\" (invalidSubmit)=\"invalidSubmit.emit()\">\n <div>\n <label [textContent]=\"'ACCOUNT_DETAILS' | localize\"\n class=\"checkout-label-h2\"\n ></label>\n </div>\n <div>\n <label [textContent]=\"'PERSONAL_DATA' | localize\"\n class=\"checkout-label-h3\"\n ></label>7\n </div>\n <div>\n <div>\n <label [textContent]=\"'ORDER_TYPE' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n <div>\n <co-input-radio-button [name]=\"'type'\"\n [label]=\"'PRIVATE_PERSON' | localize\"\n [value]=\"relType.Private\"\n [checked]=\"relation.type === relType.Private\"\n (modelChange)=\"changeRelationType(relType.Private)\"\n ></co-input-radio-button>\n <co-input-radio-button [name]=\"'type'\"\n [label]=\"'COMPANY' | localize\"\n [value]=\"relType.Company\"\n [(model)]=\"relation.type\"\n [checked]=\"relation.type === relType.Company\"\n (modelChange)=\"changeRelationType(relType.Company)\"\n ></co-input-radio-button>\n </div>\n </div>\n <div *ngIf=\"relation.type === relType.Private\">\n <label [textContent]=\"'SALUTATION' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div>\n <co-input-radio-button [name]=\"'gender'\"\n [label]=\"'MALE' | localize\"\n [value]=\"genderType.Male\"\n [checked]=\"relation.gender === genderType.Male\"\n (modelChange)=\"changeGenderType(genderType.Male)\"\n ></co-input-radio-button>\n <co-input-radio-button [name]=\"'gender'\"\n [label]=\"'FEMALE' | localize \"\n [value]=\"genderType.Female\"\n [checked]=\"relation.gender === genderType.Female\"\n (modelChange)=\"changeGenderType(genderType.Female)\"\n ></co-input-radio-button>\n <co-input-radio-button [name]=\"'gender'\"\n [label]=\"'UNKNOWN' | localize\"\n [value]=\"genderType.Unspecified\"\n [checked]=\"relation.gender === genderType.Unspecified\"\n (modelChange)=\"changeGenderType(genderType.Unspecified)\"\n ></co-input-radio-button>\n </div>\n </div>\n <div *ngIf=\"relation.type === relType.Private\">\n <div>\n <label [textContent]=\"'NAME' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text\n [(model)]=\"relation.firstName\"\n [placeholder]=\"'FIRST_NAME' | localize \"\n (modelChange)=\"firstNameChange($event)\"\n required\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text\n [(model)]=\"relation.prefix\"\n [placeholder]=\"'PREFIX' | localize \"\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text\n [(model)]=\"relation.familyName\"\n [placeholder]=\"'LAST_NAME' | localize\"\n (modelChange)=\"familyNameChange($event)\"\n required></co-input-text>\n </div>\n </div>\n </div>\n </div>\n <div >\n <div *ngIf=\"relation?.type === relType.Company\" class=\"default-flex-column\">\n <label [textContent]=\"'COMPANY_NAME' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n <co-input-text [(model)]=\"relation.familyName\" [label]=\"'COMPANY_NAME'\" required></co-input-text>\n </div>\n </div>\n\n <div>\n <checkout-overview-relation-address\n label=\"DELIVERY_ADDRESS\" [address]=\"editFirstAddress\"\n ></checkout-overview-relation-address>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'DATE_OF_BIRTH' | localize \" [(model)]=\"dateOfBirth\" required></co-input-date>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"phoneNumber.value\" [placeholder]=\"'PHONE_NO' | localize \" required></co-input-text>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'LOGIN_DETAILS' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n <div>\n <p>{{ 'ACCOUNT_EXPLANATION' | localize }}</p>\n </div>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"emailAddress.value\" [placeholder]=\"'EMAIL_ADDRESS' | localize \" [type]=\"'email'\" required></co-input-text>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div *ngIf=\"!applicationUser\" class=\"default-flex-column\">\n <co-input-text [(model)]=\"accountPassword\" [placeholder]=\"'PASSWORD' | localize \" [type]=\"'password'\" required></co-input-text>\n </div>\n <div *ngIf=\"applicationUser\" class=\"default-flex-column\">\n <co-input-checkbox [label]=\"'INVITE_TO_ACCOUNT' | localize\" [(model)]=\"inviteToAccount\"></co-input-checkbox>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'PRIVACY_PREFERENCES' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div *ngFor=\"let privacySetting of privacySettings\">\n <div class=\"privacy-row\">\n <div class=\"privacy-column-left\">\n <co-input-checkbox [label]=\"privacySetting.description\"\n [model]=\"isShared(privacySetting)\"\n (modelChange)=\"changePrivacySetting(privacySetting, $event)\"\n ></co-input-checkbox>\n </div>\n <div class=\"privacy-column-right\">\n {{ privacySetting.explanation }}\n </div>\n </div>\n </div>\n </co-form>\n\n <co-sidebar #relationSidebar isOpen=\"false\" *ngIf=\"showRelationSidebar\">\n <div class=\"relation-sidebar-header\">\n <label [textContent]=\"'SUGGESTIONS' | localize \"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n <checkout-relation-suggestions-list\n [suggestions]=\"relationSuggestions\"\n (suggestionButtonClick)=\"onRelationSuggestionClick($event)\"\n ></checkout-relation-suggestions-list>\n </co-sidebar>\n\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\",\n \"./checkout-overview-relation-edit.component.scss\"\n ]\n})\nexport class CheckoutOverviewRelationEditComponent implements OnInit, AfterViewInit {\n @ViewChild(FormComponent, {static: true})\n public relationForm: FormComponent;\n\n @ViewChild(CoSidebarComponent, {static: false})\n public relationSidebar: CoSidebarComponent;\n\n @Input()\n public set relation(value: RelationAnyType) {\n this._relation = value;\n\n this.preparePrimaryEmail();\n this.preparePrimaryPhone();\n }\n\n @Input()\n public transaction: TransactionInfo;\n\n @Output()\n public validSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public invalidSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n public testje: boolean = false;\n public dateOfBirth: Date = new Date();\n public accountPassword: string = \"\";\n public hide: boolean = true;\n public gender: GenderType = GenderType.Unspecified;\n public emailAddress: ContactOption = new ContactOption();\n public phoneNumber: ContactOption = new ContactOption();\n public privacySettings: RelationPrivacySetting[];\n public relationSuggestions: RelationListObject[] = [];\n public showRelationSidebar: boolean = false;\n public inviteToAccount: boolean = false;\n\n public readonly relType: typeof RelationNameKind = RelationNameKind;\n public readonly genderType: typeof GenderType = GenderType;\n\n public get relation(): RelationAnyType {\n return this._relation;\n }\n\n public get relationAsCustomer(): CustomerFullObject {\n return this._relation && this._relation as CustomerFullObject;\n }\n\n public get editFirstAddress(): Address {\n if (this.firstAddress) {\n return this.firstAddress;\n } else if (this._relation) {\n const address: Address = new Address();\n address.addressType = AddressType.DeliveryAddress;\n address.startDate = new Date();\n address.sequence = this._relation.getNextAddressSequence();\n this._relation.addresses.push(address);\n return address;\n }\n }\n\n public get firstAddress(): Address {\n if (!this.relation || !this._relation.addresses.length) {\n return;\n }\n\n return this._relation.getFirstAvailableAddress([\n AddressType.DeliveryAddress,\n AddressType.BillingAddress,\n AddressType.VisitingAddress,\n AddressType.MailingAddress,\n AddressType.NursingAddress\n ]);\n }\n\n public get applicationUser(): boolean {\n return this._transactionService.applicationUser;\n }\n\n async ngOnInit(): Promise<void> {\n this._relation.type = this.relType.Private;\n this._relation.gender = this.gender;\n await this.loadPrivacySettings();\n this._changeDetector.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this._changeDetector.detectChanges();\n }\n\n private _relation: RelationAnyType = NULL_RELATION_OBJECT;\n\n constructor(\n private _changeDetector: ChangeDetectorRef,\n private _transactionService: TransactionService,\n ) {\n }\n\n public submit(): boolean {\n return this.relationForm.submit();\n }\n\n public preparePrimaryEmail(): void {\n if (this._relation) {\n this.emailAddress = this._relation.getLowestSequenceOfContactOptionsWithType(CommunicationType.Email);\n if (isNill(this.emailAddress)) {\n this.emailAddress = new ContactOption();\n this.emailAddress.type = CommunicationType.Email;\n this.emailAddress.sequence = 0;\n this._relation.addContactOption(this.emailAddress);\n }\n if (this._transactionService.emailAddress) {\n this.emailAddress.value = this._transactionService.emailAddress;\n }\n }\n }\n\n public preparePrimaryPhone(): void {\n if (this._relation) {\n this.phoneNumber = this._relation.getLowestSequenceOfContactOptionsWithType(CommunicationType.Telephone);\n if (isNill(this.phoneNumber)) {\n this.phoneNumber = new ContactOption();\n this.phoneNumber.type = CommunicationType.Telephone;\n this.phoneNumber.sequence = 0;\n this._relation.addContactOption(this.phoneNumber);\n }\n }\n }\n\n public async loadPrivacySettings(): Promise<void> {\n this.privacySettings = await this._transactionService.getRelationPrivacySettings();\n }\n\n public async loadMarketing(): Promise<void> {\n await this._transactionService.getMarketingCodes();\n }\n\n public isShared(relationPrivacySetting: RelationPrivacySetting): boolean {\n const ownSetting: RelationPrivacySetting = BusinessObjectUtils.FindItemById(this.relationAsCustomer.relationPrivacySettings, relationPrivacySetting.getId());\n if (ownSetting) {\n return ownSetting.allowToShare;\n }\n return false;\n }\n\n public changeRelationType(value: RelationNameKind): void {\n this.relation.type = value;\n }\n\n public changeGenderType(value: GenderType): void {\n this.relation.gender = value;\n }\n\n public firstNameChange(firstName: string): void {\n if (this._relation) {\n this._relation.firstName = firstName;\n }\n this._relationNameChangeHandler.call(this);\n }\n\n public familyNameChange(familyName: string): void {\n if (this._relation) {\n this._relation.familyName = familyName;\n }\n this._relationNameChangeHandler.call(this);\n }\n\n public async onRelationSuggestionClick(relationSuggested: RelationListObject): Promise<void> {\n if (relationSuggested) {\n this.hideSidebar();\n await this._transactionService.addRelationToTransaction(relationSuggested.relationId);\n }\n }\n\n public changePrivacySetting(relationPrivacySetting: RelationPrivacySetting, value: boolean): void {\n const ownSetting: RelationPrivacySetting = BusinessObjectUtils.FindItemById(this.relationAsCustomer.relationPrivacySettings, relationPrivacySetting.getId());\n if (ownSetting) {\n ownSetting.allowToShare = value;\n } else {\n this.relationAsCustomer.relationPrivacySettings.push(relationPrivacySetting);\n }\n }\n\n public showSidebar(): void {\n this.showRelationSidebar = true;\n this._changeDetector.detectChanges();\n\n if (this.relationSidebar) {\n this.relationSidebar.show();\n }\n }\n\n public hideSidebar(): void {\n this.showRelationSidebar = false;\n this._changeDetector.detectChanges();\n\n if (this.relationSidebar) {\n this.relationSidebar.hide();\n }\n }\n\n // fetches relation suggestions\n private _relationNameChangeHandler: Function = FunctionUtils.Throttle(() => {\n return this._relationNameChangedHandlerFn();\n // eslint-disable-next-line no-magic-numbers\n }, 600);\n\n // load suggestions\n private async _relationNameChangedHandlerFn(): Promise<any> {\n const firstName: string = ObjectUtils.ValueOrDefault(this._relation.firstName);\n const secondName: string = ObjectUtils.ValueOrDefault(this._relation.familyName);\n\n if (!firstName && !secondName) {\n this.relationSuggestions = [];\n return;\n }\n\n const relationRequest: RelationRequest = {};\n relationRequest.relationType = this._relation.relationType;\n if (firstName) {\n relationRequest.firstName = firstName;\n }\n\n if (secondName) {\n relationRequest.familyName = secondName;\n }\n\n this.showSidebar();\n this.relationSuggestions = await this._transactionService.getRelationListObjects(relationRequest);\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {CoDialogComponent, CoGridComponent, FormComponent} from \"@colijnit/corecomponents_v12\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\nimport {GenderType} from \"@colijnit/transactionapi/build/enum/gender-type.enum\";\nimport {Marketing} from \"@colijnit/transactionapi/build/model/marketing.bo\";\nimport {AddressType} from \"@colijnit/transactionapi/build/enum/address-type.enum\";\nimport {DeliveryMethod} from \"@colijnit/transactionapi/build/model/delivery-method.bo\";\nimport {DeliveryOption} from \"@colijnit/transactionapi/build/model/delivery-option.bo\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {TextValueContainer} from \"../../../model/text-value-container\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\n\n@Component({\n selector: \"checkout-overview-delivery-edit\",\n template: `\n <co-form #deliveryForm (validSubmit)=\"validSubmit.emit()\" (invalidSubmit)=\"invalidSubmit.emit()\">\n <div>\n <div>\n <label [textContent]=\"'DELIVERY' | localize\"\n class=\"checkout-label-h2\"\n ></label>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <label [textContent]=\"'DELIVERY_ADDRESS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <checkout-overview-delivery-address [address]=\"deliveryAddress\"></checkout-overview-delivery-address>\n <div class=\"container-button-change-address\">\n <co-button [label]=\"'DELIVERY_ADDRESS_CHANGE' | localize\" (click)=\"changeAddress(deliveryAddressType)\"></co-button>\n </div>\n </div>\n\n <div class=\"default-flex-column\">\n <label [textContent]=\"'INVOICE_ADDRESS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <checkout-overview-delivery-address [address]=\"billingAddress\"></checkout-overview-delivery-address>\n <div class=\"container-button-change-address\">\n <co-button [label]=\"'INVOICE_ADDRESS_CHANGE' | localize\" (click)=\"changeAddress(billingAddressType)\"></co-button>\n </div>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'DELIVERY_MOMENT' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'DELIVERY_DATE' | localize \" [(model)]=\"deliveryDate\"></co-input-date>\n <co-input-checkbox [label]=\"'PART_DELIVERIES' | localize\" [(model)]=\"transaction.allowPartialDelivery\"></co-input-checkbox>\n </div>\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'PREFERRED_DATE' | localize \" [(model)]=\"preferredDate\"></co-input-date>\n <ng-container *ngFor=\"let preferredDateOption of preferredDateOptions\">\n <co-input-radio-button [name]=\"'preferedDeliveryDate2'\"\n [label]=\"preferredDateOption.text | localize\"\n [value]=\"preferredDateOption.value\"\n [checked]=\"transaction.preferredDeliveryDate2 === preferredDateOption.value\"\n (modelChange)=\"changePreferredDeliveryDate2(preferredDateOption.value)\"\n ></co-input-radio-button>\n </ng-container>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"transaction.deliveryMethod\"\n [source]=\"deliveryMethods\"\n [fields]=\"deliveryMethodFields\"\n [placeholder]=\"'DELIVERY_METHOD2' | localize\"\n [required]=\"true\"\n (modelChange)=\"onDeliveryMethodChange($event)\"\n ></co-input-combo-box>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'DELIVERY_OPTIONS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-multi-select-list\n [placeHolder]=\"'DELIVERY_OPTIONS' | localize\"\n [collection]=\"deliveryOptions\"\n [fields]=\"deliveryOptionFields\"\n [(model)]=\"transaction.deliveryOptions\"\n [showCheckbox]=\"true\"\n [required]=\"true\"\n ></co-multi-select-list>\n </div>\n </div>\n\n <div class=\"\">\n <label [textContent]=\"'REMARKS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.remark\" [placeholder]=\"'REMARKS' | localize\"></co-input-text>\n </div>\n </div>\n\n <div class=\"default-flex-column\">\n <co-input-checkbox [label]=\"'DELIVERY_DATE_FINAL' | localize\" [(model)]=\"deliveryDateFinal\"></co-input-checkbox>\n </div>\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'ASSEMBLY_DATE' | localize \" [(model)]=\"assemblyDate\"></co-input-date>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [placeholder]=\"'TOTAL_ASSEMBLY_TIME' | localize \" [(model)]=\"totalAssemblyTime\"></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-checkbox [label]=\"'DROPSHIPMENT' | localize\" [(model)]=\"dropshipment\"></co-input-checkbox>\n </div>\n\n <div class=\"default-flex-row\">\n <div>\n <label [textContent]=\"'DELIVERY_COSTS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div>{{ deliveryCosts }}</div>\n </div>\n <div>\n <label [textContent]=\"'ASSEMBLY_COSTS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div>{{ assemblyCosts }}</div>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'MARKETING' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"transaction.marketingCode\"\n [source]=\"marketing\"\n [fields]=\"marketingFields\"\n [placeholder]=\"'MARKETING' | localize\"\n [required]=\"true\"\n (modelChange)=\"onMarketingCodeChange($event)\"\n ></co-input-combo-box>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.relationReference\" [placeholder]=\"'REFERENCE_RELATION' | localize\"></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.ownReference\" [placeholder]=\"'OWN_REFERENCE' | localize\"></co-input-text>\n </div>\n </div>\n\n </co-form>\n\n <co-dialog [visible]=\"addLocationPopup\">\n <ng-container header>{{ 'NEW_LOCATION' | localize }}</ng-container>\n <co-form #locationForm (validSubmit)=\"saveLocation()\">\n <checkout-overview-relation-address\n label=\"ADDRESS\" [address]=\"newAddress\"\n ></checkout-overview-relation-address>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end\">\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"addLocationPopup = false;\"></co-button>\n <co-button [label]=\"'SAVE' | localize\" (click)=\"saveNewLocation()\"></co-button>\n </div>\n </co-form>\n </co-dialog>\n\n <co-dialog #changeLocationDialog\n [visible]=\"changeLocationPopup\"\n (closeClick)=\"onChangeLocationCancelClick()\"\n (overlayClick)=\"onChangeLocationCancelClick()\"\n >\n <ng-container header>{{ 'ADDRESS' | localize }}</ng-container>\n <co-form>\n <div class=\"form-content\">\n <div>\n <co-grid #addressGrid\n [data]=\"addresses\"\n [columns]=\"columns\"\n [pagingEnabled]=\"true\"\n [maxNumberOfRows]=\"20\"\n (rowsSelected)=\"handleAddressSelected($event)\"\n ></co-grid>\n </div>\n </div>\n <div class=\"flex-center\" fxLayoutGap=\"10px\">\n <co-button [label]=\"'ADDRESS_ADD' | localize\" (click)=\"onAddLocationOkClick()\"></co-button>\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"onChangeLocationCancelClick()\"></co-button>\n </div>\n </co-form>\n </co-dialog>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\",\n \"./checkout-overview-delivery-edit.component.scss\"\n ]\n})\nexport class CheckoutOverviewDeliveryEditComponent implements OnInit, AfterViewInit {\n public readonly deliveryAddressType: AddressType = AddressType.DeliveryAddress;\n public readonly billingAddressType: AddressType = AddressType.BillingAddress;\n\n @ViewChild(\"deliveryForm\", {read: FormComponent})\n public deliveryForm: FormComponent;\n\n @ViewChild(\"locationForm\", {read: FormComponent})\n public locationForm: FormComponent;\n\n @ViewChild(\"changeLocationDialog\")\n public changeLocationDialog: CoDialogComponent;\n\n @ViewChild(\"addressGrid\")\n public addressGrid: CoGridComponent<any>;\n\n @Input()\n public relation: RelationAnyType;\n\n @Input()\n public transaction: TransactionInfo;\n\n @Output()\n public validSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public invalidSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n public deliveryOptionList: DeliveryOption[] = [];\n public deliveryOptions: DeliveryOption[] = [];\n public deliveryOptionFields: TextValueContainer = { text: \"description\", value: \"code\" };\n public deliveryMethods: DeliveryMethod[] = [];\n public deliveryMethodFields: TextValueContainer = { text: \"description\", value: \"code\" };\n public addLocationPopup: boolean = false;\n public changeLocationPopup: boolean = false;\n public newAddress: Address;\n public preferredDateOptions: TextValueContainer[] = [\n {text: \"NOT_AFTER\", value: \">\" },\n {text: \"NOT_BEFORE\", value: \"<\" },\n {text: \"ON_DATE\", value: \"=\" },\n ];\n public preferredDate: Date = new Date();\n public gender: GenderType;\n public marketing: Marketing[] = [];\n public marketingFields: Object = { text: \"description\", value: \"code\" };\n public marketingCode: string;\n public assemblyCosts: number;\n public deliveryCosts: number;\n\n public addresses: Address[] = [];\n public selectedAddress: Address;\n public columns: any[] = [];\n\n // TODO: Deze velden nog opnemen in Transaction!!\n public deliveryDateFinal: boolean = false;\n public assemblyDate: Date = new Date();\n public totalAssemblyTime: string = \"\";\n public dropshipment: boolean = false;\n\n private _addressType: AddressType;\n\n public get billingAddress(): Address {\n if (this.transaction.invoiceAddress === undefined) {\n if (this.relation &&\n this.relation.firstBillingAddress &&\n this.relation.firstBillingAddress.isNotEmptyAddress()) {\n this.transaction.invoiceAddress = this.relation.firstBillingAddress;\n this._setCountryNameToAddress(this.transaction.invoiceAddress).then();\n }\n }\n return this.transaction.invoiceAddress;\n }\n\n public get deliveryAddress(): Address {\n if (this.transaction.transactionAddress === undefined) {\n if (this.relation &&\n this.relation.firstDeliveryAddress &&\n this.relation.firstDeliveryAddress.isNotEmptyAddress()) {\n this.transaction.transactionAddress = this.relation.firstDeliveryAddress;\n this._setCountryNameToAddress(this.transaction.transactionAddress).then();\n }\n }\n return this.transaction.transactionAddress;\n }\n\n public get deliveryDate(): Date {\n if (this.transaction.deliveryDate === undefined) {\n this.transaction.deliveryDate = new Date();\n }\n return this.transaction.deliveryDate;\n }\n\n public set deliveryDate(value: Date) {\n this.transaction.deliveryDate = value;\n }\n\n public get preferredDeliveryDate(): Date {\n if (this.transaction.preferredDeliveryDate === undefined) {\n this.transaction.preferredDeliveryDate = new Date();\n }\n return this.transaction.preferredDeliveryDate;\n }\n\n public set preferredDeliveryDate(value: Date) {\n this.transaction.preferredDeliveryDate = value;\n }\n\n public newRelationAddress(): Address {\n if (this.relation) {\n const address: Address = new Address();\n address.addressType = AddressType.DeliveryAddress;\n address.startDate = new Date();\n address.sequence = this.relation.getNextAddressSequence();\n this.relation.addresses.push(address);\n return address;\n }\n }\n\n public async ngOnInit(): Promise<void> {\n if (this.transaction) {\n if (this.transaction.transactionAddress === undefined && !this.deliveryAddress) {\n this.transaction.transactionAddress = this.deliveryAddress;\n }\n if (this.transaction.invoiceAddress === undefined && !this.billingAddress) {\n this.transaction.invoiceAddress = this.billingAddress;\n }\n }\n\n this.deliveryCosts = this.calculateDeliveryCosts();\n this.assemblyCosts = this.calculateAssemblyCosts();\n this.deliveryMethods = await this.service.getDeliveryMethods();\n this.deliveryOptionList = await this.service.getDeliveryOptions();\n this.marketing = await this.service.getMarketingCodes();\n await this.onDeliveryMethodChange(this.transaction.deliveryMethod);\n }\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n private _dictionaryService: DictionaryService,\n public service: TransactionService,\n ) {\n this.columns.push(\n {field: \"streetName\", headerText: this._dictionaryService.get(\"STREET\")},\n {field: \"houseNo\", headerText: this._dictionaryService.get(\"HOUSE_NO\")},\n {field: \"houseNoAddition\", headerText: this._dictionaryService.get(\"HOUSE_NO_ADDITION\")},\n {field: \"postalCode\", headerText: this._dictionaryService.get(\"POSTAL_CODE\"), allowFiltering: false},\n {field: \"city\", headerText: this._dictionaryService.get(\"CITY\")},\n );\n }\n\n public submit(): boolean {\n return this.deliveryForm.submit();\n }\n\n public async onDeliveryMethodChange(deliveryMethodId: string): Promise<void> {\n const deliveryMethod: DeliveryMethod[] = this.selectDeliveryMethodById(deliveryMethodId);\n this.transaction.deliveryMethod = deliveryMethodId;\n if (deliveryMethod.length) {\n this.deliveryOptions = this.selectDeliveryOptionsByDeliveryMethod(deliveryMethod[0]);\n this.transaction.deliveryOptions = [];\n if (this.deliveryOptions.length) {\n this.transaction.deliveryOptions.push(this.deliveryOptions[0].code);\n }\n }\n }\n\n public selectDeliveryOptionsByDeliveryMethod(deliveryMethod: DeliveryMethod): DeliveryOption[] {\n return this.deliveryOptionList.filter(deliveryOption => deliveryMethod.deliveryOptions.indexOf(deliveryOption.code) !== -1);\n }\n\n public selectDeliveryMethodById(deliveryMethodId: string): DeliveryMethod[] {\n return this.deliveryMethods.filter(delivery => delivery.code === deliveryMethodId);\n }\n\n public changeAddress(addressType: AddressType): void {\n this._addressType = addressType;\n this.addresses = this.relation.addresses;\n this.changeLocationPopup = true;\n }\n\n public saveNewLocation(): void {\n this.locationForm.submit();\n }\n\n public saveLocation(): void {\n this.addLocation();\n this.changeLocationPopup = false;\n }\n\n public addLocation(): void {\n this.updateAddress(this.newAddress).then();\n this.relation.addresses.push(this.newAddress);\n this.service.saveRelation().then();\n this.addLocationPopup = false;\n }\n\n public async updateAddress(address: Address): Promise<void> {\n if (this._addressType === AddressType.DeliveryAddress) {\n this.transaction.transactionAddress = address;\n } else {\n this.transaction.invoiceAddress = address;\n }\n await this._setCountryNameToAddress(address);\n }\n\n public isDeliveryOptionChecked(deliveryOptionItem: DeliveryOption): boolean {\n return (this.transaction.deliveryOptions.indexOf(deliveryOptionItem.code, 0) === 0);\n }\n\n public changePreferredDeliveryDate2(preferredDateOption: string): void {\n this.transaction.preferredDeliveryDate2 = preferredDateOption;\n }\n\n public onMarketingCodeChange(marketingCode: string): void {\n this.transaction.marketingCode = marketingCode;\n }\n\n public onChangeLocationCancelClick(): void {\n this.changeLocationPopup = false;\n }\n\n public onAddLocationOkClick(): void {\n this._addAddress(this._addressType);\n this.addLocationPopup = true;\n }\n\n public handleAddressSelected(rows: any): void {\n this.selectedAddress = (rows.find(x => x !== undefined));\n this.updateAddress(this.selectedAddress);\n this.changeLocationPopup = false;\n }\n\n private calculateDeliveryCosts(): number {\n return 0;\n }\n\n private calculateAssemblyCosts(): number {\n return 0;\n }\n\n private _addAddress(addressType: AddressType): void {\n this.newAddress = new Address();\n this.newAddress.addressType = addressType;\n this.newAddress.startDate = new Date();\n this.newAddress.sequence = this.relation.getNextAddressSequence();\n }\n\n private async _setCountryNameToAddress(address: Address): Promise<void> {\n if (address.countryId && !address.countryName) {\n const country: Country = await this.service.getCountry(address.countryId);\n address.countryName = country.description;\n }\n }\n}\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {CheckoutSteps} from \"../../../enum/checkout-steps.enum\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {NULL_RELATION_OBJECT} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\nimport {CheckoutOverviewBlockComponent} from \"../checkout-overview-block/checkout-overview-block.component\";\nimport {CheckoutOverviewRelationEditComponent} from \"../checkout-overview-relation-edit/checkout-overview-relation-edit.component\";\nimport {CheckoutOverviewDeliveryEditComponent} from \"../checkout-overview-delivery-edit/checkout-overview-delivery-edit.component\";\n\n@Component({\n selector: \"checkout-overview\",\n template: `\n <checkout-overview-block #relationBlock sequenceNr=\"2\" label=\"YOUR_DATA\"\n *ngIf=\"currentStep === steps.Relation\"\n (editModeChange)=\"handleEditChangeRelation($event)\">\n <ng-container edit-mode-content>\n <checkout-overview-relation-edit #relationForm\n *ngIf=\"currentStep === steps.Relation && editMode\"\n [relation]=\"relation\"\n [transaction]=\"transaction\"\n (validSubmit)=\"onRelationValid()\"\n (invalidSubmit)=\"onRelationInvalid()\"\n ></checkout-overview-relation-edit>\n </ng-container>\n </checkout-overview-block>\n\n <checkout-overview-block #deliveryBlock sequenceNr=\"3\" label=\"DELIVERY\"\n [hidden]=\"currentStep !== steps.Delivery\"\n (editModeChange)=\"handleEditChangeDelivery($event)\">\n <ng-container edit-mode-content>\n <checkout-overview-delivery-edit #deliveryForm\n [hidden]=\"currentStep !== steps.Delivery\"\n [relation]=\"relation\"\n [transaction]=\"transaction\"\n (validSubmit)=\"onDeliveryValid()\"\n ></checkout-overview-delivery-edit>\n </ng-container>\n </checkout-overview-block>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\"\n ]\n})\nexport class CheckoutOverviewComponent implements OnInit, OnDestroy {\n public readonly steps: typeof CheckoutSteps = CheckoutSteps;\n\n @ViewChild(\"relationBlock\", {read: CheckoutOverviewBlockComponent})\n public relationBlock: CheckoutOverviewBlockComponent;\n\n @ViewChild(\"relationForm\", {read: CheckoutOverviewRelationEditComponent})\n public relationForm: CheckoutOverviewRelationEditComponent;\n\n @ViewChild(\"deliveryBlock\", {read: CheckoutOverviewBlockComponent})\n public deliveryBlock: CheckoutOverviewBlockComponent;\n\n @ViewChild(\"deliveryForm\", {read: CheckoutOverviewDeliveryEditComponent})\n public deliveryForm: CheckoutOverviewDeliveryEditComponent;\n //\n // @ViewChild(\"paymentBlock\", {read: CheckoutOverviewBlockComponent})\n // public paymentBlock: CheckoutOverviewBlockComponent;\n\n @Input()\n public relation: RelationAnyType = NULL_RELATION_OBJECT;\n\n @Input()\n public transaction: TransactionInfo;\n\n @Input()\n public userIsApplicationUser: boolean = false;\n\n @Output()\n public saveRelation: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n public saveDelivery: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n public savePayment: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n public stepFinished: EventEmitter<void> = new EventEmitter<void>();\n\n public loginRequested: boolean = false;\n\n public currentStep: CheckoutSteps = CheckoutSteps.Relation;\n public editMode: boolean = true;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\n private _subscriptions: Subscription[] = [];\n\n constructor(\n // public service: RetailTransactionModuleService\n ) {\n // TODO: subscribe to relation and transaction service\n // this._subscriptions.push(service.relationUpdatedEventEmitter.subscribe((updated: boolean) => {\n // if (updated && this.currentStep === CheckoutSteps.Relation) {\n // this.stepFinished.emit();\n // }\n // }));\n // this._subscriptions.push(service.transactionUpdated.subscribe(() => {\n // if (this.loginRequested) {\n // this.loginRequested = false;\n // this.stepFinished.emit();\n // }\n // }));\n }\n\n ngOnInit(): void {\n if (this.transaction && this.transaction.relation) {\n this.moveToStep(CheckoutSteps.Relation);\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n public handleEditChangeRelation(editMode: boolean): void {\n this.editMode = editMode;\n if (!editMode) {\n if (this.currentStep !== CheckoutSteps.Relation) {\n this.saveRelation.emit();\n } else {\n// this.relationForm.submit();\n }\n }\n }\n\n public onRelationValid(): void {\n this.saveRelation.emit();\n }\n\n public onRelationInvalid(): void {\n this.editMode = true;\n this.relationBlock.startEdit();\n }\n\n public onDeliveryValid(): void {\n this.saveDelivery.emit();\n }\n\n public handleEditChangeDelivery(editMode: boolean): void {\n this.editMode = editMode;\n\n if (!editMode) {\n if (this.currentStep !== CheckoutSteps.Delivery) {\n// this.deliveryForm.submit();\n } else {\n this.saveDelivery.emit();\n }\n }\n }\n\n public handleEditChangePayment(editMode: boolean): void {\n this.savePayment.emit();\n }\n\n public moveToStep(step: CheckoutSteps, edit: boolean = false): void {\n this.currentStep = step;\n\n if (edit && this.isRelation()) {\n switch (step) {\n case CheckoutSteps.Relation:\n // this.stopEditLoginBlock();\n this.startEditRelationBlock();\n this.stopEditDeliveryBlock();\n this.stopEditPaymentBlock();\n return;\n case CheckoutSteps.Delivery:\n this.stopEditRelationBlock();\n this.startEditDeliveryBlock();\n this.stopEditPaymentBlock();\n return;\n case CheckoutSteps.Payment:\n this.stopEditRelationBlock();\n this.stopEditDeliveryBlock();\n this.startEditPaymentBlock();\n return;\n }\n }\n }\n\n private startEditRelationBlock(): void {\n if (this.relationBlock !== undefined) {\n this.relationBlock.startEdit();\n }\n }\n\n private startEditDeliveryBlock(): void {\n // if (this.deliveryBlock !== undefined) {\n // this.deliveryBlock.startEdit();\n // }\n }\n\n private startEditPaymentBlock(): void {\n // if (this.paymentBlock !== undefined) {\n // this.paymentBlock.startEdit();\n // }\n }\n\n private stopEditRelationBlock(): void {\n if (this.relationBlock !== undefined) {\n this.relationBlock.stopEdit(false);\n }\n }\n\n private stopEditDeliveryBlock(): void {\n // if (this.deliveryBlock !== undefined) {\n // this.deliveryBlock.stopEdit(false);\n // }\n }\n\n private stopEditPaymentBlock(): void {\n // if (this.paymentBlock !== undefined) {\n // this.paymentBlock.stopEdit(false);\n // }\n }\n\n private isRelation(): boolean {\n return (this.relation !== NULL_RELATION_OBJECT);\n }\n}\n","import {Component, Inject, ViewChild, forwardRef} from \"@angular/core\";\nimport {CheckoutSteps} from \"../../../enum/checkout-steps.enum\";\nimport {StepperSelectionEvent} from \"@angular/cdk/stepper\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\nimport {CheckoutOverviewComponent} from \"../checkout-overview/checkout-overview.component\";\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\nimport {NULL_RELATION_OBJECT} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {MatStepper} from \"@angular/material/stepper\";\nimport {PromptService} from \"@colijnit/corecomponents_v12\";\nimport {ValidationResult} from \"@colijnit/transactionapi/build/model/validation-result\";\nimport {TransactionKind} from \"@colijnit/transactionapi/build/enum/transaction-kind.enum\";\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\n\n@Component({\n selector: \"app-checkout\",\n template: `\n <div class=\"checkout-viewport\">\n <mat-horizontal-stepper #stepper\n [linear]=\"true\" labelPosition=\"bottom\"\n (selectionChange)=\"stepChanged($event)\">\n <mat-step [label]=\"'YOUR_DATA' | localize\" [completed]=\"completedRelation\"></mat-step>\n <mat-step [label]=\"'DELIVERY' | localize\" [completed]=\"completedDelivery\"></mat-step>\n <mat-step [label]=\"'PAYMENT' | localize\"></mat-step>\n <mat-step [label]=\"'OVERVIEW' | localize\"></mat-step>\n </mat-horizontal-stepper>\n <checkout-overview [relation]=\"relation\"\n [transaction]=\"transaction\"\n [userIsApplicationUser]=\"userIsApplicationUser\"\n (saveRelation)=\"handleSaveRelation()\"\n (saveDelivery)=\"handleSaveDelivery()\"\n (stepFinished)=\"stepFinished()\"></checkout-overview>\n <div class=\"step-content-customer\"></div>\n </div>\n `,\n styleUrls: [\n \"./checkout.component.scss\"\n ]\n})\nexport class CheckoutComponent {\n @ViewChild(CheckoutOverviewComponent)\n public overview: CheckoutOverviewComponent;\n\n @ViewChild(\"stepper\")\n public stepper: MatStepper;\n\n public get relation(): CustomerFullObject {\n return this.service.currentRelation;\n }\n\n public get transaction(): TransactionInfo {\n return this.service.currentTransaction;\n }\n\n public get canContinue(): boolean {\n return this.stepper && (this.stepper.selectedIndex !== 0 || !isNill(this.relation));\n }\n\n public get finished(): boolean {\n return this.stepper && this.stepper.steps && this.stepper.selectedIndex === this.stepper.steps.length - 1;\n }\n\n public get userIsApplicationUser(): boolean {\n // TODO: return this.userService.isApplicationUser;\n return true;\n }\n\n public completedRelation: boolean = false;\n public completedDelivery: boolean = false;\n\n private _relation: RelationAnyType = NULL_RELATION_OBJECT;\n\n constructor(\n public service: TransactionService,\n public promptService: PromptService\n ) {}\n\n private static _currentStepByIndex(index: number): CheckoutSteps {\n switch (index) {\n case 0:\n return CheckoutSteps.Relation;\n case 1:\n return CheckoutSteps.Delivery;\n case 2:\n return CheckoutSteps.Payment;\n default:\n return CheckoutSteps.Overview;\n }\n }\n\n public continue(): void {\n let toNextStep: boolean = false;\n if (CheckoutComponent._currentStepByIndex(this.stepper.selectedIndex ) === CheckoutSteps.Relation) {\n toNextStep = this.overview.relationForm.submit();\n this.completedRelation = toNextStep;\n this.completedDelivery = false;\n }\n\n if (CheckoutComponent._currentStepByIndex(this.stepper.selectedIndex ) === CheckoutSteps.Delivery) {\n toNextStep = this.overview.deliveryForm.submit();\n this.completedDelivery = toNextStep;\n }\n\n if (this.stepper && toNextStep) {\n this.stepper.selected.completed = true;\n this.stepper.next();\n }\n }\n\n\n public previous(): void {\n if (this.stepper) {\n this.stepper.previous();\n }\n }\n\n public stepFinished(): void {\n this.continue();\n }\n\n public handleSaveRelation(): void {\n this.saveNewRelation().then(() => {\n this.service.saveTransaction();\n });\n }\n\n public async handleSaveDelivery(): Promise<boolean> {\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n this.service.setTransactionDeliveryOptions().then(async (response) => {\n if (response) {\n await this.service.saveTransaction().then();\n } else {\n await this.promptService.showError(\"Opslag bezorging mislukt\", \" \");\n }\n resolve(true);\n }).catch((reason: ValidationResult) => {\n this.promptService.showError(\"Opslag transactie mislukt\", \" \");\n });\n });\n }\n\n public async saveNewRelation(): Promise<void> {\n if (isNill(this.service.currentRelation.relationId)) {\n await this.service.saveNewRelation();\n } else {\n await this.service.saveRelation();\n }\n }\n\n public stepChanged(event: StepperSelectionEvent): void {\n this.overview.moveToStep(CheckoutComponent._currentStepByIndex(event.selectedIndex), true);\n }\n\n public async insertData(): Promise<void> {\n await this.service.insertCustomer(this.relation);\n }\n\n public async updateData(): Promise<void> {\n const relation: RelationAnyType = this.relation;\n await this.service.updateCustomer(relation);\n }\n}\n","import {CheckoutComponent} from \"../checkout/checkout.component\";\nimport {Component, Inject, ViewChild} from \"@angular/core\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {CheckoutSteps} from \"../../../enum/checkout-steps.enum\";\n\n@Component({\n selector: \"app-retail-transaction-checkout\",\n template: `\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <app-checkout class=\"checkout\"></app-checkout>\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n <ng-template #content>\n <div class=\"checkout-retail-viewport checkout-row-end\">\n <co-button [label]=\"'BACK'| localize\" [disabled]=\"!canPrevious\" (click)=\"previousCheckout()\"></co-button>\n <co-button [label]=\"'CONTINUE'| localize\" [disabled]=\"!canContinue\" (click)=\"continueCheckout()\"></co-button>\n </div>\n </ng-template>\n `,\n styleUrls: [\n \"./retail-transaction-checkout.component.scss\"\n ]\n})\nexport class RetailTransactionCheckoutComponent {\n @ViewChild(CheckoutComponent, { static: true })\n public checkout: CheckoutComponent;\n\n public get canPrevious(): boolean {\n return this.checkout && this.checkout.stepper?.selectedIndex !== 0;\n }\n\n public get canContinue(): boolean {\n return this.checkout && this.checkout.stepper?.selectedIndex !== 3;\n }\n\n public get started(): boolean {\n return this.checkout && this.checkout.stepper?.selectedIndex === 0;\n }\n\n public get finished(): boolean {\n return this.checkout && this.checkout.finished;\n }\n\n constructor(\n public service: TransactionService\n ) {}\n\n public continueCheckout(): void {\n this.checkout.continue();\n }\n\n public previousCheckout(): void {\n this.checkout.previous();\n }\n}\n","import {Component, EventEmitter, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {FormComponent} from \"@colijnit/corecomponents_v12\";\n\n@Component({\n selector: \"checkout-login\",\n template: `\n <h1>{{ \"LOGIN\" | localize}}</h1>\n <div class=\"users\">\n <co-form #loginForm (validSubmit)=\"login()\">\n <div class=\"existing-user\">\n <p><strong>{{ \"EXISTING_CUSTOMERS\" | localize }}</strong></p>\n <co-input-text\n [(model)]=\"userEmailAddress\"\n [placeholder]=\"'EMAIL_ADDRESS' | localize \"\n [type]=\"'email'\"\n required\n ></co-input-text>\n\n <co-input-text\n [(model)]=\"userPassword\"\n [placeholder]=\"'PASSWORD' | localize \"\n [type]=\"'password'\"\n required\n ></co-input-text>\n <div class=\"login-button\">\n <co-button\n [label]=\"'LOGIN' | localize\" (click)=\"submit()\"\n ></co-button>\n </div>\n </div>\n </co-form>\n\n <co-form #accountForm (validSubmit)=\"accountLogin()\">\n <div class=\"new-user\">\n <p class=\"boxedbottom\">\n <strong>{{ \"NEW_AT\" | localize}}{{company}}</strong>\n <br/>{{ \"CREATE_ACCOUNT_IN_2_MIN\" | localize }}\n </p>\n <div class=\"new-user-e-mail\">\n <co-input-text\n [(model)]=\"userNewEmailAddress\"\n [placeholder]=\"'EMAIL_ADDRESS' | localize \"\n [type]=\"'email'\"\n required\n ></co-input-text>\n </div>\n <div class=\"login-button\">\n <co-button\n [label]=\"'CREATE_ACCOUNT' | localize\"\n (click)=\"createAccountSubmit()\"\n ></co-button>\n <co-button\n [label]=\"'CONTINUE_WITHOUT_ACCOUNT' | localize\"\n (click)=\"continueSubmit()\"\n ></co-button>\n </div>\n </div>\n </co-form>\n </div>\n `,\n styleUrls: [\"./checkout-login.component.scss\"]\n})\nexport class CheckoutLoginComponent implements OnInit {\n @ViewChild(\"loginForm\")\n public loginForm: FormComponent;\n\n @ViewChild(\"accountForm\")\n public accountForm: FormComponent;\n\n @Output()\n public createNewAccountSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public continueWithoutSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public loginSubmit: EventEmitter<void> = new EventEmitter<void>();\n\n public userEmailAddress: string = \"\";\n public userNewEmailAddress: string = \"\";\n public userPassword: string = \"\";\n public continueWithoutAccount: boolean = false;\n\n public company: string = \"<bedrijf>\";\n constructor(\n ) { }\n\n ngOnInit(): void {\n }\n\n public login(): void {\n this.loginSubmit.emit();\n }\n\n public submit(): void {\n this.loginForm.submit();\n }\n\n public createAccountSubmit(): void {\n this.accountForm.submit();\n }\n\n public continueSubmit(): void {\n this.continueWithoutAccount = true;\n this.accountForm.submit();\n }\n\n public accountLogin(): void {\n if (this.continueWithoutAccount) {\n this.continueWithoutSubmit.emit();\n } else {\n this.createNewAccountSubmit.emit();\n }\n }\n}\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter, Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild, ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {OptionsService} from \"../../service/options.service\";\r\nimport {TransactionService} from \"../../service/transaction.service\";\r\nimport {DictionaryService} from \"../../service/dictionary.service\";\r\nimport {IOneConnectorAdapterService} from \"../../service/ione-connector-adapter.service\";\r\nimport {TransactionEventService} from \"../../service/transaction-event.service\";\r\nimport {RetailTransactionCheckoutComponent} from \"./../checkout/retail-transaction-checkout/retail-transaction-checkout.component\";\r\nimport {PromptService} from \"@colijnit/corecomponents_v12\";\r\nimport {CheckoutLoginComponent} from \"./checkout-login/checkout-login.component\";\r\nimport {ContactOption} from \"@colijnit/transactionapi/build/model/contact-option.bo\";\r\n\r\n@Component({\r\n selector: \"ione-checkout\",\r\n template: `\r\n <ng-container *ngIf=\"show && (applicationUser || loggedIn)\">\r\n <app-retail-transaction-checkout></app-retail-transaction-checkout>\r\n </ng-container>\r\n\r\n\r\n <div *ngIf=\"show && !applicationUser && !loggedIn\">\r\n <checkout-login\r\n #checkoutLogin\r\n (continueWithoutSubmit)=\"continueWithoutAccount()\"\r\n (createNewAccountSubmit)=\"createNewAccount()\"\r\n ></checkout-login>\r\n </div>\r\n `\r\n})\r\nexport class IoneCheckoutComponent implements OnInit, OnDestroy {\r\n @ViewChild(RetailTransactionCheckoutComponent)\r\n public retailCheckout: RetailTransactionCheckoutComponent;\r\n\r\n @ViewChild(CheckoutLoginComponent)\r\n public checkoutLogin: CheckoutLoginComponent;\r\n\r\n @Input()\r\n public set options(value: any) {\r\n if (value) {\r\n let options: any;\r\n if (typeof value === \"string\") {\r\n options = JSON.parse(value);\r\n } else {\r\n options = value;\r\n }\r\n this._publicOptions = true;\r\n this._optionsService.initialize(options).then();\r\n }\r\n }\r\n\r\n @Input()\r\n public set applicationUser(value: boolean) {\r\n this._applicationUser = value;\r\n this._service.applicationUser = this.applicationUser;\r\n }\r\n\r\n public get transactionNr(): number {\r\n return this._service.currentTransaction.transactionNr;\r\n }\r\n\r\n public get applicationUser(): boolean {\r\n return this._applicationUser;\r\n }\r\n\r\n public upAndLoaded: boolean = false;\r\n public show: boolean = false;\r\n public loggedIn: boolean = false;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n private _remoteOptions: boolean = true;\r\n private _publicOptions: boolean = true;\r\n private _applicationUser: boolean = false;\r\n\r\n constructor(\r\n public _changeDetector: ChangeDetectorRef,\r\n public _optionsService: OptionsService,\r\n public _connector: IOneConnectorAdapterService,\r\n public _dictionary: DictionaryService,\r\n public _service: TransactionService,\r\n public transactionEvents: TransactionEventService,\r\n public _promptService: PromptService,\r\n public globalEvents: TransactionEventService\r\n ) {\r\n this._subscriptions.push(\r\n this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),\r\n );\r\n\r\n this._subscriptions.push(\r\n this.transactionEvents.loggedIn.subscribe(() => {\r\n this.loggedIn = true;\r\n })\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this._publicOptions) {\r\n this._optionsService.initializeDevelopmentOptions(this._remoteOptions);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n private async _handleSettingsLoaded(loaded: boolean): Promise<void> {\r\n if (loaded) {\r\n await this._initConnection().then();\r\n this.upAndLoaded = true;\r\n }\r\n }\r\n\r\n private async _initConnection(): Promise<void> {\r\n await this._connector.connect(this._optionsService.options);\r\n\r\n if (this._optionsService.options.url) {\r\n this._dictionary.rootUrl = this._optionsService.options.url.replace(\"/ajaxservice\", \"\");\r\n }\r\n await this._dictionary.setDictionary(this._optionsService.options.languageCode);\r\n setTimeout(() => {\r\n this._changeDetector.detectChanges();\r\n });\r\n }\r\n\r\n public loginSubmit(): void {\r\n this.globalEvents.addUserRelationShoppingCartModule.next({user: this.checkoutLogin.userEmailAddress, pw: this.checkoutLogin.userPassword});\r\n this.loggedIn = true;\r\n }\r\n\r\n public continueWithoutAccount(): void {\r\n this.closeLogin();\r\n this.loggedIn = true;\r\n this.transactionEvents.addNewUserToShoppingCartModule.next(this.checkoutLogin.userNewEmailAddress);\r\n }\r\n\r\n public createNewAccount(): void {\r\n this.closeLogin();\r\n this.transactionEvents.addNewUserToShoppingCartModule.next(this.checkoutLogin.userNewEmailAddress);\r\n }\r\n\r\n private closeLogin(): void {\r\n this.loggedIn = true;\r\n this.show = true;\r\n }\r\n}\r\n","import {Component, Inject, Input, OnInit} from \"@angular/core\";\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\nimport {IOneConnectorAdapterService} from \"../../../service/ione-connector-adapter.service\";\nimport {GetPostalCodeRetrievalOutputParams} from \"@colijnit/transactionapi/build/model/get-postal-code-retrieval-output-params\";\nimport {StringUtils} from \"../../../utils/string-utils\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {RelationAnyType} from \"@colijnit/transactionapi/build/model/relation-any-type\";\n\n@Component({\n selector: \"checkout-overview-relation-address\",\n template: `\n <label [textContent]=\"label | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.postalCode\"\n [placeholder]=\"'POSTAL_CODE' | localize\"\n (blur)=\"checkForPostalCodeCheckError()\"\n required\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.houseNo\"\n [placeholder]=\"'HOUSE_NO' | localize\"\n (blur)=\"checkForPostalCodeCheckError()\"\n (modelChange) = \"changeHouseNo()\"\n required\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.houseNoAddition\"\n [placeholder]=\"'HOUSE_NO_ADDITION' | localize\"\n ></co-input-text>\n </div>\n </div>\n <div>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.streetName\" [placeholder]=\"'STREET' | localize\" required></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.city\" [placeholder]=\"'CITY' | localize\" required></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"address.countryId\"\n [source]=\"countries\"\n [fields]=\"fields\"\n [placeholder]=\"'COUNTRY'| localize\"\n [required]=\"true\"\n ></co-input-combo-box>\n </div>\n </div>\n </div>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\"\n ]\n})\nexport class CheckoutOverviewRelationAddressComponent implements OnInit {\n\n @Input()\n public label: string;\n\n @Input()\n public set address(address: Address) {\n this._address = address;\n }\n\n public get address(): Address {\n if (this._address === undefined) {\n this._address = new Address();\n }\n\n return this._address;\n }\n\n public countries: Country[] = [];\n public fields: Object = { text: \"description\", value: \"code\" };\n\n public constructor(\n private _dictionary: DictionaryService,\n private _connector: IOneConnectorAdapterService\n ) {}\n\n public postalCodeCheckErrorMessage: string = \"\";\n\n private _prevPostalCodeForCheck: string = \"\";\n private _prevHouseNoForCheck: number;\n private _address: Address;\n\n async ngOnInit(): Promise<void> {\n this.countries = await this._connector.getCountries();\n }\n\n public async checkForPostalCodeCheckError(): Promise<void> {\n if (!this.address.postalCode || isNill(this.address.houseNo)) {\n this.postalCodeCheckErrorMessage = \"\";\n return;\n }\n\n if (this._prevPostalCodeForCheck !== this.address.postalCode || this._prevHouseNoForCheck !== this.address.houseNo) {\n this._prevPostalCodeForCheck = this.address.postalCode;\n this._prevHouseNoForCheck = this.address.houseNo;\n const postalCodeResponse: GetPostalCodeRetrievalOutputParams = await this._connector.getPostalCodeRetrieval((this.address.postalCode ? this.address.postalCode : \"\"),\n StringUtils.ParseString(this.address.houseNo));\n if (postalCodeResponse && postalCodeResponse.isBadAddress) {\n this.postalCodeCheckErrorMessage = this._dictionary.get(\"UNKNOWN_ADDRESS_CHECK_IT\");\n } else {\n this.postalCodeCheckErrorMessage = \"\";\n this.address.streetName = postalCodeResponse.street;\n this.address.city = postalCodeResponse.city;\n }\n }\n }\n\n public changeHouseNo(): void {\n this.address.houseNo = Number(this.address.houseNo);\n }\n}\n","import {Component, EventEmitter, Inject, Input, Output} from \"@angular/core\";\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\nimport {TransactionService} from \"../../../service/transaction.service\";\n\n@Component({\n selector: \"checkout-overview-delivery-address\",\n template: `\n <div>\n <div>\n <label [textContent]=\"label | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div (click)=\"onClick()\">\n <div>\n {{ address?.streetName }} {{ address?.houseNo}} {{ address?.houseNoAddition}}\n </div>\n <div>\n {{ address?.postalCode }} {{ address?.city}}\n </div>\n <div>\n {{ address?.countryName }}\n </div>\n </div>\n </div>\n `,\n styleUrls: [\n \"./../checkout/checkout.component.scss\",\n \"./checkout-overview-delivery-address.component.scss\"\n ]\n})\nexport class CheckoutOverviewDeliveryAddressComponent {\n\n @Input()\n public label: string;\n\n @Input()\n public address: Address;\n\n @Output()\n public editRequest: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n public service: TransactionService\n ) {}\n\n public onClick(): void {\n this.editRequest.emit();\n }\n}\n","// Direction type for regular straight directions.\r\nexport enum Direction {\r\n Right = \"right\",\r\n Left = \"left\",\r\n Up = \"top\",\r\n Down = \"bottom\",\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from \"@angular/core\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\nimport {Direction} from \"../../../enum/direction.enum\";\n\n@Component({\n selector: \"checkout-relation-suggestions-list\",\n template: `\n <div class=\"flex-column items-wrapper\">\n <checkout-relation-suggestions-list-item *ngFor=\"let suggestion of suggestions\" [suggestion]=\"suggestion\"\n [arrowDirection]=\"arrowDirection\"\n (buttonClick)=\"suggestionButtonClick.emit(suggestion)\"></checkout-relation-suggestions-list-item>\n <span *ngIf=\"suggestions?.length === 0\" class=\"no-results\" localize=\"NO_RESULTS_FOUND\"></span>\n </div>\n `,\n host: {\n \"class\": \"narrow-scrollbar\"\n },\n styleUrls: [\n \"./checkout-relation-suggestions-list.component.scss\"\n ]\n})\nexport class CheckOutRelationSuggestionsListComponent {\n @Input()\n public suggestions: RelationListObject[] = [];\n\n @Input()\n public arrowDirection: Direction = Direction.Left;\n\n // Emits the clicked relation list object.\n @Output()\n public suggestionButtonClick: EventEmitter<RelationListObject> = new EventEmitter<RelationListObject>();\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from \"@angular/core\";\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\n//import {Icon} from \"../../../../enum/icon.enum\";\nimport {Direction} from \"../../../enum/direction.enum\";\n\n@Component({\n selector: \"checkout-relation-suggestions-list-item\",\n template: `\n<!-- <div class=\"left\" fxLayout fxLayoutAlign=\"start center\">-->\n<!-- <avatar [relation]=\"suggestion\" class=\"smaller\"></avatar>-->\n<!-- </div>-->\n <div class=\"right\">\n <div class=\"name medium-big-font\" *ngIf=\"suggestion.displayName as displayName\" [textContent]=\"displayName\"></div>\n <div class=\"email\" *ngIf=\"suggestion.email\">\n {{ suggestion.email }}\n </div>\n <div class=\"address\" *ngIf=\"suggestion.displayAddress as address\" [textContent]=\"address\"></div>\n <div class=\"phone\" *ngIf=\"suggestion.tel1\">\n {{ suggestion?.tel1 }}\n </div>\n </div>\n <co-button [label]=\"'SELECT' | localize\" class=\"popup rounded\" (click)=\"buttonClick.emit($event)\"></co-button>\n `,\n styleUrls: [\n \"./checkout-relation-suggestions-list-item.component.scss\"\n ]\n})\nexport class CheckOutRelationSuggestionsListItemComponent implements OnInit {\n @Input()\n public suggestion: RelationListObject;\n\n @Input()\n public set arrowDirection(arrowDirection: Direction) {\n this._arrowDirection = arrowDirection;\n this._updateIcon();\n }\n\n @Output()\n public buttonClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n// public icon: Icon;\n\n private _arrowDirection: Direction = Direction.Left;\n\n constructor() {\n }\n\n ngOnInit(): void {\n this._updateIcon();\n }\n\n private _updateIcon(): void {\n // if (this._arrowDirection === Direction.Left) {\n // this.icon = Icon.ArrowFatLeft;\n // } else {\n // this.icon = Icon.ArrowFatRight;\n // }\n }\n}\n","// A pipe for appending strings to other strings in view templates.\r\nimport {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({name: \"append\"})\r\nexport class AppendPipe implements PipeTransform {\r\n transform(value: string, append?: string): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n\r\n if (!append) {\r\n return value;\r\n }\r\n\r\n return value + append;\r\n }\r\n}\r\n","// Time size types, as in 'days' or 'weeks' or 'months'.\r\nexport enum TimeSizeType {\r\n Hours = \"hours\",\r\n Days = \"days\",\r\n Weeks = \"weeks\",\r\n Months = \"months\",\r\n Years = \"years\"\r\n}\r\n","import {Inject, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DictionaryService} from \"../service/dictionary.service\";\r\nimport {DateUtils} from \"@colijnit/transactionapi/build/utils/date-utils\";\r\nimport {TimeSizeType} from \"../enum/time-size.type\";\r\n\r\n@Pipe({name: \"dateDuration\", pure: false})\r\nexport class DateDurationPipe implements PipeTransform {\r\n\r\n constructor(protected _dictionary: DictionaryService) {\r\n }\r\n\r\n // Transforms some date in the future to a duration string, e.g. \"x days\" or \"x weeks\" (from now)\r\n transform(value: Date, timeSize: TimeSizeType = TimeSizeType.Days): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n const deltaDays: number = Math.round(DateUtils.GetDaysFromNow(value));\r\n\r\n if (deltaDays === 0) {\r\n return this._dictionary.get(\"NOW\");\r\n } else if (timeSize === TimeSizeType.Days) {\r\n return this.transformByDeltaDays(deltaDays);\r\n } else if (timeSize === TimeSizeType.Weeks) {\r\n return this.transformByDeltaWeeks(deltaDays);\r\n } else {\r\n return this.transformByDeltaDays(deltaDays);\r\n }\r\n }\r\n\r\n // @returns like \"1 day\" or \"5 days\"\r\n public transformByDeltaDays(deltaDays: number): string {\r\n let daySuffix: string;\r\n if (deltaDays === 1) {\r\n daySuffix = this._dictionary.get(\"DAY\", false);\r\n } else {\r\n daySuffix = this._dictionary.get(\"DAYS\", false);\r\n }\r\n return deltaDays + \" \" + daySuffix;\r\n }\r\n\r\n // @returns like \"1 week\" or \"5 weeks\"\r\n public transformByDeltaWeeks(deltaWeeks: number): string {\r\n let weeksSuffix: string;\r\n if (deltaWeeks === 1) {\r\n weeksSuffix = this._dictionary.get(\"WEEK\", false);\r\n } else {\r\n weeksSuffix = this._dictionary.get(\"WEEKS\", false);\r\n }\r\n return deltaWeeks + \" \" + weeksSuffix;\r\n }\r\n}\r\n","import {Inject, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DateDurationPipe} from \"./date-duration.pipe\";\r\nimport {DictionaryService} from \"../service/dictionary.service\";\r\nimport {TimeSizeType} from \"../enum/time-size.type\";\r\nimport {DateUtils} from \"@colijnit/transactionapi/build/utils/date-utils\";\r\n\r\n@Pipe({name: \"deliveryTime\", pure: false})\r\nexport class DeliveryTimePipe extends DateDurationPipe implements PipeTransform {\r\n\r\n constructor(_dictionaryService: DictionaryService) {\r\n super(_dictionaryService);\r\n }\r\n\r\n /**\r\n * Transforms some Date in the future to a duration string such as \"x days\" or \"x months\" (from now).\r\n * Outputs 'directly available' if 0 days diff.\r\n */\r\n transform(value: Date, timeSize: TimeSizeType = TimeSizeType.Days): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n\r\n const deltaDays: number = Math.round(DateUtils.GetDaysFromNow(value));\r\n\r\n if (deltaDays <= 0) {\r\n return this._dictionary.get(\"DELIVERY_DIRECT\");\r\n } else {\r\n return super.transform(value, timeSize);\r\n }\r\n }\r\n}\r\n","import {Inject, Pipe, PipeTransform} from \"@angular/core\";\r\nimport { DictionaryService } from \"../service/dictionary.service\";\r\n\r\n@Pipe({\r\n name: \"localize\"\r\n})\r\n// A pipe for localizing string values in view templates.\r\nexport class LocalizePipe implements PipeTransform {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n constructor(private _dictionaryService: DictionaryService) {}\r\n\r\n transform(value: string, upperCaseFirst: boolean = true, replace: string|string[] = []): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n replace = replace ? replace : [];\r\n if (!Array.isArray(replace)) {\r\n replace = [replace];\r\n }\r\n return this._dictionaryService.get(value, upperCaseFirst, ...replace);\r\n }\r\n}\r\n","/**\r\n * A pipe for transforming strings or numbers to currency formatted strings for display as a price text, e.g. the number 1300.82 to \"€ 1,300.82\"\r\n * or the string \"9000\" to \"€ 9000,-\"\r\n */\r\nimport {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {NumberUtils} from \"@colijnit/transactionapi/build/utils/number-utils\";\r\n\r\n@Pipe({name: \"coCurrency\"})\r\nexport class CoCurrencyPipe implements PipeTransform {\r\n private static readonly _CurrencySymbol: string = \"€\";\r\n private static readonly _WholeNumberedPriceSuffix: string = \",-\";\r\n\r\n transform(value: any, allowZero: boolean = false): string {\r\n if (value === null || value === undefined) {\r\n if (allowZero) {\r\n value = 0;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n if (value === 0 && !allowZero) {\r\n return \"\";\r\n }\r\n let suffix: string = \"\";\r\n const valueAsFloat: number = NumberUtils.ParseFloat(value, 2);\r\n if (NumberUtils.IsNaN(valueAsFloat)) {\r\n return \"\";\r\n }\r\n // append ,- if integer\r\n if (NumberUtils.IsInteger(valueAsFloat)) {\r\n suffix = CoCurrencyPipe._WholeNumberedPriceSuffix;\r\n }\r\n let valueAsString: string = valueAsFloat.toString();\r\n // add extra zero if price has only one decimal, something like '100.2'\r\n if (valueAsString.indexOf(\".\") > -1 && valueAsString.split(\".\")[1].length === 1) {\r\n valueAsString += \"0\";\r\n }\r\n valueAsString = NumberUtils.AddThousandsCommasTo(valueAsString);\r\n // switch '.' and ',' characters (Dutch number view .. hard coded format for now)\r\n valueAsString = valueAsString.replace(\",\", \"#\");\r\n valueAsString = valueAsString.replace(\".\", \",\");\r\n valueAsString = valueAsString.replace(\"#\", \".\");\r\n return CoCurrencyPipe._CurrencySymbol + \" \" + valueAsString + suffix;\r\n }\r\n}\r\n","import {Inject, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DomSanitizer, SafeStyle} from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n name: \"safeStyle\"\r\n})\r\nexport class SafeStylePipe implements PipeTransform {\r\n\r\n constructor(private _sanitizer: DomSanitizer) {}\r\n\r\n transform(value: string): SafeStyle | any {\r\n return this._sanitizer.bypassSecurityTrustStyle(value);\r\n }\r\n}\r\n","import {Component, HostBinding, Input} from \"@angular/core\";\n\n@Component({\n selector: \"image-display\",\n template: `\n <div class=\"img-wrapper\">\n <div *ngIf=\"!!model\" class=\"image\" [style.background-image]=\"'url(' + model + ')' | safeStyle\"></div>\n <no-image-display *ngIf=\"!model\" [label]=\"label\"></no-image-display>\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: [\"./image-display.component.scss\"]\n})\nexport class ImageDisplayComponent {\n // Image data URI string. Meant for direct use in [src] attribute of an <img> tag.\n @Input()\n public model: string;\n\n // The (localized) text to show when there is no image. Defaults to 'NO_IMAGE'.\n @Input()\n public label: string = \"NO_IMAGE\";\n\n /**\n * By default, this component shows a special icon and missing-image text when model is empty. Set this to true to hide\n * self instead of showing a <no-image-display> placeholder, when there was no input image data.\n */\n @Input()\n public hideOnEmptyModel: boolean = false;\n\n @Input()\n @HostBinding(\"class.circle\")\n public circle: boolean = false;\n\n // Contain is default. Provide this attribute true to have a cover-style image.\n @Input()\n @HostBinding(\"class.cover-image\")\n public cover: boolean = false;\n\n // Set to true for a cursor: pointer style on hover on this component.\n @Input()\n @HostBinding(\"class.pointer-hover\")\n public pointerOnHover: boolean;\n\n @HostBinding(\"class.hidden\")\n public get shouldBeHidden(): boolean {\n return (this.hideOnEmptyModel && !this.model);\n }\n}\n","import {Component, Input} from \"@angular/core\";\nimport {CoreComponentsIcon} from \"@colijnit/corecomponents_v12\";\n\n@Component({\n selector: \"no-image-display\",\n template: `\n <icon [icon]=\"icon\"></icon>\n <span [textContent]=\"label | localize\" class=\"no-image-label\"></span>\n `,\n styleUrls: [\n \"./no-image-display.component.scss\"\n ]\n})\n// Component that shows a standardized icon and text for when there was no image (default: a camera icon and the 'no image' text).\nexport class NoImageDisplayComponent {\n // The placeholder icon to show when there is no image. Defaults to 'camera'.\n @Input()\n public icon: CoreComponentsIcon = CoreComponentsIcon.Camera;\n\n // The (localized) text to show when there is no image. Defaults to 'NO_IMAGE'.\n @Input()\n public label: string = \"NO_IMAGE\";\n}\n","import {Component, HostBinding, Input, OnDestroy} from \"@angular/core\";\nimport {SafeHtml} from \"@angular/platform-browser\";\nimport {CoreComponentsIcon, IconCacheService} from \"@colijnit/corecomponents_v12\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"icon\",\n template: \"\",\n styleUrls: [\n \"./icon.component.scss\"\n ]\n})\nexport class IconComponent implements OnDestroy {\n\n @Input()\n public set icon(icon: CoreComponentsIcon) {\n this._setSvg(icon);\n }\n\n @HostBinding(\"innerHtml\")\n public svg?: SafeHtml;\n\n constructor(\n private _iconCacheService: IconCacheService) {\n }\n\n ngOnDestroy(): void {\n this.svg = undefined;\n }\n\n private _setSvg(icon: CoreComponentsIcon): void {\n this.svg = this._iconCacheService.getIcon(icon);\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport {AppendPipe} from \"../../pipe/append.pipe\";\nimport {DeliveryTimePipe} from \"../../pipe/delivery-time.pipe\";\nimport {DateDurationPipe} from \"../../pipe/date-duration.pipe\";\nimport {LocalizePipe} from \"../../pipe/localize.pipe\";\nimport {CoCurrencyPipe} from \"../../pipe/co-currency.pipe\";\nimport {SafeStylePipe} from \"../../pipe/safe-style-pipe\";\nimport {ImageDisplayComponent} from \"../common/image-display/image-display.component\";\nimport {NoImageDisplayComponent} from \"../common/no-image-display/no-image-display.component\";\nimport {IconComponent} from \"../common/icon/icon.component\";\n\n@NgModule({\n declarations: [\n AppendPipe,\n DeliveryTimePipe,\n DateDurationPipe,\n LocalizePipe,\n CoCurrencyPipe,\n SafeStylePipe,\n ImageDisplayComponent,\n NoImageDisplayComponent,\n IconComponent,\n ],\n exports: [\n LocalizePipe,\n CoCurrencyPipe,\n AppendPipe,\n DeliveryTimePipe,\n SafeStylePipe,\n CoCurrencyPipe,\n ImageDisplayComponent,\n NoImageDisplayComponent,\n IconComponent,\n ],\n imports: [\n CommonModule\n ]\n})\nexport class CoreModule { }\n","import {NgModule} from \"@angular/core\";\r\nimport {\r\n ButtonModule,\r\n CoDialogModule,\r\n CoDialogPromptModule,\r\n CoGridModule,\r\n CoSidebarModule,\r\n DropDownModule,\r\n FormModule,\r\n IconModule,\r\n InputCheckboxModule,\r\n InputComboBoxModule,\r\n InputDatePickerModule,\r\n InputNumberPickerModule,\r\n InputRadioButtonModule,\r\n InputTextModule,\r\n MultiSelectListModule,\r\n PopupModule,\r\n} from \"@colijnit/corecomponents_v12\";\r\nimport {FlexModule} from \"@angular/flex-layout\";\r\nimport {DictionaryService} from \"../../service/dictionary.service\";\r\nimport {CheckoutComponent} from \"./../checkout/checkout/checkout.component\";\r\nimport {CheckoutOverviewComponent} from \"./checkout-overview/checkout-overview.component\";\r\nimport {CheckoutOverviewBlockComponent} from \"./checkout-overview-block/checkout-overview-block.component\";\r\nimport {CheckoutOverviewRelationEditComponent} from \"./checkout-overview-relation-edit/checkout-overview-relation-edit.component\";\r\nimport {CheckoutOverviewRelationAddressComponent} from \"./checkout-overview-relation-address/checkout-overview-relation-address.component\";\r\nimport {CheckoutOverviewDeliveryEditComponent} from \"./checkout-overview-delivery-edit/checkout-overview-delivery-edit.component\";\r\nimport {RetailTransactionCheckoutComponent} from \"./retail-transaction-checkout/retail-transaction-checkout.component\";\r\nimport {CheckoutOverviewDeliveryAddressComponent} from \"./checkout-overview-delivery-address/checkout-overview-delivery-address.component\";\r\nimport {CheckOutRelationSuggestionsListComponent} from \"./checkout-relation-suggestions-list/checkout-relation-suggestions-list.component\";\r\nimport {CheckOutRelationSuggestionsListItemComponent} from \"./checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component\";\r\nimport {CheckoutLoginComponent} from \"./checkout-login/checkout-login.component\";\r\nimport {MatStepperModule} from \"@angular/material/stepper\";\r\nimport {TransactionService} from \"../../service/transaction.service\";\r\nimport {OptionsService} from \"../../service/options.service\";\r\nimport {IoneCheckoutComponent} from \"./ione-checkout.component\";\r\nimport {CoreModule} from \"../core/core.module\";\r\nimport {CommonModule} from \"@angular/common\";\r\n\r\n@NgModule({\r\n imports: [\r\n IconModule,\r\n InputTextModule,\r\n InputCheckboxModule,\r\n InputRadioButtonModule,\r\n FormModule,\r\n InputComboBoxModule,\r\n InputDatePickerModule,\r\n InputNumberPickerModule,\r\n CoDialogModule,\r\n CoDialogPromptModule,\r\n ButtonModule,\r\n FlexModule,\r\n MultiSelectListModule,\r\n MatStepperModule,\r\n DropDownModule,\r\n PopupModule.forRoot(),\r\n CoSidebarModule,\r\n CoGridModule,\r\n CoreModule,\r\n CommonModule,\r\n ],\r\n declarations: [\r\n CheckoutComponent,\r\n CheckoutOverviewComponent,\r\n CheckoutOverviewBlockComponent,\r\n CheckoutOverviewRelationEditComponent,\r\n CheckoutOverviewRelationAddressComponent,\r\n CheckoutOverviewDeliveryEditComponent,\r\n RetailTransactionCheckoutComponent,\r\n CheckoutOverviewDeliveryAddressComponent,\r\n CheckOutRelationSuggestionsListComponent,\r\n CheckOutRelationSuggestionsListItemComponent,\r\n CheckoutLoginComponent,\r\n IoneCheckoutComponent,\r\n ],\r\n providers: [\r\n DictionaryService,\r\n TransactionService,\r\n OptionsService\r\n ],\r\n entryComponents: [\r\n IoneCheckoutComponent\r\n ],\r\n exports: [IoneCheckoutComponent],\r\n bootstrap: [IoneCheckoutComponent]\r\n})\r\nexport class IoneCheckoutModule {}\r\n","export enum PositionGridRow {\r\n Before = \"before\",\r\n After = \"after\",\r\n}\r\n","import {Component, EventEmitter, Inject, OnDestroy, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {NumberUtils} from \"@colijnit/transactionapi/build/utils/number-utils\";\nimport {Subscription, throwError} from \"rxjs\";\nimport {TransactionEventService} from \"../../../service/transaction-event.service\";\nimport {CommissionCodeType} from \"@colijnit/transactionapi/build/enum/refcode/commission-code-type.enum\";\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\nimport {ResolvePendingLineReasonRequest} from \"@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo\";\nimport {TransactionLineType} from \"@colijnit/transactionapi/build/enum/transaction-line-type.enum\";\nimport {CoDomainValue} from \"@colijnit/transactionapi/build/model/co-domain-value.bo\";\nimport {TransactionArticleWarehouse} from \"@colijnit/transactionapi/build/model/transaction-article-warehouse.bo\";\nimport {LineOperationStatus} from \"@colijnit/transactionapi/build/model/line-operation-status.bo\";\nimport {CoDialogComponent, CoGridComponent, PromptService} from \"@colijnit/corecomponents_v12\";\nimport {PendingReasonType} from \"@colijnit/transactionapi/build/enum/pending-reason-type.enum\";\nimport {ArticleFullObject} from \"@colijnit/transactionapi/build/model/article-full-object\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {LineOperationResponse} from \"@colijnit/transactionapi/build/model/line-operation-response.bo\";\nimport {CharacteristicAnswerComponent} from \"../characteristic-answer/characteristic-answer.component\";\nimport {PositionGridRow} from \"../../../../enum/position-grid-row.enum\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"shopping-cart-manager\",\n template: `\n <co-dialog #warehouseDialog\n (closeClick)=\"hide()\"\n (overlayClick)=\"onStockManagerCancelClick()\"\n >\n <ng-container header>{{ 'STOCK_NOTIFICATION' | localize }}</ng-container>\n\n <ng-container content>\n <co-form>\n <div class=\"form-content\">\n <span *ngIf=\"message\" class=\"message-field\" [textContent]=\"message | localize\"></span>\n <div class=\"commission-fields\" fxLayout=\"row\">\n <co-input-number-picker class=\"horizontal\" [(model)]=\"amount\" [min]=\"0\" decimals=\"3\"></co-input-number-picker>\n <co-input-combo-box [(model)]=\"commissionCode\"\n [source]=\"commissionCodes\"\n [fields]=\"commissionFields\"\n [placeholder]=\"'COMMISSION_CODE' | localize\"\n [required]=\"true\"\n ></co-input-combo-box>\n </div>\n <div>\n <co-grid #warehouseGrid\n [data]=\"transactionArticleWarehouses\"\n [columns]=\"columns\"\n [pagingEnabled]=\"'true'\"\n [maxNumberOfRows]=\"'20'\"\n (rowsSelected)=\"handleRowsSelected($event)\"\n ></co-grid>\n </div>\n </div>\n </co-form>\n </ng-container>\n\n <ng-container footer>\n <div class=\"flex-center\">\n <co-button [label]=\"'OK' | localize\" (click)=\"onStockManagerOkClick()\"></co-button>\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"onStockManagerCancelClick()\"></co-button>\n </div>\n </ng-container>\n </co-dialog>\n\n <characteristic-answer\n #characteristicAnswer\n (okClick)=\"handleCharacteristicAnswerOkClick($event)\"\n ></characteristic-answer>\n `,\n styleUrls: [\"./shopping-cart-manager.component.scss\"]\n})\nexport class ShoppingCartManagerComponent implements OnInit, OnDestroy {\n @ViewChild(\"warehouseDialog\")\n public warehouseDialog: CoDialogComponent;\n\n @ViewChild(\"warehouseGrid\")\n public warehouseGrid: CoGridComponent<any>;\n\n @ViewChild(\"characteristicAnswer\")\n public characteristicAnswer: CharacteristicAnswerComponent;\n\n @Output()\n public readonly linesChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n public readonly openCart: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n public readonly articleAdded: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public get amountOfLines(): number {\n return NumberUtils.NrOrDefault(this.service.articleAmount, 0);\n }\n\n public get showCharacteristicDialog(): boolean {\n return this._showCharacteristic;\n }\n\n public set showCharacteristicDialog(value: boolean) {\n this._showCharacteristic = value;\n }\n\n public branchNr: string;\n public newArticleNr: string;\n public newArticle: ArticleFullObject;\n public selectedWarehouseNr: number;\n public amount: number;\n public isReturn: boolean = false;\n\n public waitForLinesChangedToOpenCart: boolean = false;\n public message: string = \"CHECK_WAREHOUSE_AND_COMMISSIONCODE\";\n\n public commissionCode: CommissionCodeType;\n public commissionCodes: CoDomainValue[] = [];\n public commissionFields: Object = { text: \"description\", value: \"code\" };\n\n public transactionArticleWarehouses: TransactionArticleWarehouse[] = [];\n public transactionArticleWarehouseFields: Object = { text: \"warehouseDesc\", value: \"warehouseNr\" };\n public columns: any[] = [];\n\n public currentPendingLine: TransactionLineInfo;\n public currentReason: ResolvePendingLineReasonRequest;\n public editingLine: TransactionLineInfo;\n\n public dialogPromptHeader: string = \"\";\n\n public rootElement: HTMLElement = null;\n\n private _subscriptions: Subscription[] = [];\n private currentOperationStatus: LineOperationStatus;\n private _inOutCollection: CoDomainValue[] = [];\n private _okOrCancelClick: boolean = false;\n private _showCharacteristic: boolean = false;\n\n constructor(\n public service: TransactionService,\n public transactionEvents: TransactionEventService,\n public promptService: PromptService,\n public _dictionaryService: DictionaryService,\n ) {\n this._subscriptions.push(\n this.service.transactionUpdated.subscribe(() => {\n this.linesChanged.emit(this.waitForLinesChangedToOpenCart);\n this.waitForLinesChangedToOpenCart = false;\n }),\n\n this.transactionEvents.addToCartBySku.subscribe((params: {sku: string, amount: number, popCart: boolean}) => {\n this.waitForLinesChangedToOpenCart = params.popCart;\n this.addToCart(params.sku, params.amount).then();\n }),\n\n this.transactionEvents.addArticleLineAt.subscribe((params: {sku: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow}) => {\n this.addArticleLineToCartAt(params.sku, params.amount, params.lineNr, params.beforeOrAfter).then();\n }),\n\n this.transactionEvents.addTextLineAt.subscribe((params: {text: string, lineNr: number, beforeOrAfter: PositionGridRow}) => {\n this.addTextLineToCartAt(params.text, params.lineNr, params.beforeOrAfter).then();\n }),\n\n this.transactionEvents.changeLineSequence.subscribe((params: {fromIndex: number, toIndex: number}) => {\n this.changeLineSequence(params.fromIndex, params.toIndex).then();\n }),\n\n this.transactionEvents.addToCartBySelectorResult.subscribe(\n (params: {selectorResult: {goodId: number, baseGoodId: number, selectorData: any, quantity: number}, popCart: boolean}) => {\n this.waitForLinesChangedToOpenCart = params.popCart;\n this.addToCartBySelectorResult(params.selectorResult).then();\n }),\n\n this.transactionEvents.openShoppingCartModule.subscribe(() => {\n this.openCart.emit(false);\n }),\n\n this.transactionEvents.addUserRelationShoppingCartModule.subscribe((login: {user: string, pw: string}) => {\n this.addUserRelationToTransactionAndLogin(login.user, login.pw);\n }),\n\n this.transactionEvents.addNewUserToShoppingCartModule.subscribe((emailAddress) => {\n this.addEmailAddressToTransaction(emailAddress);\n })\n );\n\n this.columns.push(\n {field: \"warehouseNr\", headerText: this._dictionaryService.get(\"WAREHOUSE\"), allowFiltering: false},\n {field: \"warehouseDesc\", headerText: this._dictionaryService.get(\"DESCRIPTION\")},\n {field: \"stockAmount\", headerText: this._dictionaryService.get(\"STOCK\")}\n );\n\n }\n\n async ngOnInit(): Promise<void> {\n this.commissionCodes = await this.service.getCommissionCodes(\"NL\");\n this.linesChanged.emit(this.waitForLinesChangedToOpenCart);\n this.waitForLinesChangedToOpenCart = false;\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(sub => sub.unsubscribe());\n this.warehouseDialog.close();\n }\n\n public async addToCart(sku: string, amount: number): Promise<void> {\n const goodId: number = await this.service.getGoodIdFromArticleNr(sku);\n await this._loadArticle(goodId);\n await this._createTransaction();\n await this._handleAddArticle(amount);\n this.articleAdded.emit();\n }\n\n public async addArticleLineToCartAt(sku: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow): Promise<void> {\n const goodId: number = await this.service.getGoodIdFromArticleNr(sku);\n await this._loadArticle(goodId);\n await this._createTransaction();\n await this._handleAddArticleLineAt(amount, lineNr, beforeOrAfter);\n this.articleAdded.emit();\n }\n\n public async addTextLineToCartAt(text: string, lineNr: number, beforeOrAfter: PositionGridRow): Promise<void> {\n await this.service.addTextLineToTransaction(0, text, 0, false, 0,\n beforeOrAfter === PositionGridRow.Before ? lineNr : undefined,\n beforeOrAfter === PositionGridRow.After ? lineNr : undefined)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n },\n (error) => this.promptService.showError(error));\n }\n\n public async changeLineSequence(fromIndex: number, toIndex: number): Promise<void> {\n let fromLine: TransactionLineInfo = this._getTransactionLineInfoByIndex(fromIndex)\n let toLine: TransactionLineInfo = this._getTransactionLineInfoByIndex(toIndex);\n let aboveLineNr: number;\n let belowLineNr: number;\n\n if (fromIndex > toIndex) {\n aboveLineNr = toLine.lineNr;\n } else {\n belowLineNr = toLine.lineNr;\n }\n\n await this.service.changeLineSequence(fromLine.uuid, aboveLineNr, belowLineNr)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n },\n (error) => this.promptService.showError(error));\n }\n\n public async addToCartBySelectorResult(result: {goodId: number, baseGoodId: number, selectorData: any, quantity: number}): Promise<void> {\n await this._loadArticle(result.goodId);\n await this._createTransaction();\n await this._handleAddArticle(result.quantity);\n this.articleAdded.emit();\n }\n\n // TODO public user logs in.... how reconnect the Connector?\n public async addUserRelationToTransactionAndLogin(userName: string, password: string): Promise<void> {\n const success: boolean = await this.service.setRelationByUser(userName, password);\n if (success) {\n this.transactionEvents.loggedIn.next();\n }\n }\n\n public async showStockManager(line: TransactionLineInfo): Promise<void> {\n this.selectedWarehouseNr = line.warehouseNumber;\n this.amount = line.amount;\n this.commissionCode = line.commissionCode;\n this.show(line.articleNumber);\n }\n\n public async hide(): Promise<void> {\n if (this._okOrCancelClick) {\n this._okOrCancelClick = false;\n return;\n }\n await this.onStockManagerCancelClick();\n }\n\n public show(articleNr: string): void {\n this._reloadDataCollections(articleNr).then();\n\n this.message = this.currentOperationStatus.pendingReason;\n this.warehouseGrid.selectRow(this.selectedWarehouseNr);\n this.warehouseDialog.targetElement = null;\n this.warehouseDialog.open();\n }\n\n public async onStockManagerCancelClick(): Promise<void> {\n this._okOrCancelClick = true;\n this.warehouseDialog.close();\n\n if (this.currentReason) {\n await this.service.cancelAddTransactionLine(this.currentReason.lineUuid);\n }\n\n this.editingLine = undefined;\n }\n\n public async onStockManagerOkClick(): Promise<void> {\n this._okOrCancelClick = true;\n this.warehouseDialog.close();\n\n if (this.commissionCode !== undefined) {\n this.currentReason.commissionCode = this.commissionCode.valueOf();\n }\n\n if (this.amount !== undefined) {\n this.currentReason.quantity = this.amount.valueOf();\n }\n\n if (this.selectedWarehouseNr !== undefined) {\n this.currentReason.warehouseNr = this.selectedWarehouseNr;\n }\n\n if (this.currentReason) {\n await this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n } else {\n if (this.editingLine === undefined) {\n await this.service.addTransactionLine(TransactionLineType.ArticleLine, this.newArticleNr, this.amount, this.selectedWarehouseNr, this.commissionCode, this.isReturn, 0, 0)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n } else {\n await this.service.changeTransactionLineQuantity(this.editingLine.uuid, this.amount)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n }\n }\n\n this.editingLine = undefined;\n }\n\n public handleRowsSelected(rows: any): void {\n this.selectedWarehouseNr = (rows.find(x => x !== undefined)).warehouseNr;\n }\n\n public async handleCharacteristicAnswerOkClick(answer: string): Promise<void> {\n this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);\n this.currentReason.textualUserInput = answer;\n await this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n }\n\n private async _reloadDataCollections(articleNr: string): Promise<void> {\n const goodId: number = await this.service.getGoodIdFromArticleNr(articleNr);\n this.transactionArticleWarehouses = await this.service.getTransactionArticleWarehouses(goodId);\n }\n\n private async _handleAddArticle(amount: number = 1): Promise<void> {\n await this.service.addTransactionLine(TransactionLineType.ArticleLine,\n this.newArticleNr,\n amount,\n this.newArticle.standardWareHouse,\n this.newArticle.commissionCode,\n false,\n 0,\n 0)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n },\n (error) => this.promptService.showError(error));\n }\n\n private async _handleAddArticleLineAt(amount: number, lineNr: number, beforeOrAfter: PositionGridRow): Promise<void> {\n await this.service.addTransactionLine(TransactionLineType.ArticleLine,\n this.newArticleNr,\n amount,\n this.newArticle.standardWareHouse,\n this.newArticle.commissionCode,\n false,\n beforeOrAfter === PositionGridRow.Before ? lineNr : undefined,\n beforeOrAfter === PositionGridRow.After ? lineNr : undefined)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n },\n (error) => this.promptService.showError(error));\n }\n\n private _getWareHouseNoFromArticle(): number {\n if (this.newArticle !== undefined && this.newArticle.stockLocations !== undefined && this.newArticle.stockLocations.length) {\n return this.newArticle.stockLocations[0].warehouseNr;\n }\n return 0;\n }\n\n private _isLineOperationStatus(): boolean {\n this.currentOperationStatus = this.service.currentLineOperationStatus;\n if (this.currentOperationStatus !== undefined) {\n return true;\n }\n return false;\n }\n\n private _checkIfShoppingCartNeedsToDisplay(): void {\n if (this.service.currentTransaction && this.service.currentTransaction.transactionNr) {\n this.linesChanged.emit(this.waitForLinesChangedToOpenCart);\n this.waitForLinesChangedToOpenCart = false;\n }\n }\n\n private async _confirmAction(): Promise<void> {\n this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);\n const pendingReasonText: string = await this._getPendingReasonText(this.currentOperationStatus.pendingReason);\n this.currentReason.confirmation = await this.promptService.showYesNo(pendingReasonText, \" \");\n await this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n }\n\n private async _showInformation(): Promise<void> {\n this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);\n const pendingReasonText: string = await this._getPendingReasonText(this.currentOperationStatus.pendingReason);\n await this.promptService.showOkModal(pendingReasonText, \" \");\n await this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLineOperationStatus();\n });\n }\n\n private async _getPendingReasonText(pendingReason: string): Promise<string> {\n if (pendingReason === \"ARTICLE_IS_DISCONTINUED_DO_YOU_WANT_TO_CONTINUE_PLEASE_CONFIRM\") {\n return this._dictionaryService.get(\"ARTICLE_IN_OUT_COLLECTION\").replace(\"|~\", await this.getInOutCollectionOfArticle());\n }\n return this._dictionaryService.get(pendingReason);\n }\n\n private async getInOutCollectionOfArticle(): Promise<string> {\n if (!this._inOutCollection.length) {\n this._inOutCollection = await this.service.getInOutCollection(\"NL\");\n }\n\n const domainValue: CoDomainValue = this._inOutCollection.find(element => element.code === this.newArticle.inOutCollection);\n if (domainValue) {\n return domainValue.description;\n }\n return \"\";\n }\n\n private async _handleLineOperationStatus(): Promise<void> {\n if (this._isLineOperationStatus()) {\n await this._handlePendingLine(this.currentOperationStatus.uuid).then();\n } else {\n this._checkIfShoppingCartNeedsToDisplay();\n }\n }\n\n private async _handlePendingLine(lineUuid: string): Promise<void> {\n this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);\n this.currentPendingLine = this.service.currentLines.find(l => l.uuid === lineUuid);\n\n switch (this.currentOperationStatus.pendingReasonType) {\n case PendingReasonType.ABORTED:\n case PendingReasonType.CANCELLED:\n this.service.cancelAddTransactionLine(this.currentPendingLine.uuid).then();\n break;\n case PendingReasonType.CONFIRMATION_NEEDED:\n await this._confirmAction();\n break;\n case PendingReasonType.INVALID_LOGISTICS:\n await this.showStockManager(this.currentPendingLine);\n break;\n case PendingReasonType.NON_CRITICAL_DISCONTINUATION:\n await this._showInformation();\n break;\n case PendingReasonType.CHARACTERISTICS_ANSWER_NEEDED:\n this.CharacteristicsAnswerNeeded();\n break;\n case PendingReasonType.NONE:\n default:\n this.currentReason = undefined;\n this.currentPendingLine = undefined;\n break;\n }\n }\n\n private async _createTransaction(): Promise<void> {\n if (!this.service.currentTransaction.transactionNr) {\n if (!await this.service.createTransaction()) {\n throwError(\"Failed to create transaction\");\n }\n }\n }\n\n private async _loadArticle(goodId: number): Promise<void> {\n this.newArticle = await this.service.getArticleFullObject(goodId);\n this.newArticleNr = this.newArticle.articleNr;\n }\n\n private addEmailAddressToTransaction(emailAddress: string): void {\n this.service.emailAddress = emailAddress;\n }\n\n private CharacteristicsAnswerNeeded(): void {\n this.characteristicAnswer.question = this.currentOperationStatus.characteristic.question;\n this.characteristicAnswer.title = this.newArticle.description;\n this.characteristicAnswer.value = this.currentOperationStatus.characteristic.value;\n this.characteristicAnswer.characteristics = this.currentOperationStatus.characteristic.transactionLineCharacteristicChoices;\n\n setTimeout(() => {\n this.characteristicAnswer.open();\n // eslint-disable-next-line no-magic-numbers\n }, 1000);\n\n }\n\n private _getLineUuidByLineNr(lineNr: number): string {\n const transactionLine: TransactionLineInfo[] = this.service.currentLines.filter(transLines => transLines.lineNr === lineNr);\n return transactionLine[0].uuid;\n }\n\n private _getTransactionLineInfoByIndex(index: number): TransactionLineInfo {\n if (index >= 0 && index < this.service.currentLines.length) {\n return this.service.currentLines[index]\n }\n }\n}\n","export enum OrderDiscountType {\r\n DiscountAmount = \"DISCOUNT_AMOUNT\",\r\n DiscountPercentage = \"DISCOUNT_PERCENTAGE\",\r\n OrderTotal = \"ORDER_TOTAL\"\r\n}\r\n","// The different view modes for content, e.g. list, grid, ..\r\nexport enum ContentViewMode {\r\n List,\r\n Grid,\r\n GridExpanded,\r\n MasterDetail,\r\n Timeline,\r\n}\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild\n} from \"@angular/core\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {OrderDiscountType} from \"../../../enum/order-discount-type.enum\";\nimport {BusinessObject} from \"@colijnit/transactionapi/build/model/business-object\";\nimport {SortProperty} from \"@colijnit/transactionapi/build/interface/sort-property\";\nimport {SortDirection} from \"@colijnit/transactionapi/build/enum/sort-direction\";\nimport {SortType} from \"@colijnit/transactionapi/build/enum/sort-type.enum\";\nimport {Subscription} from \"rxjs\";\nimport {CoreComponentsIcon, CoSidebarComponent, IconCacheService} from \"@colijnit/corecomponents_v12\";\nimport {TransactionEventService} from \"../../../service/transaction-event.service\";\nimport {ContentViewMode} from \"../../../enum/content-view-mode.enum\";\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\nimport {ContextMenuItemModel, RowDragEventArgs} from \"@syncfusion/ej2-angular-grids\";\nimport {MenuEventArgs} from \"@syncfusion/ej2-angular-navigations\";\nimport {PositionGridRow} from \"../../../../enum/position-grid-row.enum\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"shopping-cart\",\n template: `\n <div class=\"cart-header\">\n <span class=\"cart-header-label\" [textContent]=\"getCartLabel()\"></span>\n <div class=\"view-mode-buttons\">\n <co-button [iconData]=\"iconCacheService.getIcon(iconThickLines)\"\n [title]=\"'LIST_VIEW' | localize\"\n (click)=\"this.activeViewMode = viewModes.List\"\n class=\"triangle white\"\n iconClass=\"medium light\"></co-button>\n <co-button [iconData]=\"iconCacheService.getIcon(iconThinLines)\"\n [title]=\"'GRID_VIEW' | localize\"\n (click)=\"this.activeViewMode = viewModes.Grid\"\n class=\"triangle white\"\n iconClass=\"medium light\"></co-button>\n </div>\n </div>\n <div class=\"cart-lines\">\n <div class=\"cart-list-wrapper\" *ngIf=\"activeViewMode === viewModes.List\" fxFlex=\"column\">\n <shopping-cart-line [overlayMode]=\"overlayMode\" [overviewMode]=\"overviewMode\"\n *ngFor=\"let line of filteredCollection; trackBy:trackByFn;\"\n [line]=\"line\"\n ></shopping-cart-line>\n </div>\n <div class=\"cart-list-wrapper\" *ngIf=\"activeViewMode === viewModes.Grid\" fxFlex=\"column\">\n <co-grid\n [data]=\"filteredCollection\"\n [rowDragAndDropEnabled]=\"true\"\n [contextMenuItems]=\"contextMenuItems\"\n [sortingEnabled]=\"false\"\n [columns]=\"columns\"\n [pagingEnabled]=\"'true'\"\n [maxNumberOfRows]=\"'20'\"\n (rowsSelected)=\"handleRowsSelected($event)\"\n (contextMenuItemClick)=\"menuItemClick($event)\"\n (rowDropEvent)=\"rowDrop($event)\"\n ></co-grid>\n </div>\n </div>\n <div class=\"shopping-cart-totals\" fxLayout=\"column\" fxLayoutGap=\"10px\">\n <div fxLayout=\"row\">\n <span [textContent]=\"'ORDER_GROSS' | localize\"></span>\n <span [textContent]=\"service.currentTotals?.grossAmount | coCurrency: true\"></span>\n </div>\n <div fxLayout=\"row\" *ngIf=\"service.currentTotals?.discountAmount\">\n <span [textContent]=\"'DISCOUNT_AMOUNT' | localize\"></span>\n <span [textContent]=\"service.currentTotals?.discountAmount | coCurrency: true\"></span>\n </div>\n <div fxLayout=\"row\" *ngIf=\"service.currentTotals?.transactionDiscountAmount\">\n <span [textContent]=\"'TRANSACTION_DISCOUNT' | localize\"></span>\n <span [textContent]=\"service.currentTotals?.transactionDiscountAmount | coCurrency: true\"></span>\n </div>\n <div fxLayout=\"row\" *ngIf=\"service.currentTotals?.transactionDiscountPercentage\">\n <span [textContent]=\"'TRANSACTION_DISCOUNT_PERC' | localize\"></span>\n <span [textContent]=\"service.currentTotals?.transactionDiscountPercentage.toString() | append:' %'\"></span>\n </div>\n <div fxLayout=\"row\">\n <span [textContent]=\"'ORDER_NET'| localize\"></span>\n <span [textContent]=\"service.currentTotals?.netAmount | coCurrency: true\"></span>\n </div>\n <a (click)=\"addDiscount()\" [textContent]=\"'ADD_DISCOUNTS' | localize\"></a>\n </div>\n <div class=\"shopping-cart-row-end\">\n <co-button *ngIf=\"!hideOverviewButton\" [label]=\"'OVERVIEW' | localize\"\n (click)=\"overview.emit()\"\n ></co-button>\n <co-button *ngIf=\"!hideCloseCartButton\"[label]=\"'SHOPPING_CART_RESUME' | localize\"\n (click)=\"closeCart.emit()\"\n ></co-button>\n <co-button *ngIf=\"!hideCheckoutButton\" [label]=\"'SHOPPING_CART_CHECKOUT' | localize\"\n [disabled]=\"!service.articleAmount\"\n (click)=\"checkout.emit()\"></co-button>\n </div>\n\n <co-sidebar #discountsSidebar isOpen=\"false\" *ngIf=\"showDiscountsSidebar\">\n <div fxLayout=\"column\" fxLayoutGap=\"10px\">\n <co-button class=\"rectangular\" [label]=\"'TRANSACTION_DISCOUNT_PERC' | localize\"\n (click)=\"onStartDiscountInput(orderDiscountType.DiscountPercentage, 'TRANSACTION_DISCOUNT_PERC')\"></co-button>\n <co-button class=\"rectangular\" [label]=\"'TRANSACTION_DISCOUNT'| localize\"\n (click)=\"onStartDiscountInput(orderDiscountType.DiscountAmount, 'TRANSACTION_DISCOUNT')\"></co-button>\n <co-button class=\"rectangular\" [label]=\"'TRANSACTION_TOTAL'| localize\"\n (click)=\"onStartDiscountInput(orderDiscountType.OrderTotal, 'TRANSACTION_TOTAL')\"></co-button>\n\n </div>\n </co-sidebar>\n\n <co-dialog [visible]=\"inputDiscounts\">\n <ng-container header>{{ discountHeader | localize }}</ng-container>\n <co-form>\n <co-input-text\n *ngIf=\"discountType === orderDiscountType.DiscountPercentage\"\n [type]=\"'number'\"\n [(model)]=\"transactionDiscountPercentage\"\n [placeholder]=\"'TRANSACTION_DISCOUNT_PERC' | localize\"\n ></co-input-text>\n <co-input-text\n *ngIf=\"discountType === orderDiscountType.DiscountAmount\"\n [type]=\"'number'\"\n [(model)]=\"transactionDiscountAmount\"\n [placeholder]=\"'TRANSACTION_DISCOUNT' | localize\"\n ></co-input-text>\n <co-input-text\n *ngIf=\"discountType === orderDiscountType.OrderTotal\"\n [type]=\"'number'\"\n [(model)]=\"transactionTotal\"\n [placeholder]=\"'TRANSACTION_TOTAL' | localize\"\n ></co-input-text>\n\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end\">\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"inputDiscounts = false\"></co-button>\n <co-button [label]=\"'OK' | localize\" (click)=\"onInputDiscountsOkClick()\"></co-button>\n </div>\n </co-form>\n </co-dialog>\n `,\n styleUrls: [\n \"./shopping-cart.component.scss\",\n \"../shopping-cart-overview/shopping-cart-overview.component.scss\",\n ]\n})\nexport class ShoppingCartComponent implements AfterViewInit, OnDestroy {\n public readonly orderDiscountType: typeof OrderDiscountType = OrderDiscountType;\n public readonly iconThickLines: CoreComponentsIcon = CoreComponentsIcon.ThickLines;\n public readonly iconThinLines: CoreComponentsIcon = CoreComponentsIcon.ThinLines;\n public readonly viewModes: typeof ContentViewMode = ContentViewMode;\n\n\n @ViewChild(CoSidebarComponent, { static: false })\n public discountsSidebar: CoSidebarComponent;\n\n @Input()\n @HostBinding(\"class.overlayed\")\n public overlayMode: boolean;\n\n @Input()\n @HostBinding(\"class.overview\")\n public overviewMode: boolean;\n\n @Input()\n public hideOverviewButton: boolean = false;\n\n @Input()\n public hideCheckoutButton: boolean = false;\n\n @Input()\n public hideCloseCartButton: boolean = false;\n\n @Output()\n public closeCart: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public checkout: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public overview: EventEmitter<void> = new EventEmitter<void>();\n\n public get filteredCollection(): TransactionLineInfo[] {\n return this._filteredCollection;\n }\n\n public setFilteredCollection(value: BusinessObject[]): void {\n this._filteredCollection = (value as TransactionLineInfo[]);\n const sortByLineNr: SortProperty = {\n active: true,\n direction: SortDirection.Ascending,\n property: \"lineNr\",\n type: SortType.Number};\n// SortUtils.SortObjectArray(this._filteredCollection, [sortByLineNr]);\n }\n\n public discountHeader: string;\n public inputDiscounts: boolean;\n public transactionDiscountAmount: number;\n public transactionDiscountPercentage: number;\n public transactionTotal: number;\n public discountType: OrderDiscountType;\n\n public activeViewMode: ContentViewMode = ContentViewMode.List;\n public columns: any[] = [];\n\n public contextMenuItems: ContextMenuItemModel[] = [];\n\n public showDiscountsSidebar: boolean = false;\n private _filteredCollection: TransactionLineInfo[];\n private _transactionUpdated: Subscription;\n private _selectedRow: TransactionLineInfo;\n\n constructor(\n public iconCacheService: IconCacheService,\n private _dictionary: DictionaryService,\n public service: TransactionService,\n private _transactionEvents: TransactionEventService,\n private _changeDetector: ChangeDetectorRef\n ) {\n this._transactionUpdated = this.service.transactionUpdated.subscribe(() => {\n this.setFilteredCollection(this.service.currentLines);\n });\n this.setFilteredCollection(this.service.currentLines);\n\n const mediaQuery: string = \"(min-width: 500px)\";\n\n this.columns.push(\n {field: \"lineNr\", headerText: this._dictionary.get(\"NR\"), allowFiltering: false, allowSorting: false},\n {field: \"text\", headerText: this._dictionary.get(\"TEXT\")},\n {field: \"articleNumber\", headerText: this._dictionary.get(\"ARTICLE_NR\")},\n {field: \"goodDescription\", headerText: this._dictionary.get(\"GOOD_DESCRIPTION\"), hideAtMedia: mediaQuery},\n {field: \"amount\", headerText: this._dictionary.get(\"NUMBER\"), textAlign: \"Right\"},\n {field: \"price\", headerText: this._dictionary.get(\"PRICE\"), format: \"C2\", textAlign: \"Right\"},\n {field: \"priceListCode\", headerText: this._dictionary.get(\"PRICE_LIST\"), hideAtMedia: mediaQuery},\n {field: \"lineDiscount\", headerText: this._dictionary.get(\"DISCOUNT_PERCENTAGE\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"specialDiscount\", headerText: this._dictionary.get(\"SPECIAL_DISCOUNT\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"discountAmount\", headerText: this._dictionary.get(\"DISCOUNT_AMOUNT\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"surchargeAmount\", headerText: this._dictionary.get(\"SURCHARGE_AMOUNT\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"assemblyCost\", headerText: this._dictionary.get(\"ASSEMBLY_COSTS\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"grossLineTotal\", headerText: this._dictionary.get(\"TOTAL_GROSS\"), format: \"C2\", visible: true, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"lineTotalDiscountAmount\", headerText: this._dictionary.get(\"DISCOUNT\"), format: \"C2\", visible: false, hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"netLineTotal\", headerText: this._dictionary.get(\"SUBTOTAL\"), format: \"C2\", visible: false, textAlign: \"Right\"},\n {field: \"vatId\", headerText: this._dictionary.get(\"VAT\"), hideAtMedia: mediaQuery, visible: false, textAlign: \"Right\"},\n {field: \"priceDeclaration\", headerText: this._dictionary.get(\"TRANSACTION_PRICE_DECLARATION\"), visible: false, hideAtMedia: mediaQuery},\n {field: \"netto\", headerText: this._dictionary.get(\"NETT\"), format: \"C2\", hideAtMedia: mediaQuery, textAlign: \"Right\"},\n {field: \"warehouseNumber\", headerText: this._dictionary.get(\"WAREHOUSE\"), hideAtMedia: mediaQuery, textAlign: \"Right\"},\n );\n\n this.contextMenuItems.push(\n { text: this._dictionary.get(\"ADD_ARTICLE_LINE_UP\"), target: \".e-content\", id: \"articleLineUp\" },\n { text: this._dictionary.get(\"ADD_ARTICLE_LINE_DOWN\"), target: \".e-content\", id: \"articleLineDown\" },\n { text: this._dictionary.get(\"ADD_ARTICLE_TEXT_LINE_UP\"), target: \".e-content\", id: \"articleTextLineUp\" },\n { text: this._dictionary.get(\"ADD_ARTICLE_TEXT_LINE_DOWN\"), target: \".e-content\", id: \"articleTextLineDown\" }\n );\n }\n\n ngAfterViewInit(): void {\n this.hideSidebar();\n }\n\n ngOnDestroy(): void {\n this._transactionUpdated.unsubscribe();\n }\n\n public getCartLabel(): string {\n return this._dictionary.get(\"SHOPPING_CART_OVERVIEW\", true) + \"(\" + this.service.articleAmount.toString() + \")\";\n\n }\n\n public addDiscount(): void {\n this.showSidebar();\n\n // TODO\n // this.transactionDiscountPercentage = this.service.currentTransaction.transactionDiscountPercentage;\n // this.transactionDiscountAmount = this.service.currentTransaction.transactionDiscountAmount;\n // this.transactionTotal = undefined;\n }\n\n public onStartDiscountInput(discountType: OrderDiscountType, header: string): void {\n this.hideSidebar();\n\n this.discountType = discountType;\n this.discountHeader = header;\n this.inputDiscounts = true;\n }\n\n public openShoppingCartModule(): void {\n this._transactionEvents.openShoppingCartModule.next();\n this.closeCart.emit();\n }\n\n public setDiscountHeader(discountType: OrderDiscountType): void {\n switch (this.discountType) {\n case OrderDiscountType.DiscountPercentage:\n this.discountHeader = this._dictionary.get(\"DISCOUNT_PERCENTAGE\", true);\n break;\n case OrderDiscountType.DiscountAmount:\n this.discountHeader = this._dictionary.get(\"DISCOUNT_AMOUNT\", true);\n break;\n case OrderDiscountType.OrderTotal:\n this.discountHeader = this._dictionary.get(\"ORDER_TOTAL\", true);\n break;\n }\n }\n\n public onInputDiscountsOkClick(): void {\n let valueToUse: number;\n switch (this.discountType) {\n case OrderDiscountType.DiscountPercentage:\n valueToUse = this.transactionDiscountPercentage;\n break;\n case OrderDiscountType.DiscountAmount:\n valueToUse = this.transactionDiscountAmount;\n break;\n case OrderDiscountType.OrderTotal:\n valueToUse = this.transactionTotal;\n break;\n }\n //TODO this.service.setTransactionDiscounts(this.service.currentTransaction.uuid, this.discountType, valueToUse);\n this.inputDiscounts = false;\n }\n\n public trackByFn(index: number, line: TransactionLineInfo): any {\n return line.lineNr;\n }\n\n public handleRowsSelected(rows: any): void {\n this._selectedRow = rows.find(x => x !== undefined);\n }\n\n public showSidebar(): void {\n this.showDiscountsSidebar = true;\n this._changeDetector.detectChanges();\n\n if (this.discountsSidebar) {\n this.discountsSidebar.show();\n }\n }\n\n public hideSidebar(): void {\n this.showDiscountsSidebar = false;\n this._changeDetector.detectChanges();\n\n if (this.discountsSidebar) {\n this.discountsSidebar.hide();\n }\n }\n\n public menuItemClick(args: MenuEventArgs): void {\n const lineNr: number = this._selectedRow.lineNr;\n switch (args.item.id) {\n case \"articleLineUp\":\n// this._transactionEvents.addArticleLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});\n this._transactionEvents.addArticleLineAt.next({sku: \"iPod\", amount: 1, lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});\n break;\n case \"articleLineDown\":\n// this._transactionEvents.addArticleLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.After});\n this._transactionEvents.addArticleLineAt.next({sku: \"iPod\", amount: 1, lineNr: lineNr, beforeOrAfter: PositionGridRow.After});\n break;\n case \"articleTextLineUp\":\n// this._transactionEvents.addTextLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});\n this._transactionEvents.addTextLineAt.next({text: \"textregel before\", lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});\n break;\n case \"articleTextLineDown\":\n// this._transactionEvents.addTextLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.After});\n this._transactionEvents.addTextLineAt.next({text: \"textregel after\", lineNr: lineNr, beforeOrAfter: PositionGridRow.After});\n break;\n\n }\n }\n\n public rowDrop(args: RowDragEventArgs): void {\n this._transactionEvents.changeLineSequence.next({fromIndex: args.fromIndex, toIndex: args.dropIndex});\n\n // Transaction lines will be reloaded by previous action on success, not by failure. So, cancel the drop in all cases.\n args.cancel = true;\n }\n}\n","import {ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {OptionsService} from \"../../service/options.service\";\nimport {ShoppingCartManagerComponent} from \"./shopping-cart-manager/shopping-cart-manager.component\";\nimport {ShoppingCartComponent} from \"./shopping-cart/shopping-cart.component\";\nimport {TransactionService} from \"../../service/transaction.service\";\nimport {DictionaryService} from \"../../service/dictionary.service\";\nimport {IOneConnectorAdapterService} from \"../../service/ione-connector-adapter.service\";\nimport {TransactionEventService} from \"../../service/transaction-event.service\";\nimport {PromptService} from \"@colijnit/corecomponents_v12\";\nimport {PositionGridRow} from \"../../../enum/position-grid-row.enum\";\n\n// <co-sidebar #catalogSidebar isOpen=\"false\" *ngIf=\"showCatalogSidebar\">\n// <div class=\"relation-sidebar-header\">\n// <label [textContent]=\"'ARTICLE' | localize \"\n// class=\"checkout-label-h3\"\n// ></label>\n// </div>\n// <app-ione-catalog\n// [settings]=\"options\"\n// [parameters]=\"{publicationCode: 71}\"\n// (onAddToCart)=\"addToCart($event)\"\n// (onAddArticleButtonClick)=\"addArticleButtonClick($event)\"\n// ></app-ione-catalog>\n// </co-sidebar>\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"ione-shopping-cart\",\n template: `\n <ng-container *ngIf=\"upAndLoaded\">\n <shopping-cart-manager\n (linesChanged)=\"linesChanged($event)\"\n ></shopping-cart-manager>\n </ng-container>\n <ng-container *ngIf=\"show\">\n <shopping-cart\n [hideOverviewButton]=\"hideOverviewButton\"\n [hideCloseCartButton]=\"hideCloseCartButton\"\n [hideCheckoutButton]=\"hideCheckoutButton\"\n (overview)=\"onOverviewButtonClicked()\"\n (closeCart)=\"onCloseCartButtonClicked()\"\n (checkout)=\"onCheckoutButtonClicked()\"\n ></shopping-cart>\n </ng-container>\n `\n})\nexport class IoneShoppingCartComponent implements OnInit, OnDestroy {\n @ViewChild(ShoppingCartManagerComponent)\n public manager: ShoppingCartManagerComponent;\n\n @ViewChild(ShoppingCartComponent)\n public shoppingCart: ShoppingCartComponent;\n\n @Input()\n public set options(value: any) {\n if (value) {\n if (typeof value === \"string\") {\n this._options = JSON.parse(value);\n } else {\n this._options = value;\n }\n this._publicOptions = true;\n this._optionsService.initialize(this._options).then();\n }\n }\n\n @Input()\n public hideOverviewButton: boolean = false;\n\n @Input()\n public hideCheckoutButton: boolean = false;\n\n @Input()\n public hideCloseCartButton: boolean = false;\n\n @Output()\n public closeCart: EventEmitter<void> = new EventEmitter<void>();\n\n @Output( )\n public checkout: EventEmitter<void> = new EventEmitter<void>();\n\n @Output( )\n public overview: EventEmitter<void> = new EventEmitter<void>();\n\n @Output( )\n public addArticleLine: EventEmitter<{ lineNr: number; beforeOrAfter: PositionGridRow }> = new EventEmitter<{ lineNr: number; beforeOrAfter: PositionGridRow }>();\n\n @Output( )\n public addTextLine: EventEmitter<{ lineNr: number; beforeOrAfter: PositionGridRow }> = new EventEmitter<{ lineNr: number; beforeOrAfter: PositionGridRow }>();\n\n public get transactionNr(): number {\n return this._service.currentTransaction.transactionNr;\n }\n\n public get options(): any {\n return this._options;\n }\n\n public showCatalogSidebar: boolean = false;\n public currentArticleLineNr: number = 0;\n public currentPositionGridRow: PositionGridRow = PositionGridRow.After;\n\n public show: boolean = false;\n public amountOfLines: number = 0;\n public upAndLoaded: boolean = false;\n public overviewMode: boolean = true;\n\n private _subscriptions: Subscription[] = [];\n private _remoteOptions: boolean = true;\n private _publicOptions: boolean = true;\n private _options: any;\n\n constructor(\n public _changeDetector: ChangeDetectorRef,\n public _optionsService: OptionsService,\n public _connector: IOneConnectorAdapterService,\n public _dictionary: DictionaryService,\n public _service: TransactionService,\n public transactionEvents: TransactionEventService,\n public _promptService: PromptService\n ) {\n this._subscriptions.push(\n this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),\n this.transactionEvents.addArticleLine.subscribe(args => this._handleAddArticleLine(args)),\n this.transactionEvents.addTextLine.subscribe(args => this._handleAddTextLine(args))\n );\n }\n\n ngOnInit(): void {\n if (!this._publicOptions) {\n this._optionsService.initializeDevelopmentOptions(this._remoteOptions);\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n public onCloseCartButtonClicked(): void {\n this.closeCart.emit();\n }\n\n public onCheckoutButtonClicked(): void {\n this.checkout.emit();\n }\n\n public onOverviewButtonClicked(): void {\n this.overview.emit();\n }\n\n public linesChanged(openCart: boolean): void {\n this.amountOfLines = this.manager ? this.manager.amountOfLines : 0;\n }\n\n public addArticle(articleNo: string, amount: number): void {\n this.transactionEvents.addToCartBySku.next({sku: articleNo, amount: amount, popCart: true});\n }\n\n public addArticleButtonClick(article: any) {\n this.transactionEvents.addArticleLineAt.next({sku: article.articleNumber, amount: 1, lineNr: this.currentArticleLineNr, beforeOrAfter: this.currentPositionGridRow});\n }\n\n public addToCart(article: any) {\n this.transactionEvents.addArticleLineAt.next({sku: article.articleNumber, amount: 1, lineNr: this.currentArticleLineNr, beforeOrAfter: this.currentPositionGridRow});\n }\n\n public addArticleLineAt(articleNo: string, amount: number, lineNr: number, beforeOrAfter: PositionGridRow) {\n this.transactionEvents.addArticleLineAt.next({sku: articleNo, amount: amount, lineNr: lineNr, beforeOrAfter: beforeOrAfter});\n }\n\n public addTextLineAt(text: string, lineNr: number, beforeOrAfter: PositionGridRow) {\n this.transactionEvents.addTextLineAt.next({text: text, lineNr: lineNr, beforeOrAfter: beforeOrAfter});\n }\n\n public addArticleByBySelectorResult(selectorResult: { selectorData: {}; quantity: number; baseGoodId: number; goodId: number }, popCart: boolean): void {\n this.transactionEvents.addToCartBySelectorResult.next({selectorResult: selectorResult, popCart: popCart});\n }\n\n private async _handleSettingsLoaded(loaded: boolean): Promise<void> {\n if (loaded) {\n await this._initConnection().then();\n this.upAndLoaded = true;\n }\n }\n\n private async _initConnection(): Promise<void> {\n await this._connector.connect(this._optionsService.options);\n\n if (this._optionsService.options.url) {\n this._dictionary.rootUrl = this._optionsService.options.url.replace(\"/ajaxservice\", \"\");\n }\n await this._dictionary.setDictionary(this._optionsService.options.languageCode);\n setTimeout(() => {\n this._changeDetector.detectChanges();\n });\n }\n\n private _handleAddArticleLine(args: { lineNr: number; beforeOrAfter: PositionGridRow }) {\n //this.addArticleLine.next(args);\n this.showCatalogSidebar = true;\n this.currentArticleLineNr = args.lineNr;\n this.currentPositionGridRow = args.beforeOrAfter;\n }\n\n private _handleAddTextLine(args: { lineNr: number; beforeOrAfter: PositionGridRow }) {\n this.addTextLine.next(args);\n }\n}\n","import {AfterViewInit, Component, HostBinding, Inject, Input} from \"@angular/core\";\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\nimport {StockStatus} from \"@colijnit/transactionapi/build/enum/refcode/stock-status.enum\";\nimport {TransactionService} from \"../../../service/transaction.service\";\nimport {CoreComponentsIcon, IconCacheService, PromptService} from \"@colijnit/corecomponents_v12\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\nimport {ResolvePendingLineReasonRequest} from \"@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo\";\nimport {PendingReasonType} from \"@colijnit/transactionapi/build/enum/pending-reason-type.enum\";\nimport {LineOperationResponse} from \"@colijnit/transactionapi/build/model/line-operation-response.bo\";\n\n@Component({\n selector: \"shopping-cart-line\",\n template: `\n <div *ngIf=\"line.isArticle\" class=\"cart-line-r\" fxFlex>\n <div fxLayout=\"row\" class=\"full-width\">\n <div fxLayout=\"column\" class=\"cart-line-image\" *ngIf=\"!overviewMode\">\n <co-button [iconData]=\"iconCacheService.getIcon(iconTrashBin)\"\n [title]=\"'DELETE_TRANSACTION_LINE_HINT' | localize\"\n (click)=\"deleteTransactionLineClick()\"\n class=\"triangle white\"\n iconClass=\"medium light\"></co-button>\n </div>\n <div fxLayout=\"column\" class=\"cart-line-image\" *ngIf=\"!overviewMode\">\n <image-display [model]=\"image\" hideOnEmptyModel></image-display>\n </div>\n <div fxLayout=\"column\" class=\"cart-line-description\" fxLayoutGap=\"20px\">\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\n <span [textContent]=\"line.goodDescription\" class=\"cart-line-description-main\"></span>\n <span *ngIf=\"line.goodDescription && line.articleNumber\">|</span>\n <span [textContent]=\"line.articleNumber\" class=\"cart-line-description-artnr\"></span>\n </div>\n <span [innerHTML]=\"line.configurationReadable\"></span>\n </div>\n </div>\n <div fxLayout=\"row\" class=\"cart-line-right\">\n <div fxLayout=\"column\" class=\"cart-line-stock\" *ngIf=\"!overlayMode && !overviewMode\">\n <span [textContent]=\"'STOCK' | localize\" class=\"small-font\"></span>\n <stock-status-indicator [model]=\"stock\"></stock-status-indicator>\n <span [textContent]=\"'DELIVERY_TIME_PERIOD' | localize\" class=\"small-font\"></span>\n <span [textContent]=\"line.deliveryDate | deliveryTime\"></span>\n </div>\n <div class=\"cart-line-amount\">\n <co-input-number-picker\n class=\"horizontal\"\n [(model)]=\"localAmount\" [min]=\"0\" [buttonShowMode]=\"'always'\"\n [readonly]=\"true\"\n (modelChange)=\"changeLineAmount($event)\"></co-input-number-picker>\n </div>\n\n <div class=\"cart-line-totals\">\n <span [textContent]=\"line.displayNetLineTotal | coCurrency: true\"></span>\n </div>\n </div>\n </div>\n <div *ngIf=\"line.isText\" class=\"cart-line-t\" fxFlex\n [class.article-text]=\"line.articleBound\"\n [textContent]=\"line.text\">\n </div>\n `,\n styleUrls: [\"./shopping-cart-line.component.scss\"]\n})\nexport class ShoppingCartLineComponent implements AfterViewInit {\n public readonly iconTrashBin: CoreComponentsIcon = CoreComponentsIcon.TrashBin;\n\n @Input()\n @HostBinding(\"class.overlayed\")\n public overlayMode: boolean;\n\n @Input()\n @HostBinding(\"class.overview\")\n public overviewMode: boolean;\n\n @HostBinding(\"class.is-text\")\n public isText: boolean;\n\n @HostBinding(\"class.is-article\")\n public isArticle: boolean;\n\n @HostBinding(\"class.is-selected\")\n public isSelected: boolean;\n\n @Input()\n public get line(): TransactionLineInfo {\n return this._line;\n }\n\n public set line(value: TransactionLineInfo) {\n this._line = value;\n this.localAmount = this._line.amount;\n this.isText = this._line.isText;\n this.isArticle = this._line.isArticle;\n this.isSelected = this._line.isSelected;\n this._loadLineImage();\n }\n\n public localAmount: number;\n public image: string;\n public stock: StockStatus = StockStatus.Low;\n public currentReason: ResolvePendingLineReasonRequest;\n\n private _line: TransactionLineInfo;\n\n constructor(\n public iconCacheService: IconCacheService,\n public service: TransactionService,\n private _promptService: PromptService,\n private _dictionaryService: DictionaryService) {\n }\n\n ngAfterViewInit(): void {\n this._loadLineImage();\n }\n\n public changeLineAmount(amount: number): void {\n this.service.changeTransactionLineQuantity(this.line.uuid, amount).then((value: LineOperationResponse) => {\n if (!value || !value.isSuccess) {\n this.localAmount = this._line.amount;\n return;\n }\n this._handleLine(value).then();\n });\n }\n\n public async deleteTransactionLineClick(): Promise<void> {\n const deleteLine: boolean = await this._promptService.showYesNo(this._dictionaryService.get(\"DELETE_TRANSACTION_LINE\"), \" \");\n if (deleteLine) {\n this.service.deleteTransactionLine(this.service.currentTransaction.uuid, this.line.uuid).then((value: LineOperationResponse) => {\n this._handleLine(value);\n });\n }\n }\n\n private async _loadLineImage(): Promise<void> {\n this.image = this.line ? await this.service.retrieveLineImage(this.line) : undefined;\n }\n\n\n private async _confirmAction(lineOperationResponse: LineOperationResponse): Promise<void> {\n this.currentReason.confirmation = await this._promptService.showYesNo(lineOperationResponse.pendingReason, \" \");\n this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLine(value);\n });\n }\n\n private async _showInformation(lineOperationResponse: LineOperationResponse): Promise<void> {\n await this._promptService.showOkModal(lineOperationResponse.pendingReason, \" \");\n this.service.resolvePendingLineReason(this.currentReason)\n .then((value: LineOperationResponse) => {\n this._handleLine(value);\n });\n }\n\n private async _handleLine(lineOperationResponse: LineOperationResponse): Promise<void> {\n if (lineOperationResponse === undefined) {\n return;\n }\n this.currentReason = new ResolvePendingLineReasonRequest(lineOperationResponse.lineUuid,\n lineOperationResponse.pendingReason, lineOperationResponse.pendingReasonType);\n\n switch (lineOperationResponse.pendingReasonType) {\n case PendingReasonType.ABORTED:\n case PendingReasonType.CANCELLED:\n this.localAmount = this._line.amount;\n if (lineOperationResponse.pendingReason !== \"USER_DECISION\") {\n await this._promptService.showNotification(this._dictionaryService.get(lineOperationResponse.pendingReason), \" \");\n }\n break;\n case PendingReasonType.CONFIRMATION_NEEDED:\n await this._confirmAction(lineOperationResponse);\n break;\n case PendingReasonType.NON_CRITICAL_DISCONTINUATION:\n await this._showInformation(lineOperationResponse);\n break;\n case PendingReasonType.INVALID_LOGISTICS:\n this.localAmount = this._line.amount;\n await this._promptService.showError(this._dictionaryService.get(lineOperationResponse.pendingReason), \" \");\n break;\n case PendingReasonType.NONE:\n default:\n break;\n }\n }\n\n}\n","import {Component, Input, OnInit} from \"@angular/core\";\nimport {StockStatus} from \"@colijnit/transactionapi/build/enum/refcode/stock-status.enum\";\n\n@Component({\n selector: \"stock-status-indicator\",\n template: `\n <div [class]=\"stockClass\">\n <div class=\"square-1\"></div>\n <div class=\"square-2\"></div>\n <div class=\"square-3\"></div>\n </div>\n `,\n styleUrls: [\n \"./stock-status-indicator.component.scss\"\n ]\n})\n// Component that visually shows a stock status with three colored boxes.\nexport class StockStatusIndicatorComponent {\n @Input()\n public model: StockStatus;\n\n public get stockClass(): string {\n return this.model;\n }\n}\n","import {Component, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from \"@angular/core\";\nimport {CoDialogComponent} from \"@colijnit/corecomponents_v12\";\nimport {CoDomainValue} from \"@colijnit/transactionapi/build/model/co-domain-value.bo\";\nimport {TransactionLineCharacteristicChoice} from \"@colijnit/transactionapi/build/model/transactionLineCharacteristicChoice.bo\";\nimport {DictionaryService} from \"../../../service/dictionary.service\";\n\n@Component({\n selector: \"characteristic-answer\",\n template: `\n <co-dialog\n #characteristic\n [showCloseIcon]=\"false\"\n >\n <ng-container header>\n <div>\n <span class=\"characteristic-title\"\n [textContent]=\"getTranslationWithColon('ARTICLE')\"\n ></span>\n <span [textContent]=\"title\"></span>\n </div>\n </ng-container>\n\n <ng-container>\n <div>\n <div class=\"characteristic-header\">\n <span class=\"characteristic-title\"\n [textContent]=\"getTranslationWithColon('CHARACTERISTIC_QUESTION')\"\n ></span>\n </div>\n <div class=\"characteristic-header\">\n <span [textContent]=\"question | localize\"></span>\n </div>\n <div *ngIf=\"characteristicOptions\" class=\"npm characteristic-options\">\n <co-input-combo-box [(model)]=\"value\"\n [source]=\"characteristics\"\n [fields]=\"characteristicsFields\"\n [placeholder]=\"'VALUE' | localize\"\n [required]=\"true\"\n ></co-input-combo-box>\n </div>\n <div *ngIf=\"!characteristicOptions\" class=\"characteristic-value\">\n <co-input-text\n [(model)]=\"value\"\n [placeholder]=\"'VALUE' | localize \"\n required\n ></co-input-text>\n </div>\n </div>\n </ng-container>\n\n <ng-container footer>\n <div class=\"flex-center\">\n <co-button [label]=\"'OK' | localize\" (click)=\"onCharacteristicOkClick()\"></co-button>\n </div>\n </ng-container>\n </co-dialog>\n `,\n styleUrls: [\"./characteristic-answer.component.scss\"]\n})\nexport class CharacteristicAnswerComponent implements OnInit {\n @ViewChild(\"characteristic\")\n public characteristicDialog: CoDialogComponent;\n\n @Input()\n public title: string = \"\";\n\n @Input()\n public question: string = \"\";\n\n @Output()\n public readonly okClick: EventEmitter<string> = new EventEmitter<string>();\n\n public get characteristicOptions(): boolean {\n return this.characteristics.length > 0;\n }\n public value: string;\n\n public characteristics: TransactionLineCharacteristicChoice[] = [];\n\n public characteristicsCodes: TransactionLineCharacteristicChoice[] = [];\n public characteristicsFields: Object = { text: \"value\", value: \"value\" };\n\n constructor(\n private _dictionaryService: DictionaryService,\n ) { }\n\n ngOnInit(): void {\n }\n\n public getTranslationWithColon(text: string): string {\n return this._dictionaryService.get(text) + \":\";\n }\n\n public open(): void {\n this.characteristicDialog.open();\n }\n\n public close(): void {\n this.characteristicDialog.close();\n }\n\n public async onCharacteristicOkClick(): Promise<void> {\n this.close();\n this.okClick.emit(this.value);\n }\n}\n","import {NgModule} from \"@angular/core\";\nimport {\n ButtonModule,\n CoDialogModule,\n CoDialogPromptModule,\n CoGridModule,\n CoSidebarModule,\n DropDownModule,\n FormModule,\n IconModule,\n InputCheckboxModule,\n InputComboBoxModule,\n InputDatePickerModule,\n InputNumberPickerModule,\n InputRadioButtonModule,\n InputTextModule,\n MultiSelectListModule,\n PopupModule,\n} from \"@colijnit/corecomponents_v12\";\nimport {FlexModule} from \"@angular/flex-layout\";\nimport {DictionaryService} from \"../../service/dictionary.service\";\nimport {ShoppingCartManagerComponent} from \"./shopping-cart-manager/shopping-cart-manager.component\";\nimport {ShoppingCartComponent} from \"./shopping-cart/shopping-cart.component\";\nimport {ShoppingCartLineComponent} from \"./shopping-cart-line/shopping-cart-line.component\";\nimport {StockStatusIndicatorComponent} from \"../core/stock-status-indicator/stock-status-indicator.component\";\nimport {MatStepperModule} from \"@angular/material/stepper\";\nimport {TransactionService} from \"../../service/transaction.service\";\nimport {OptionsService} from \"../../service/options.service\";\nimport {IoneShoppingCartComponent} from \"./ione-shopping-cart.component\";\nimport {CoreModule} from \"../core/core.module\";\nimport {CharacteristicAnswerComponent} from \"./characteristic-answer/characteristic-answer.component\";\nimport {CommonModule} from \"@angular/common\";\n\n@NgModule({\n declarations: [\n ShoppingCartManagerComponent,\n ShoppingCartComponent,\n ShoppingCartLineComponent,\n StockStatusIndicatorComponent,\n IoneShoppingCartComponent,\n CharacteristicAnswerComponent,\n ],\n imports: [\n CommonModule,\n IconModule,\n InputTextModule,\n InputCheckboxModule,\n InputRadioButtonModule,\n FormModule,\n InputComboBoxModule,\n InputDatePickerModule,\n InputNumberPickerModule,\n CoDialogModule,\n CoDialogPromptModule,\n ButtonModule,\n FlexModule,\n MultiSelectListModule,\n MatStepperModule,\n DropDownModule,\n PopupModule.forRoot(),\n CoSidebarModule,\n CoGridModule,\n CoreModule\n ],\n providers: [\n DictionaryService,\n TransactionService,\n OptionsService\n ],\n entryComponents: [\n IoneShoppingCartComponent\n ],\n exports: [IoneShoppingCartComponent, StockStatusIndicatorComponent],\n bootstrap: [IoneShoppingCartComponent]\n})\nexport class IoneShoppingCartModule {}\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter, Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild, ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {OptionsService} from \"../../service/options.service\";\r\nimport {DictionaryService} from \"../../service/dictionary.service\";\r\nimport {IOneConnectorAdapterService} from \"../../service/ione-connector-adapter.service\";\r\nimport {TransactionService} from \"../../service/transaction.service\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"ione-service-order\",\r\n template: `\r\n <div>\r\n <service-order></service-order>\r\n </div>\r\n <transaction-sidebar-right></transaction-sidebar-right>\r\n `\r\n})\r\nexport class IoneServiceOrderComponent implements OnInit, OnDestroy {\r\n @Input()\r\n public set orderId(value: number) {\r\n this._orderId = value;\r\n this._getTransactionById(this._orderId);\r\n };\r\n\r\n @Input()\r\n public set options(value: any) {\r\n if (value) {\r\n let options: any;\r\n if (typeof value === \"string\") {\r\n options = JSON.parse(value);\r\n } else {\r\n options = value;\r\n }\r\n this._publicOptions = true;\r\n this._optionsService.initialize(options).then();\r\n }\r\n }\r\n public upAndLoaded: boolean = false;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n private _remoteOptions: boolean = true;\r\n private _publicOptions: boolean = true;\r\n private _orderId: number = 0;\r\n\r\n constructor(\r\n public _changeDetector: ChangeDetectorRef,\r\n public _optionsService: OptionsService,\r\n public _connector: IOneConnectorAdapterService,\r\n public _dictionary: DictionaryService,\r\n public _service: TransactionService,\r\n ) {\r\n this._subscriptions.push(\r\n this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)),\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this._publicOptions) {\r\n this._optionsService.initializeDevelopmentOptions(this._remoteOptions);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n private async _handleSettingsLoaded(loaded: boolean): Promise<void> {\r\n if (loaded) {\r\n await this._initConnection().then();\r\n this.upAndLoaded = true;\r\n }\r\n }\r\n\r\n private async _initConnection(): Promise<void> {\r\n await this._connector.connect(this._optionsService.options);\r\n\r\n if (this._optionsService.options.url) {\r\n this._dictionary.rootUrl = this._optionsService.options.url.replace(\"/ajaxservice\", \"\");\r\n }\r\n await this._dictionary.setDictionary(this._optionsService.options.languageCode);\r\n setTimeout(() => {\r\n this._changeDetector.detectChanges();\r\n });\r\n }\r\n\r\n private async _getTransactionById(orderId: number): Promise<void> {\r\n await this._service.getTransactionById(orderId);\r\n }\r\n}\r\n","import {Directive, Input} from \"@angular/core\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\r\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\r\nimport {TransactionInfo} from \"@colijnit/transactionapi/build/model/transaction-info.bo\";\r\nimport {TransactionKind} from \"@colijnit/transactionapi/build/enum/transaction-kind.enum\";\r\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\r\nimport {TransactionTotal} from \"@colijnit/transactionapi/build/model/transaction-total.bo\";\r\nimport {RelationListObject} from \"@colijnit/transactionapi/build/model/relation-list-object.bo\";\r\nimport {\r\n NULL_CUSTOMER_FULL_OBJECT,\r\n NULL_RELATION_LIST_OBJECT\r\n} from \"@colijnit/transactionapi/build/model/nul-relation-object\";\r\nimport {CustomerFullObject} from \"@colijnit/transactionapi/build/model/customer-full-object.bo\";\r\nimport {notNill} from \"@colijnit/corecomponents_v12/lib/core/function/not-nill.function\";\r\nimport {SlaProduct} from \"@colijnit/transactionapi/build/model/sla-product.bo\";\r\nimport {RelationRequest} from \"@colijnit/transactionapi/build/model/relation-request\";\r\n\r\n@Directive()\r\nexport abstract class TransactionBaseComponent {\r\n @Input()\r\n public set transaction(value: TransactionInfoResponse) {\r\n this._transaction = value;\r\n if (this._transaction && this._transaction.transactionInfo) {\r\n this._isService = this._transaction.transactionInfo.transactionKind === TransactionKind.ServiceOrder;\r\n }\r\n }\r\n\r\n public get transaction(): TransactionInfoResponse {\r\n return this._transaction;\r\n }\r\n\r\n public get transactionInfo(): TransactionInfo {\r\n if (this._transaction) {\r\n return this._transaction.transactionInfo;\r\n }\r\n }\r\n\r\n public get transactionLines(): TransactionLineInfo[] {\r\n if (this._transaction) {\r\n return this._transaction.transactionLines;\r\n }\r\n }\r\n\r\n public get transactionTotal(): TransactionTotal {\r\n if (this._transaction) {\r\n return this._transaction.transactionTotal;\r\n }\r\n }\r\n\r\n public get isService(): boolean {\r\n return this._isService;\r\n }\r\n\r\n @Input()\r\n public set relationId(value: number) {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n this._relationId = value;\r\n this._retrieveRelation();\r\n }\r\n\r\n public get relationId(): number {\r\n return this._relationId;\r\n }\r\n\r\n @Input()\r\n public set customerId(value: number) {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n this._customerId = value;\r\n this._retrieveCustomer();\r\n }\r\n\r\n public get customerId(): number {\r\n return this._customerId;\r\n }\r\n\r\n @Input()\r\n public set product(value: SlaProduct) {\r\n this._product = value;\r\n this.productSet();\r\n this._setBasedOnProduct();\r\n }\r\n\r\n public get product(): SlaProduct {\r\n return this._product;\r\n }\r\n\r\n public get isNew(): boolean {\r\n return isNill(this.transaction) || isNill(this.transactionInfo.transactionNr);\r\n }\r\n\r\n @Input()\r\n public relation: RelationListObject = NULL_RELATION_LIST_OBJECT;\r\n\r\n @Input()\r\n public customer: CustomerFullObject = NULL_CUSTOMER_FULL_OBJECT;\r\n\r\n public _isService: boolean = false;\r\n public basedOnProduct: boolean = false;\r\n\r\n private _relationId: number;\r\n private _customerId: number;\r\n private _transaction: TransactionInfoResponse;\r\n private _product: SlaProduct;\r\n\r\n constructor (\r\n protected readonly service: TransactionService\r\n ) {}\r\n\r\n public transactionSet(): void {\r\n // overridden by descendents\r\n }\r\n\r\n public productSet(): void {\r\n // overridden by descendents\r\n }\r\n\r\n private async _retrieveCustomer(): Promise<void> {\r\n this.customer = await this.service.getCustomerFulObjectByRelationId(this._customerId);\r\n }\r\n\r\n private async _retrieveRelation(): Promise<void> {\r\n const relationRequest: RelationRequest = new RelationRequest();\r\n let relations: RelationListObject[] = [];\r\n relationRequest.relationId = this.relationId;\r\n\r\n\r\n relations = await this.service.getRelationListObjects(relationRequest);\r\n if (relations && relations.length) {\r\n this.relation = relations[0];\r\n }\r\n }\r\n\r\n\r\n private _setBasedOnProduct(): void {\r\n if (this.product) {\r\n this.basedOnProduct = true;\r\n } else { //check transaction (service) for product\r\n // TODO: assProduct is not a property of transaction right now.\r\n // this.basedOnProduct = notNill(this._transaction.assProduct);\r\n // if (this.basedOnProduct) {\r\n // this._product = this.transaction.assProduct;\r\n // }\r\n }\r\n }\r\n\r\n}\r\n","import {Component, Input, OnDestroy, OnInit, ViewChild} from \"@angular/core\";\r\nimport {animate, AnimationTriggerMetadata, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {Scroll} from \"@angular/router\";\r\nimport {BusinessObject} from \"@colijnit/transactionapi/build/model/business-object\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {TransactionEventService} from \"../../../service/transaction-event.service\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\r\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\r\nimport {ContentViewMode} from \"../../../enum/content-view-mode.enum\";\r\nimport {CoreComponentsIcon, IconCacheService} from \"@colijnit/corecomponents_v12\";\r\nimport {ContextMenuItemModel} from \"@syncfusion/ej2-angular-grids\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-article-text\",\r\n template: `\r\n <co-dialog [visible]=\"visible\" (close)=\"onPopupClose()\">\r\n <ng-container header>{{ subHeader }}</ng-container>\r\n <ng-container content>\r\n <div class=\"tags-join-content\" fxLayout fxLayoutGap=\"10px\">\r\n <div class=\"column-separator\">\r\n <co-input-text placeholder=\"Titel\"></co-input-text>\r\n<!--transactiontransaction-->\r\n<!-- label=\"Artikeltekst\"-->\r\n<!-- ></co-text-editor>-->\r\n </div>\r\n <div style=\"margin-left:5px;\">\r\n <div style=\"margin-top:16px;\">\r\n <ejs-dropdownlist\r\n [dataSource]=\"collection\"\r\n [fields]=\"fields\"\r\n placeholder=\"Standaardteksten\"\r\n ></ejs-dropdownlist>\r\n </div>\r\n <div style=\"margin-top:20px;\">\r\n <co-input-checkbox\r\n label=\"Artikelgebonden tekst\"\r\n name=\"articleBoundText\">\r\n </co-input-checkbox>\r\n </div>\r\n <div style=\"margin-top:20px;\">\r\n <label>Bestemd voor documenten</label>\r\n <ejs-chiplist id=\"chip-default\">\r\n <e-chips>\r\n <e-chip text=\"Apple\" cssClass=\"e-primary\"></e-chip>\r\n <e-chip text=\"Microsoft\" cssClass=\"e-info\"></e-chip>\r\n <e-chip text=\"Google\" cssClass=\"e-success\"></e-chip>\r\n <e-chip text=\"Tesla\" cssClass=\"e-warning\"></e-chip>\r\n <e-chip text=\"Intel\" cssClass=\"e-danger\"></e-chip>\r\n </e-chips>\r\n </ejs-chiplist>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container footer>\r\n <div class=\"footer\" fxLayout fxLayoutAlign=\"center center\" fxLayoutGap=\"10px\" style=\"margin-top:30px;\">\r\n <co-button label=\"OK\" (click)=\"onOkClick()\"></co-button>\r\n <co-button label=\"CANCEL\" (click)=\"hide()\"></co-button>\r\n <co-button label=\"OVERVIEW\" (click)=\"onOverview()\"></co-button>\r\n </div>\r\n </ng-container>\r\n </co-dialog>\r\n\r\n <co-dialog [visible]=\"overviewSelected\" (close)=\"hideOverview()\">\r\n <ng-container header>Artikelgebonden teksten {{ subHeader }}</ng-container>\r\n <ng-container content>\r\n <div class=\"tags-join-content\" fxLayout fxLayoutGap=\"10px\">\r\n <div class=\"column-separator\" style=\"width:75%\">\r\n<!-- <grid [data]=\"articleTexts\" detailLink (detailLinkClick)=\"onDetailLinkClick($event)\">-->\r\n<!-- <grid-column key=\"title\" header=\"TITLE\" width=\"100px;\"></grid-column>-->\r\n<!-- <grid-column key=\"description\" header=\"DESCRIPTION\" width=\"200px\"></grid-column>-->\r\n<!-- </grid>-->\r\n </div>\r\n <div style=\"margin-left:5px;\">\r\n <div style=\"margin-top:20px;\">\r\n\r\n <co-input-checkbox\r\n label=\"Artikelgebonden tekst\"\r\n name=\"articleBoundText\"\r\n value=\"true\"\r\n ></co-input-checkbox>\r\n </div>\r\n <div style=\"margin-top:20px;\">\r\n <label>Bestemd voor documenten</label>\r\n <ejs-chiplist id=\"chip-default\">\r\n <e-chips>\r\n <e-chip text=\"Apple\" cssClass=\"e-primary\"></e-chip>\r\n <e-chip text=\"Microsoft\" cssClass=\"e-info\"></e-chip>\r\n <e-chip text=\"Google\" cssClass=\"e-success\"></e-chip>\r\n <e-chip text=\"Tesla\" cssClass=\"e-warning\"></e-chip>\r\n <e-chip text=\"Intel\" cssClass=\"e-danger\"></e-chip>\r\n </e-chips>\r\n </ejs-chiplist>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container footer>\r\n <div class=\"footer\" fxLayout fxPosition=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"10px\" style=\"margin-top:30px;\">\r\n <co-button label=\"OK\" (click)=\"onOkOverviewClick()\"></co-button>\r\n <co-button label=\"CANCEL\" (click)=\"hideOverview()\"></co-button>\r\n </div>\r\n </ng-container>\r\n </co-dialog>\r\n\r\n <co-dialog [visible]=\"editArtikelText\" (close)=\"hideEditArtikelText()\">\r\n <ng-container header>{{ subHeader }}</ng-container>\r\n <ng-container content>\r\n <div class=\"tags-join-content\" fxLayout fxLayoutGap=\"10px\">\r\n <div class=\"column-separator\">\r\n <co-input-text placeholder=\"Titel\"></co-input-text>\r\n<!-- <co-text-editor-->\r\n<!-- label=\"Artikeltekst\"-->\r\n<!-- ></co-text-editor>-->\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container footer>\r\n <div class=\"footer\" fxLayout fxLayoutAlign=\"center center\" fxLayoutGap=\"10px\" style=\"margin-top:30px;\">\r\n <co-button label=\"OK\" (click)=\"onOkEditArtikelTextClick()\"></co-button>\r\n <co-button label=\"CANCEL\" (click)=\"hideEditArtikelText()\"></co-button>\r\n </div>\r\n </ng-container>\r\n </co-dialog>\r\n `,\r\n styleUrls: [\r\n \"./transaction-article-text.component.scss\"\r\n ]\r\n})\r\nexport class TransactionArticleTextComponent extends TransactionBaseComponent{\r\n @Input()\r\n public subHeader: string;\r\n\r\n public visible: boolean = false;\r\n\r\n public floatButtonSelected: boolean = false;\r\n public overviewSelected: boolean = false;\r\n public editArtikelText: boolean = false;\r\n\r\n public collection: Object[] = [\r\n {id: 1, name: \"Standaardtekst 1\"},\r\n {id: 2, name: \"Standaardtekst 1\"},\r\n {id: 3, name: \"Standaardtekst 1\"},\r\n {id: 4, name: \"Standaardtekst 1\"},\r\n {id: 5, name: \"Standaardtekst 1\"}\r\n ];\r\n\r\n public articleTexts: Object[] = [\r\n {title: \"title 1\", description: \"Omschrijving 1\"},\r\n {title: \"title 2\", description: \"Omschrijving 2\"},\r\n {title: \"title 3\", description: \"Omschrijving 3\"},\r\n {title: \"title 4\", description: \"Omschrijving 4\"},\r\n {title: \"title 5\", description: \"Omschrijving 5\"},\r\n ];\r\n\r\n public fields: Object = { text: \"name\", value: \"id\" };\r\n\r\n constructor(\r\n public service: TransactionService,\r\n ) {\r\n super(service);\r\n }\r\n\r\n public onOkClick(): void {\r\n this.hide();\r\n }\r\n\r\n public onPopupClose(): void {\r\n this.hide();\r\n this.hideOverview();\r\n this.hideEditArtikelText();\r\n }\r\n\r\n public hide(): void {\r\n // TODO: throw hide event\r\n this.visible = false;\r\n }\r\n\r\n public onOverview(): void {\r\n this.overviewSelected = true;\r\n }\r\n\r\n public onOkOverviewClick(): void {\r\n this.hideOverview();\r\n }\r\n\r\n public hideOverview(): void {\r\n this.overviewSelected = false;\r\n }\r\n\r\n public onDetailLinkClick(bo: BusinessObject): void {\r\n this.editArtikelText = true;\r\n }\r\n\r\n public hideEditArtikelText(): void {\r\n this.editArtikelText = false;\r\n }\r\n\r\n public onOkEditArtikelTextClick(): void {\r\n this.editArtikelText = false;\r\n }\r\n}\r\n","import {Component, OnDestroy, OnInit, ViewChild} from \"@angular/core\";\r\nimport {animate, AnimationTriggerMetadata, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {Scroll} from \"@angular/router\";\r\nimport {TransactionService} from \"../../service/transaction.service\";\r\nimport {TransactionEventService} from \"../../service/transaction-event.service\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {TransactionInfoResponse} from \"@colijnit/transactionapi/build/model/transaction-info-response.bo\";\r\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\r\nimport {ContentViewMode} from \"../../enum/content-view-mode.enum\";\r\nimport {CoreComponentsIcon, IconCacheService} from \"@colijnit/corecomponents_v12\";\r\nimport {ContextMenuItemModel} from \"@syncfusion/ej2-angular-grids\";\r\nimport {TransactionBaseComponent} from \"../core/base/transaction-base.component\";\r\nimport {TransactionArticleTextComponent} from \"./transaction-article-text/transaction-article-text.component\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"service-order\",\r\n template: `\r\n <div id=\"transaction-general-tab\" style=\"height:100%;\">\r\n <transaction-header-block\r\n [relationId]=\"relationId\"\r\n [transaction]=\"transaction\"\r\n [canPlanDelivery]=\"canPlanDelivery\"\r\n (planningRequestButtonClick)=\"handlePlanningRequest($event)\"\r\n ></transaction-header-block>\r\n <div *ngIf=\"!isService\">\r\n <div class=\"transaction-view\" fxLayout=\"row\" fxLayoutGap=\"1px\" fxLayoutAlign=\"flex-end\">\r\n <div class=\"view-mode-buttons\">\r\n <co-button [iconData]=\"iconCacheService.getIcon(iconThickLines)\"\r\n [title]=\"'LIST_VIEW' | localize\"\r\n (click)=\"this.activeViewMode = viewModes.List\"\r\n class=\"triangle white\"\r\n iconClass=\"medium light\"></co-button>\r\n <co-button [iconData]=\"iconCacheService.getIcon(iconThinLines)\"\r\n [title]=\"'GRID_VIEW' | localize\"\r\n (click)=\"this.activeViewMode = viewModes.Grid\"\r\n class=\"triangle white\"\r\n iconClass=\"medium light\"></co-button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"this.activeViewMode === viewModes.List\">\r\n <transaction-order-line-view *ngFor=\"let line of transactionLines; trackBy:trackByFn;\"\r\n [line]=\"line\"\r\n ></transaction-order-line-view>\r\n </div>\r\n <div *ngIf=\"this.activeViewMode === viewModes.Grid\">\r\n <transaction-order-lines [transaction]=\"transaction\"></transaction-order-lines>\r\n </div>\r\n <div class=\"floating-icon-wrapper\" [style.right.px]=\"floatButtonRightPosition\">\r\n <icon [icon]=\"iconOrder\"\r\n class=\"light\"\r\n (click)=\"floatButtonClick()\" id=\"floatingIcon\"\r\n [style.right.px]=\"floatButtonRightPosition\"></icon>\r\n </div>\r\n </div>\r\n <transaction-order-totals *ngIf=\"!isService\"\r\n [ngClass]=\"showTotals ? 'transaction-totals-show' : 'transaction-totals-hide'\"></transaction-order-totals>\r\n </div>\r\n\r\n <transaction-article-text></transaction-article-text>\r\n `,\r\n styleUrls: [\r\n \"./service-order.component.scss\"\r\n ]\r\n})\r\nexport class ServiceOrderComponent extends TransactionBaseComponent implements OnInit, OnDestroy {\r\n @ViewChild(TransactionArticleTextComponent, { static: false })\r\n private _transactionArticleTextComponent: TransactionArticleTextComponent;\r\n\r\n public static readonly FLOAT_BUTTON_RIGHT_POSITION_WITHOUT_SIDEBAR = 50;\r\n public static readonly FLOAT_BUTTON_RIGHT_POSITION_WITH_SIDEBAR = 350;\r\n\r\n public readonly iconThickLines: CoreComponentsIcon = CoreComponentsIcon.ThickLines;\r\n public readonly iconThinLines: CoreComponentsIcon = CoreComponentsIcon.ThinLines;\r\n public readonly iconOrder: CoreComponentsIcon = CoreComponentsIcon.Order;\r\n public readonly viewModes: typeof ContentViewMode = ContentViewMode;\r\n\r\n public popupHeaderLabel: string;\r\n\r\n public canPlanDelivery: boolean = false;\r\n\r\n public showTotals: boolean = true;\r\n public floatButtonRightPosition: number;\r\n\r\n public get inListView(): boolean {\r\n return this.activeViewMode === ContentViewMode.List;\r\n }\r\n\r\n public get inGridView(): boolean {\r\n return this.activeViewMode === ContentViewMode.Grid;\r\n }\r\n\r\n public contextMenuItems: ContextMenuItemModel[] = [];\r\n\r\n public isRouteOptimizationConfigured: boolean = false;\r\n\r\n public activeViewMode: ContentViewMode = ContentViewMode.List;\r\n public floatButtonSelected: boolean = false;\r\n\r\n private _subs: Subscription[] = [];\r\n private _selectedTransLine: TransactionLineInfo;\r\n\r\n constructor(\r\n public service: TransactionService,\r\n public transactionEvents: TransactionEventService,\r\n public iconCacheService: IconCacheService,\r\n ) {\r\n super(service);\r\n }\r\n\r\n async ngOnInit(): Promise<void> {\r\n this._subs.push(\r\n this.service.transactionLoaded.subscribe((transactionInfoResponse: TransactionInfoResponse) => {\r\n if (transactionInfoResponse.isSuccess) {\r\n this.transaction = transactionInfoResponse;\r\n if (this.transaction && this.transaction.transactionInfo) {\r\n this.customerId = Number(this.transaction.transactionInfo.relation.relationNr);\r\n this.relationId = this.transaction.transactionInfo.relation.relationId;\r\n }\r\n }\r\n }),\r\n this.transactionEvents.rightSidebarClose.subscribe(() => {\r\n this.moveFloatingButtonToRight();\r\n }),\r\n\r\n this.transactionEvents.transactionLineClicked.subscribe((transactionLine: TransactionLineInfo) => {\r\n this._selectedTransLine = transactionLine;\r\n this.moveFloatingButtonToLeft();\r\n }),\r\n\r\n this.transactionEvents.scrollContent.subscribe((event: Scroll) => {\r\n this.hideOrderTotals(event);\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subs.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n public animationFn(): AnimationTriggerMetadata {\r\n return trigger(\"showPopup\", [\r\n state(\"void\", style({transform: \"translate3d(0, 0, 0)\"})),\r\n state(\"*\", style({transform: \"translate3d(100%, 0, 0)\"})),\r\n transition(\"void <=> *\", [\r\n animate(\"200ms ease-in-out\")\r\n ])\r\n ]);\r\n }\r\n\r\n public trackByFn(index: number, line: TransactionLineInfo): any {\r\n return line.lineNr;\r\n }\r\n\r\n public handleRowsSelected(rows: any): void {\r\n this._selectedTransLine = rows.find(x => x !== undefined);\r\n }\r\n\r\n public handlePlanningRequest(event: any): void {\r\n // TODO: handlePlanningRequest... from new Planning package\r\n }\r\n\r\n\r\n public moveFloatingButtonToLeft(): void {\r\n if (this.floatButtonRightPosition === ServiceOrderComponent.FLOAT_BUTTON_RIGHT_POSITION_WITHOUT_SIDEBAR) {\r\n this.floatButtonRightPosition = ServiceOrderComponent.FLOAT_BUTTON_RIGHT_POSITION_WITH_SIDEBAR;\r\n }\r\n }\r\n\r\n public moveFloatingButtonToRight(): void {\r\n if (this.floatButtonRightPosition === ServiceOrderComponent.FLOAT_BUTTON_RIGHT_POSITION_WITH_SIDEBAR) {\r\n this.floatButtonRightPosition = ServiceOrderComponent.FLOAT_BUTTON_RIGHT_POSITION_WITHOUT_SIDEBAR;\r\n }\r\n }\r\n\r\n public onOkClick(): void {\r\n this.hide();\r\n }\r\n\r\n public hide(): void {\r\n this.floatButtonSelected = false;\r\n }\r\n\r\n public floatButtonClick(): void {\r\n this.floatButtonSelected = true;\r\n this._transactionArticleTextComponent.visible = this.floatButtonSelected;\r\n }\r\n\r\n public get subHeader(): string {\r\n if (this._selectedTransLine && this._selectedTransLine !== undefined) {\r\n return this._selectedTransLine.goodDescription;\r\n }\r\n return \"\";\r\n }\r\n\r\n public hideOrderTotals(event: Scroll): void {\r\n this.showTotals = false;\r\n }\r\n}\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {TransactionTotal} from \"@colijnit/transactionapi/build/model/transaction-total.bo\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\n\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-order-totals\",\r\n template: `\r\n <div class=\"totals-wrapper\">\r\n <div class=\"totals-item\">\r\n <div class=\"totals-item-description\" [textContent]=\"'SUBTOTAL' | localize\"></div>\r\n <div class=\"totals-item-value\" [textContent]=\"transactionTotal?.grossAmount | coCurrency | coCurrency\"></div>\r\n </div>\r\n <div class=\"totals-item\">\r\n <div class=\"totals-item-description\" [textContent]=\"'VAT_AMOUNT' | localize\"></div>\r\n <div class=\"totals-item-value\" [textContent]=\"transactionTotal?.surchargeAmount | coCurrency\"></div>\r\n </div>\r\n <div class=\"totals-item total\">\r\n <div class=\"totals-item-description\" [textContent]=\"'TRANSACTION_SUM_I' | localize\"></div>\r\n <div class=\"totals-item-value\" [textContent]=\"transactionTotal?.netAmount | coCurrency\"></div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n \"./transaction-order-totals.component.scss\"\r\n ]\r\n})\r\nexport class TransactionOrderTotalsComponent extends TransactionBaseComponent {\r\n\r\n constructor (\r\n protected readonly service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n\r\n}\r\n","import {Component, Input, OnInit} from \"@angular/core\";\r\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\r\nimport {StockStatus} from \"@colijnit/transactionapi/build/enum/refcode/stock-status.enum\";\r\nimport {TransactionEventService} from \"../../../service/transaction-event.service\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-order-line-view\",\r\n template: `\r\n <div class=\"transaction-order-line-r\" fxFlex (click)=\"transactionLineClick(line)\">\r\n <div fxLayout=\"row\" class=\"full-width\">\r\n <div fxLayout=\"column\" class=\"transaction-order-line-description\" fxLayoutGap=\"20px\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <span [textContent]=\"line.goodDescription\" class=\"cart-line-description-main\"></span>\r\n <span *ngIf=\"line.goodDescription && line.articleNumber\">|</span>\r\n <span [textContent]=\"line.articleNumber\" class=\"cart-line-description-artnr\"></span>\r\n </div>\r\n <div>\r\n <span [innerHTML]=\"line.configurationReadable\" class=\"cart-line-description-detail\"></span>\r\n </div>\r\n </div>\r\n <div fxLayout=\"column\" class=\"transaction-order-line-image\">\r\n <image-display [model]=\"image\"></image-display>\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" class=\"transaction-order-line-right\">\r\n <div fxLayout=\"column\" class=\"transaction-order-line-stock\">\r\n <span [textContent]=\"'STOCK' | localize\" class=\"small-font\"></span>\r\n <stock-status-indicator [model]=\"stock\"></stock-status-indicator>\r\n <span [textContent]=\"'DELIVERY_TIME_PERIOD' | localize\" class=\"small-font\"></span>\r\n <span [textContent]=\"line.deliveryDate | deliveryTime\"></span>\r\n </div>\r\n <div class=\"transaction-order-line-amount\">\r\n <co-input-number-picker\r\n class=\"horizontal\"\r\n [(model)]=\"line.amount\" [min]=\"0\" [buttonShowMode]=\"'always'\"\r\n [readonly]=\"true\"></co-input-number-picker>\r\n </div>\r\n <div class=\"transaction-order-line-totals\">\r\n <span [textContent]=\"line.netLineTotal | coCurrency: true\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n \"./transaction-order-line-view.component.scss\"\r\n ]\r\n})\r\nexport class TransactionOrderLineViewComponent implements OnInit {\r\n @Input()\r\n public line: TransactionLineInfo;\r\n\r\n public stock: StockStatus = StockStatus.Low;\r\n public image: string;\r\n\r\n public ngOnInit(): void {\r\n this._loadArticleImage();\r\n }\r\n\r\n constructor(\r\n private _service: TransactionService,\r\n private _eventService: TransactionEventService,\r\n ) {\r\n }\r\n\r\n private async _loadArticleImage(): Promise<void> {\r\n if (this.line) {\r\n this.image = this.line ? await this._service.retrieveLineImage(this.line) : undefined;\r\n }\r\n }\r\n\r\n public transactionLineClick(line: TransactionLineInfo): void {\r\n this._eventService.transactionLineClicked.next(this.line);\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output, ViewChild} from \"@angular/core\";\r\nimport {CoGridComponent} from \"@colijnit/corecomponents_v12\";\r\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\r\nimport {DictionaryService} from \"../../../service/dictionary.service\";\r\nimport {TransactionEventService} from \"../../../service/transaction-event.service\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-order-lines\",\r\n template: `\r\n <co-grid #transactionGrid\r\n [data]=\"transactionLines\"\r\n [columns]=\"columns\"\r\n [pagingEnabled]=\"pagingEnabled\"\r\n [maxNumberOfRows]=\"'20'\"\r\n (rowsSelected)=\"onRowClick($event)\"\r\n ></co-grid>\r\n `,\r\n styleUrls: [\r\n \"./transaction-order-lines.component.scss\"\r\n ]\r\n})\r\nexport class TransactionOrderLinesComponent extends TransactionBaseComponent {\r\n public static readonly MAX_TRANSACTION_LINES = 20;\r\n\r\n @ViewChild(\"transactionGrid\")\r\n public transactionGrid: CoGridComponent<any>;\r\n\r\n @Output()\r\n public createServiceClick: EventEmitter<TransactionLineInfo> = new EventEmitter<TransactionLineInfo>();\r\n\r\n\r\n public get pagingEnabled(): boolean {\r\n if (this.transactionLines) {\r\n return this.transactionLines.length >= TransactionOrderLinesComponent.MAX_TRANSACTION_LINES;\r\n }\r\n return false;\r\n }\r\n\r\n public nothingSelected: boolean = true;\r\n public columns: any[] = [];\r\n\r\n private _selectedTransLine: TransactionLineInfo;\r\n\r\n private set selectedTransLine(value: TransactionLineInfo) {\r\n this._selectedTransLine = value;\r\n this.nothingSelected = this._selectedTransLine === null;\r\n }\r\n\r\n private get selectedTransLine(): TransactionLineInfo {\r\n return this._selectedTransLine;\r\n }\r\n\r\n constructor(\r\n public service: TransactionService,\r\n private _eventService: TransactionEventService,\r\n private _dictionaryService: DictionaryService,\r\n ) {\r\n super(service);\r\n\r\n this.columns.push(\r\n {field: \"articleNumber\", headerText: this._dictionaryService.get(\"ARTICLE_NR\"), allowFiltering: false},\r\n {field: \"goodDescription\", headerText: this._dictionaryService.get(\"DESCRIPTION\")},\r\n {field: \"detailsAsString\", headerText: this._dictionaryService.get(\"DETAILS\")},\r\n {field: \"price\", headerText: this._dictionaryService.get(\"PRICE\")},\r\n {field: \"amount\", headerText: this._dictionaryService.get(\"NUMBER\")},\r\n {field: \"lineTotal\", headerText: this._dictionaryService.get(\"SUBTOTAL\")},\r\n {field: \"logisticState\", headerText: this._dictionaryService.get(\"STATE\")},\r\n {field: \"expectedDeliveryDate\", headerText: this._dictionaryService.get(\"EXPECTED_DELIVERY_DATE\")},\r\n );\r\n }\r\n\r\n public onRowClick(row: TransactionLineInfo): void {\r\n this.selectedTransLine = row;\r\n this._eventService.transactionLineClicked.next(this.selectedTransLine);\r\n }\r\n\r\n public onRowDeselect(event: any): void {\r\n this.selectedTransLine = null;\r\n }\r\n\r\n // TODO: navragen wat de bedoeling is, zie originele source iOneJS\r\n public newServiceRequestClick(): void {\r\n if (this.nothingSelected) {\r\n return;\r\n }\r\n this.createServiceClick.emit(this._selectedTransLine);\r\n }\r\n}\r\n","import {Component, Inject, Input, OnInit} from \"@angular/core\";\r\nimport {isNill} from \"@colijnit/transactionapi/build/utils/function/is-nill.function\";\r\nimport {GetPostalCodeRetrievalOutputParams} from \"@colijnit/transactionapi/build/model/get-postal-code-retrieval-output-params\";\r\nimport {StringUtils} from \"../../../utils/string-utils\";\r\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\r\nimport {Country} from \"@colijnit/transactionapi/build/model/country.bo\";\r\nimport {IOneConnectorAdapterService} from \"../../../service/ione-connector-adapter.service\";\r\nimport {DictionaryService} from \"../../../service/dictionary.service\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-relation-address\",\r\n template: `\r\n <label [textContent]=\"label | localize\"\r\n class=\"transaction-relation-label-h3\"\r\n ></label>\r\n <div class=\"default-flex-row\">\r\n <div class=\"default-flex-column\">\r\n <co-input-text [(model)]=\"address.postalCode\"\r\n [placeholder]=\"'POSTAL_CODE' | localize\"\r\n (blur)=\"checkForPostalCodeCheckError()\"\r\n required\r\n ></co-input-text>\r\n </div>\r\n <div class=\"default-flex-column\">\r\n <co-input-text [(model)]=\"address.houseNo\"\r\n [placeholder]=\"'HOUSE_NO' | localize\"\r\n (blur)=\"checkForPostalCodeCheckError()\"\r\n (modelChange) = \"changeHouseNo()\"\r\n required\r\n ></co-input-text>\r\n </div>\r\n <div class=\"default-flex-column\">\r\n <co-input-text [(model)]=\"address.houseNoAddition\"\r\n [placeholder]=\"'HOUSE_NO_ADDITION' | localize\"\r\n ></co-input-text>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"default-flex-row\">\r\n <div class=\"default-flex-column\">\r\n <co-input-text [(model)]=\"address.streetName\" [placeholder]=\"'STREET' | localize\" required></co-input-text>\r\n </div>\r\n <div class=\"default-flex-column\">\r\n <co-input-text [(model)]=\"address.city\" [placeholder]=\"'CITY' | localize\" required></co-input-text>\r\n </div>\r\n <div class=\"default-flex-column\">\r\n <co-input-combo-box [(model)]=\"address.countryId\"\r\n [source]=\"countries\"\r\n [fields]=\"fields\"\r\n [placeholder]=\"'COUNTRY'| localize\"\r\n [required]=\"true\"\r\n ></co-input-combo-box>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n \"./transaction-relation-edit.component.scss\"\r\n ]\r\n})\r\nexport class TransactionRelationAddressComponent implements OnInit {\r\n\r\n @Input()\r\n public label: string;\r\n\r\n @Input()\r\n public set address(address: Address) {\r\n this._address = address;\r\n }\r\n\r\n public get address(): Address {\r\n if (this._address === undefined) {\r\n this._address = new Address();\r\n }\r\n\r\n return this._address;\r\n }\r\n\r\n public countries: Country[] = [];\r\n public fields: Object = { text: \"description\", value: \"code\" };\r\n\r\n public constructor(\r\n private _dictionary: DictionaryService,\r\n private _connector: IOneConnectorAdapterService\r\n ) {}\r\n\r\n public postalCodeCheckErrorMessage: string = \"\";\r\n\r\n private _prevPostalCodeForCheck: string = \"\";\r\n private _prevHouseNoForCheck: number;\r\n private _address: Address;\r\n\r\n async ngOnInit(): Promise<void> {\r\n this.countries = await this._connector.getCountries();\r\n }\r\n\r\n public async checkForPostalCodeCheckError(): Promise<void> {\r\n if (!this.address.postalCode || isNill(this.address.houseNo)) {\r\n this.postalCodeCheckErrorMessage = \"\";\r\n return;\r\n }\r\n\r\n if (this._prevPostalCodeForCheck !== this.address.postalCode || this._prevHouseNoForCheck !== this.address.houseNo) {\r\n this._prevPostalCodeForCheck = this.address.postalCode;\r\n this._prevHouseNoForCheck = this.address.houseNo;\r\n const postalCodeResponse: GetPostalCodeRetrievalOutputParams = await this._connector.getPostalCodeRetrieval((this.address.postalCode ? this.address.postalCode : \"\"),\r\n StringUtils.ParseString(this.address.houseNo));\r\n if (postalCodeResponse && postalCodeResponse.isBadAddress) {\r\n this.postalCodeCheckErrorMessage = this._dictionary.get(\"UNKNOWN_ADDRESS_CHECK_IT\");\r\n } else {\r\n this.postalCodeCheckErrorMessage = \"\";\r\n this.address.streetName = postalCodeResponse.street;\r\n this.address.city = postalCodeResponse.city;\r\n }\r\n }\r\n }\r\n\r\n public changeHouseNo(): void {\r\n this.address.houseNo = Number(this.address.houseNo);\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, OnDestroy, OnInit} from \"@angular/core\";\r\nimport {Sidebar} from \"@syncfusion/ej2-navigations\";\r\nimport {Subscription} from \"rxjs/index\";\r\nimport {TransactionEventService} from \"../../../service/transaction-event.service\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {CoreComponentsIcon, IconCacheService} from \"@colijnit/corecomponents_v12\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-sidebar-right\",\r\n template: `\r\n <div id=\"default-sidebar\">\r\n <div>\r\n <icon [icon]=\"iconArrowPointRight\" (click)=\"sidebarCloseClick()\"></icon>\r\n <label [textContent]=\"transactionLine?.goodDescription\"></label>\r\n </div>\r\n <div>\r\n <ejs-tab id=\"element2\">\r\n <e-tabitems>\r\n <e-tabitem>\r\n <ng-template #headerText>\r\n <icon [icon]=\"iconDetailView\" title=\"Regeldetails\"></icon>\r\n </ng-template>\r\n <ng-template #content>\r\n <transaction-line-accordion [transactionLine]=\"transactionLine\"></transaction-line-accordion>\r\n </ng-template>\r\n </e-tabitem>\r\n <e-tabitem>\r\n <ng-template #headerText>\r\n <icon [icon]=\"iconStock\" title=\"Voorraad\"></icon>\r\n </ng-template>\r\n <ng-template #content>\r\n <div style=\"margin: 10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"In voorraad\"></co-input-text>\r\n <co-input-text placeholder=\"In order voorraad\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"In order commissie\"></co-input-text>\r\n <co-input-text placeholder=\"Beschikbaar\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"In bestelling\"></co-input-text>\r\n <co-input-text placeholder=\"Later beschikbaar\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Toegewezen\" [model]=\"transactionLine?.amount\"></co-input-text>\r\n <co-input-text placeholder=\"Vrije voorraad\"></co-input-text>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </e-tabitem>\r\n <e-tabitem>\r\n <ng-template #headerText>\r\n <icon [icon]=\"iconDocuments\" title=\"Documenten en notities\"></icon>\r\n </ng-template>\r\n <ng-template #content>\r\n <div>\r\n Documenten en notities\r\n </div>\r\n </ng-template>\r\n </e-tabitem>\r\n </e-tabitems>\r\n </ejs-tab>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n \"./transaction-sidebar-right.component.scss\"\r\n ]\r\n})\r\nexport class TransactionSidebarRightComponent extends TransactionBaseComponent implements OnInit, OnDestroy {\r\n public readonly iconDetailView: CoreComponentsIcon = CoreComponentsIcon.DetailView;\r\n public readonly iconArrowPointRight: CoreComponentsIcon = CoreComponentsIcon.ArrowPointRight;\r\n public readonly iconStock: CoreComponentsIcon = CoreComponentsIcon.Stock;\r\n public readonly iconDocuments: CoreComponentsIcon = CoreComponentsIcon.Documents;\r\n\r\n ArrowPointRight\r\n\r\n public test: string = \"\";\r\n public transactionLine: TransactionLineInfo;\r\n\r\n public defaultSidebar: Sidebar = new Sidebar({\r\n width: \"320px\",\r\n type: \"Auto\",\r\n isOpen: false,\r\n position: \"Right\",\r\n target: \"#app-module-sidebar-right\"\r\n });\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n public service: TransactionService,\r\n public iconCacheService: IconCacheService,\r\n private _eventService: TransactionEventService,\r\n protected changeDetector: ChangeDetectorRef,\r\n ) {\r\n super(service);\r\n this._subscriptions.push(\r\n this._eventService.transactionLineClicked.subscribe((transactionLine: TransactionLineInfo) => {\r\n this.transactionLine = transactionLine;\r\n this.defaultSidebar.show();\r\n })\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n this.defaultSidebar.appendTo(\"#default-sidebar\");\r\n this.sidebarCloseClick();\r\n this.changeDetector.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n sidebarCloseClick(): void {\r\n this.defaultSidebar.hide();\r\n this._eventService.rightSidebarClose.next();\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, Input, OnInit} from \"@angular/core\";\r\nimport {Accordion} from \"@syncfusion/ej2-navigations\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {TransactionLineInfo} from \"@colijnit/transactionapi/build/model/transaction-line-info.bo\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-line-accordion\",\r\n template: `\r\n <div id='container'>\r\n <div id='accordion_html_markup'>\r\n <div>\r\n <div>Prijsdetails</div>\r\n <div>\r\n <div style=\"margin-left:10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Aantal\" [model]=\"transactionLine?.amount\"></co-input-text>\r\n <co-input-text placeholder=\"Verkoopprijs\" [model]=\"transactionLine?.price\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Adviesprijs\"></co-input-text>\r\n <co-input-text placeholder=\"Totaal korting\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Koritngspercentage\"></co-input-text>\r\n <co-input-text placeholder=\"Kortingsbedrag\" [model]=\"transactionLine?.discountAmount\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Speciale korting\"></co-input-text>\r\n <co-input-text placeholder=\"Transactiekorting\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Business rule korting\"></co-input-text>\r\n <co-input-text placeholder=\"Kwantumkorting\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Toeslag\"></co-input-text>\r\n <co-input-text placeholder=\"BTW\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Prijslijst\"></co-input-text>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div>Logistiek</div>\r\n <div>\r\n <div style=\"margin-left:10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Commissiecode\"></co-input-text>\r\n <co-input-text placeholder=\"Levermethode\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Montagetijd\"></co-input-text>\r\n <co-input-text placeholder=\"Bewerkingstijd\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Leverancier\"></co-input-text>\r\n <co-input-text placeholder=\"Artikelnummer leverancier\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"In/uit collectie\"></co-input-text>\r\n <co-input-text placeholder=\"Dropshipment\"></co-input-text>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Leverdatum\"></co-input-text>\r\n <co-input-text placeholder=\"Referentie\"></co-input-text>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <div id=\"header\">Opmaak</div>\r\n <div id=\"opmaak\">\r\n <div style=\"margin-left:10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Orderregelset\"></co-input-text>\r\n <co-input-text placeholder=\"Hoofdstuk\"></co-input-text>\r\n </div>\r\n <div>\r\n <co-input-text placeholder=\"Laatste wijziging Door\"></co-input-text>\r\n </div>\r\n <div>\r\n <co-input-text placeholder=\"Zichtbaar op documenten\"></co-input-text>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div>Artikelkenmerken</div>\r\n <div>\r\n <div style=\"margin-left:10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Breedte\"></co-input-text>\r\n <co-input-text placeholder=\"Lengte\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Hoogte\"></co-input-text>\r\n <co-input-text placeholder=\"Zitdiepte\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Zithoogte\"></co-input-text>\r\n <co-input-text placeholder=\"Volume\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Stopmaat\"></co-input-text>\r\n <co-input-text placeholder=\"Patroonhoogte\"></co-input-text>\r\n </div>\r\n <br>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Standaard levertijd\"></co-input-text>\r\n <co-input-text placeholder=\"Standaard levertijd verkoop\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Eenheid verkoop\"></co-input-text>\r\n <co-input-text placeholder=\"Verkoophoeveelheid\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Aantal\"></co-input-text>\r\n <co-input-text placeholder=\"Colli\"></co-input-text>\r\n </div>\r\n <br>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Omzetgroep\"></co-input-text>\r\n <co-input-text placeholder=\"Artikelgroep\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Hoofdartikel\"></co-input-text>\r\n <co-input-text placeholder=\"Sfeer\"></co-input-text>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <co-input-text placeholder=\"Concept\"></co-input-text>\r\n <co-input-text placeholder=\"Afdeling\"></co-input-text>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\"./transaction-line-accordion.component.scss\"]\r\n})\r\nexport class TransactionLineAccordionComponent implements OnInit {\r\n @Input()\r\n public transactionLine: TransactionLineInfo = new TransactionLineInfo;\r\n\r\n public accordion: Accordion = new Accordion({});\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(protected changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n this.accordion.appendTo(\"#accordion_html_markup\");\r\n this.changeDetector.detectChanges();\r\n });\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output, ViewChild} from \"@angular/core\";\r\nimport {GenderType} from \"@colijnit/transactionapi/build/enum/gender-type.enum\";\r\nimport {Address} from \"@colijnit/transactionapi/build/model/address.bo\";\r\nimport {ContactOption} from \"@colijnit/transactionapi/build/model/contact-option.bo\";\r\nimport {RelationNameKind} from \"@colijnit/transactionapi/build/enum/relation-name-kind.enum\";\r\nimport {FormComponent} from \"@colijnit/corecomponents_v12\";\r\nimport {AddressType} from \"@colijnit/transactionapi/build/enum/address-type.enum\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\n\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-relation-edit\",\r\n template: `\r\n <co-dialog [visible]=\"showPopup\" header=\"ACCOUNT_DETAILS\" (close)=\"onPopupClose()\"\r\n noClickOutside contentSize>\r\n <ng-container content>\r\n <co-form #transactionRelationEditForm (validSubmit)=\"validSubmit.emit()\" (invalidSubmit)=\"invalidSubmit.emit()\">\r\n <div style=\"min-width: 500px;\">\r\n <div>\r\n <label [textContent]=\"'PERSONAL_DATA' | localize\"\r\n class=\"transaction-relation-label-h3\"\r\n ></label>\r\n </div>\r\n <div>\r\n <div>\r\n <label [textContent]=\"'ORDER_TYPE' | localize \"\r\n class=\"transaction-relation-label-h3\"\r\n ></label>\r\n </div>\r\n <div *ngIf=\"customer?.type\">\r\n <co-input-radio-button [name]=\"'type'\"\r\n [label]=\"'PRIVATE_PERSON' | localize\"\r\n [value]=\"relType.Private\"\r\n [checked]=\"customer.type === relType.Private\"\r\n (modelChange)=\"changeRelationType(relType.Private)\"\r\n ></co-input-radio-button>\r\n <co-input-radio-button [name]=\"'type'\"\r\n [label]=\"'COMPANY' | localize\"\r\n [value]=\"relType.Company\"\r\n [checked]=\"customer.type === relType.Company\"\r\n (modelChange)=\"changeRelationType(relType.Company)\"\r\n ></co-input-radio-button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"customer?.type === relType.Private\">\r\n <label [textContent]=\"'SALUTATION' | localize\"\r\n class=\"transaction-relation-label-h3\"\r\n ></label>\r\n <div *ngIf=\"customer?.gender\">\r\n <co-input-radio-button [name]=\"'gender'\"\r\n [label]=\"'MALE' | localize\"\r\n [value]=\"genderType.Male\"\r\n [checked]=\"customer.gender === genderType.Male\"\r\n (modelChange)=\"changeGenderType(genderType.Male)\"\r\n ></co-input-radio-button>\r\n <co-input-radio-button [name]=\"'gender'\"\r\n [label]=\"'FEMALE' | localize \"\r\n [value]=\"genderType.Female\"\r\n [checked]=\"customer.gender === genderType.Female\"\r\n (modelChange)=\"changeGenderType(genderType.Female)\"\r\n ></co-input-radio-button>\r\n <co-input-radio-button [name]=\"'gender'\"\r\n [label]=\"'UNKNOWN' | localize\"\r\n [value]=\"genderType.Unspecified\"\r\n [checked]=\"customer.gender === genderType.Unspecified\"\r\n (modelChange)=\"changeGenderType(genderType.Unspecified)\"\r\n ></co-input-radio-button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"customer?.type === relType.Private\">\r\n <div>\r\n <label [textContent]=\"'NAME' | localize \"\r\n class=\"transaction-relation-label-h3\"\r\n ></label>\r\n <div class=\"default-flex-row\">\r\n <div class=\"default-flex-column\">\r\n <co-input-text\r\n [(model)]=\"customer.firstName\"\r\n [placeholder]=\"'FIRST_NAME' | localize \"\r\n (modelChange)=\"firstNameChange($event)\"\r\n required\r\n ></co-input-text>\r\n </div>\r\n <div class=\"default-flex-column\">\r\n <co-input-text\r\n [(model)]=\"customer.prefix\"\r\n [placeholder]=\"'PREFIX' | localize \"\r\n ></co-input-text>\r\n </div>\r\n <div class=\"default-flex-column\">\r\n <co-input-text\r\n [(model)]=\"customer.familyName\"\r\n [placeholder]=\"'LAST_NAME' | localize\"\r\n (modelChange)=\"familyNameChange($event)\"\r\n required\r\n ></co-input-text>\r\n </div>\r\n <div class=\"default-flex-column\">\r\n <co-input-date\r\n [placeholder]=\"'DATE_OF_BIRTH' | localize \"\r\n [(model)]=\"dateOfBirth\"\r\n required\r\n ></co-input-date>\r\n </div>\r\n <div class=\"default-flex-column\">\r\n <co-input-text\r\n [(model)]=\"phoneNumber.value\"\r\n [placeholder]=\"'PHONE_NO' | localize \"\r\n required\r\n ></co-input-text>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <div *ngIf=\"customer?.type === relType.Company\" class=\"default-flex-column\">\r\n <label [textContent]=\"'COMPANY_NAME' | localize \"\r\n class=\"transaction-relation-label-h3\"\r\n ></label>\r\n <co-input-text\r\n [(model)]=\"customer.familyName\"\r\n [label]=\"'COMPANY_NAME'\"\r\n required\r\n ></co-input-text>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <transaction-relation-address\r\n label=\"DELIVERY_ADDRESS\" [address]=\"editFirstAddress\"\r\n ></transaction-relation-address>\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" class=\"button-wrapper\">\r\n <default-ok-cancel-buttons\r\n [okDisabled]=\"readonly\"\r\n (okClick)=\"transactionRelationEditForm.submit()\"\r\n (cancelClick)=\"onPopupClose()\"\r\n ></default-ok-cancel-buttons>\r\n </div>\r\n </div>\r\n </co-form>\r\n </ng-container>\r\n </co-dialog>\r\n `,\r\n styleUrls: [\r\n \"./transaction-relation-edit.component.scss\"\r\n ]\r\n})\r\nexport class TransactionRelationEditComponent extends TransactionBaseComponent {\r\n @ViewChild(\"transactionRelationEditForm\", {read: FormComponent})\r\n public transactionRelationEditForm: FormComponent;\r\n\r\n @Input()\r\n public showPopup: boolean = false;\r\n\r\n public readonly relType: typeof RelationNameKind = RelationNameKind;\r\n public readonly genderType: typeof GenderType = GenderType;\r\n\r\n @Output()\r\n public validSubmit: EventEmitter<void> = new EventEmitter<void>();\r\n public invalidSubmit: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public dateOfBirth: Date = new Date();\r\n public phoneNumber: ContactOption = new ContactOption();\r\n\r\n public get readonly(): boolean {\r\n return false;\r\n }\r\n\r\n constructor(protected readonly service: TransactionService) {\r\n super(service);\r\n }\r\n\r\n public get subHeader(): string {\r\n return \"\";\r\n }\r\n\r\n public get editFirstAddress(): Address {\r\n if (this.firstAddress) {\r\n return this.firstAddress;\r\n } else if (this.customer) {\r\n const address: Address = new Address();\r\n address.addressType = AddressType.DeliveryAddress;\r\n address.startDate = new Date();\r\n address.sequence = this.customer.getNextAddressSequence();\r\n this.customer.addresses.push(address);\r\n return address;\r\n }\r\n }\r\n\r\n public get firstAddress(): Address {\r\n if (!this.relation || !this.customer.addresses.length) {\r\n return;\r\n }\r\n\r\n return this.customer.getFirstAvailableAddress([\r\n AddressType.DeliveryAddress,\r\n AddressType.BillingAddress,\r\n AddressType.VisitingAddress,\r\n AddressType.MailingAddress,\r\n AddressType.NursingAddress\r\n ]);\r\n }\r\n\r\n public onPopupClose(): void {\r\n this.showPopup = false;\r\n }\r\n\r\n public changeRelationType(relationType: RelationNameKind): void {\r\n if (this.customer) {\r\n this.customer.type = relationType;\r\n }\r\n }\r\n\r\n public changeGenderType(genderType: GenderType): void {\r\n if (this.customer) {\r\n this.customer.gender = genderType;\r\n }\r\n }\r\n\r\n public firstNameChange(firstName: string): void {\r\n if (this.customer) {\r\n this.customer.firstName = firstName;\r\n }\r\n }\r\n\r\n public familyNameChange(familyName: string): void {\r\n if (this.customer) {\r\n this.customer.familyName = familyName;\r\n }\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output, ViewChild} from \"@angular/core\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {TransactionRelationEditComponent} from \"../transaction-relation/transaction-relation-edit.component\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-header-block\",\r\n template: `\r\n <div fxLayout=\"row wrap\" fxLayout.xs=\"column\">\r\n <div class=\"summary-block\" (click)=\"tabClick()\">\r\n <div class=\"block-wrapper\">\r\n <div class=\"content-wrapper\">\r\n <div class=\"name\"\r\n [textContent]=\"relation?.displayName\"></div>\r\n <div class=\"address link pointer\"\r\n [textContent]=\"relation?.displayAddressFull\"></div>\r\n <div class=\"phone link pointer\"\r\n [textContent]=\"relation?.tel1\"></div>\r\n <div [textContent]=\"relation?.email\"\r\n class=\"email link pointer\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <transaction-service-info class=\"summary-block\"\r\n [transaction]=\"transaction\"\r\n ></transaction-service-info>\r\n <transaction-service-status class=\"summary-block\"\r\n [transaction]=\"transaction\"\r\n ></transaction-service-status>\r\n <transaction-order-info class=\"summary-block\"\r\n [transaction]=\"transaction\"\r\n ></transaction-order-info>\r\n <transaction-payment-info class=\"summary-block\"\r\n [transaction]=\"transaction\"\r\n ></transaction-payment-info>\r\n <transaction-delivery-summary class=\"summary-block\"\r\n [transaction]=\"transaction\"\r\n [canPlanDelivery]=\"!isService && canPlanDelivery\"\r\n (planningRequestButtonClick)=\"planningRequestButtonClick.emit($event)\"\r\n (click)=\"showPopupTab(1)\"\r\n ></transaction-delivery-summary>\r\n <transaction-article-info class=\"summary-block\"\r\n [transaction]=\"transaction\"\r\n ></transaction-article-info>\r\n <transaction-product-summary class=\"summary-block\"\r\n [transaction]=\"transaction\"\r\n [product]=\"product\"\r\n ></transaction-product-summary>\r\n </div>\r\n\r\n <transaction-relation-edit [customerId]=\"relationId\" (validSubmit)=\"transactionEditClose()\"></transaction-relation-edit>\r\n `,\r\n styleUrls: [\r\n \"./transaction-header-block.component.scss\",\r\n ]\r\n})\r\nexport class TransactionHeaderBlockComponent extends TransactionBaseComponent {\r\n @ViewChild(TransactionRelationEditComponent, { static: true })\r\n public relationPopup: TransactionRelationEditComponent;\r\n\r\n @Input()\r\n public canPlanDelivery: boolean;\r\n\r\n @Output()\r\n public planningRequestButtonClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n public selectedTab: number;\r\n\r\n public showPopupTab(index: number): void {\r\n this.selectedTab = index;\r\n }\r\n\r\n constructor(\r\n public service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n\r\n public tabClick(): void {\r\n this.relationPopup.showPopup = true;\r\n }\r\n\r\n public transactionEditClose(): void {\r\n this.relationPopup.showPopup = false;\r\n }\r\n}\r\n","import {Component, forwardRef, HostBinding} from \"@angular/core\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {CoreComponentsIcon, IconCacheService} from \"@colijnit/corecomponents_v12\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-service-info\",\r\n template: `\r\n <transaction-summary-block\r\n [hideAvatar]=\"true\"\r\n [class.disabled]=\"!isNew\"\r\n label=\"SERVICE\"\r\n [icon]=\"iconWrench\"\r\n headerLabel=\"SERVICE_NUMBER\"\r\n [headerValue]=\"transactionInfo?.transactionNr\"\r\n subHeaderLabel=\"SERVICE_REQUEST_DATE\"\r\n [subHeaderValue]=\"transactionInfo?.transactionDate | date:'shortDate'\"\r\n ></transaction-summary-block>\r\n `\r\n})\r\nexport class TransactionServiceSummaryComponent extends TransactionBaseComponent {\r\n public readonly iconWrench: CoreComponentsIcon = CoreComponentsIcon.Wrench;\r\n\r\n public decimals: number;\r\n public forceReadonly: boolean;\r\n\r\n @HostBinding(\"class.hidden\")\r\n public hidden: boolean;\r\n\r\n public maxLength: number;\r\n public readonly: boolean;\r\n public required: boolean;\r\n\r\n constructor(\r\n public service: TransactionService,\r\n public iconCacheService: IconCacheService,\r\n ) {\r\n super(service);\r\n }\r\n}\r\n","import {Component, ContentChild, Input, OnDestroy, TemplateRef} from \"@angular/core\";\r\nimport {CoreComponentsIcon} from \"@colijnit/corecomponents_v12\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-summary-block\",\r\n template: `\r\n <div class=\"block-wrapper\">\r\n <div *ngIf=\"hideAvatar\" class=\"icon-wrapper\">\r\n <icon *ngIf=\"icon\" [icon]=\"icon\" class=\"dark\"></icon>\r\n <image-display *ngIf=\"!icon\" [model]=\"image\"></image-display>\r\n </div>\r\n <div class=\"content-wrapper\">\r\n <div class=\"value-block\">\r\n <div class=\"header-label\" [textContent]=\"headerLabel | localize\"></div>\r\n <div class=\"header\" [textContent]=\"headerValue\"></div>\r\n </div>\r\n <div class=\"value-block\">\r\n <div class=\"subheader-label\" [textContent]=\"subHeaderLabel | localize\"></div>\r\n <ng-container *ngIf=\"subHeaderTemplate\" [templateWrapper]=\"subHeaderTemplate\"></ng-container>\r\n <div *ngIf=\"!subHeaderTemplate\" class=\"subheader\" [textContent]=\"subHeaderValue\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n \"./transaction-summary-block.component.scss\"\r\n ]\r\n})\r\nexport class TransactionSummaryBlockComponent implements OnDestroy {\r\n\r\n public readonly Icon: typeof CoreComponentsIcon = CoreComponentsIcon;\r\n\r\n @Input()\r\n public hideAvatar: boolean = false;\r\n\r\n @Input()\r\n public label: string = \"\";\r\n\r\n @Input()\r\n public icon: CoreComponentsIcon;\r\n\r\n @Input()\r\n public image: string;\r\n\r\n @Input()\r\n public headerLabel: string = \"\";\r\n\r\n @Input()\r\n public headerValue: string;\r\n\r\n @Input()\r\n public subHeaderLabel: string = \"\";\r\n\r\n @Input()\r\n public subHeaderValue: string;\r\n\r\n @ContentChild(\"subHeaderTemplate\", { static: false })\r\n public subHeaderTemplate: TemplateRef<any>;\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subHeaderTemplate = undefined;\r\n }\r\n}\r\n","import {Component, forwardRef, HostBinding} from \"@angular/core\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {CoreComponentsIcon} from \"@colijnit/corecomponents_v12\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-service-status\",\r\n template: `\r\n <transaction-summary-block\r\n [class.disabled]=\"!isNew\"\r\n label=\"STATUS\"\r\n [icon]=\"iconPin\"\r\n headerLabel=\"SERVICE_STATE\"\r\n [headerValue]=\"serviceStatus\"\r\n ></transaction-summary-block>\r\n `\r\n})\r\nexport class TransactionServiceStatusComponent extends TransactionBaseComponent {\r\n public readonly iconPin: CoreComponentsIcon = CoreComponentsIcon.Pin;\r\n\r\n public get serviceStatus(): string {\r\n // TODO: transaction.serviceStatus\r\n return \"serviceStatus\";\r\n }\r\n public decimals: number;\r\n public forceReadonly: boolean;\r\n\r\n @HostBinding(\"class.hidden\")\r\n public hidden: boolean;\r\n\r\n public maxLength: number;\r\n public readonly: boolean;\r\n public required: boolean;\r\n\r\n constructor(\r\n public service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n}\r\n","import {Component, forwardRef, HostBinding} from \"@angular/core\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {CoreComponentsIcon} from \"@colijnit/corecomponents_v12\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-order-info\",\r\n template: `\r\n <transaction-summary-block\r\n [class.disabled]=\"!isNew\"\r\n label=\"ORDER_INFO\"\r\n [icon]=\"iconOrder\"\r\n headerLabel=\"ORDER_NUMBER\"\r\n [headerValue]=\"isService ? sourceTransactionNr : transactionInfo?.transactionNr\"\r\n subHeaderLabel=\"ORDER_DATE\"\r\n [subHeaderValue]=\"(isService ? sourceTransactionDate : this.transactionInfo?.transactionDate) | date:'shortDate'\"\r\n ></transaction-summary-block>\r\n `\r\n})\r\nexport class TransactionOrderSummaryComponent extends TransactionBaseComponent {\r\n public readonly iconOrder: CoreComponentsIcon = CoreComponentsIcon.Order;\r\n\r\n\r\n public get sourceTransactionNr(): number {\r\n // TODO: transaction.sourceTransactionNr\r\n return 0;\r\n }\r\n\r\n public get sourceTransactionDate(): Date {\r\n // TODO: transaction.sourceTransactionDate\r\n return new Date();\r\n }\r\n\r\n public decimals: number;\r\n public forceReadonly: boolean;\r\n\r\n @HostBinding(\"class.hidden\")\r\n public hidden: boolean;\r\n\r\n public maxLength: number;\r\n public readonly: boolean;\r\n public required: boolean;\r\n\r\n constructor(\r\n public service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n}\r\n","import {Component, forwardRef, HostBinding} from \"@angular/core\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {CoreComponentsIcon} from \"@colijnit/corecomponents_v12\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-payment-info\",\r\n template: `\r\n <transaction-summary-block\r\n [class.disabled]=\"!isNew\"\r\n label=\"PAYMENT\"\r\n [icon]=\"euro\"\r\n headerLabel=\"TOTAL_AMOUNT\"\r\n [headerValue]=\"transactionTotal?.netAmount | coCurrency\"\r\n subHeaderLabel=\"PAID_DOWN2\"\r\n [subHeaderValue]=\"transactionTotal?.transactionDiscountAmount | coCurrency\"\r\n ></transaction-summary-block>\r\n `\r\n})\r\nexport class TransactionPaymentInfoComponent extends TransactionBaseComponent {\r\n public readonly euro: CoreComponentsIcon.Information = CoreComponentsIcon.Information;\r\n\r\n public decimals: number;\r\n public forceReadonly: boolean;\r\n\r\n @HostBinding(\"class.hidden\")\r\n public hidden: boolean;\r\n\r\n public maxLength: number;\r\n public readonly: boolean;\r\n public required: boolean;\r\n\r\n constructor(\r\n public service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, HostBinding } from \"@angular/core\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-article-info\",\r\n template: `\r\n <transaction-summary-block\r\n [class.disabled]=\"!isNew\"\r\n headerLabel=\"ARTICLE_DESCRIPTION\"\r\n [image]=\"imageDataUri\"\r\n [headerValue]=\"sourceArticleDescription\"\r\n subHeaderLabel=\"ARTICLE_NR\"\r\n [subHeaderValue]=\"sourceArticleNr\"\r\n ></transaction-summary-block>\r\n `\r\n})\r\nexport class TransactionArticleSummaryComponent extends TransactionBaseComponent {\r\n\r\n public decimals: number;\r\n public forceReadonly: boolean;\r\n\r\n @HostBinding(\"class.hidden\")\r\n public hidden: boolean;\r\n\r\n public maxLength: number;\r\n public readonly: boolean;\r\n public required: boolean;\r\n\r\n public imageDataUri: string = \"\";\r\n\r\n public get sourceArticleDescription(): string {\r\n // TODO: transaction.sourceArticleDescription\r\n return \"sourceArticleDescription\";\r\n }\r\n\r\n public get sourceArticleNr(): string {\r\n // TODO: transaction.sourceArticleNr\r\n return \"sourceArticleNr\";\r\n }\r\n\r\n constructor(\r\n public service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n\r\n private async _getArticleImage(): Promise<void> {\r\n // TODO: Add to TransactionAPI?\r\n // if (this.transaction.sourceGoodId) {\r\n // this.imageDataUri =\r\n // (await this._articleDalRepo.getThumbnailImageContentTableGoods(\r\n // this.transaction.sourceGoodId + \"\", DocumentPublication.None, false, true));\r\n // }\r\n }\r\n\r\n public transactionSet(): void {\r\n this._getArticleImage();\r\n }\r\n}\r\n","import {Component, EventEmitter, forwardRef, HostBinding, Input, Output} from \"@angular/core\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\nimport {CoreComponentsIcon} from \"@colijnit/corecomponents_v12\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-delivery-summary\",\r\n template: `\r\n <transaction-summary-block\r\n label=\"DELIVERY\"\r\n [icon]=\"deliveryTruck\"\r\n headerLabel=\"DELIVERY_METHOD2\"\r\n [headerValue]=\"deliveryMethodDescription\"\r\n [subHeaderLabel]=\"transactionInfo?.preferredDeliveryDate ? 'DELIVERY_DATE' : !canPlanDelivery ? 'EXPECTED_DELIVERY_WEEK' : 'EXPECTED_DELIVERY'\"\r\n [subHeaderValue]=\"transactionInfo?.preferredDeliveryDate ? (transactionInfo?.deliveryDate | date:'shortDate') : 'WEEK' | localize | append:(' ') | append:(transactionInfo?.deliveryDate | date:'w')\">\r\n <ng-template #subHeaderTemplate *ngIf=\"canPlanDelivery\">\r\n <div class=\"planning-wrapper\">\r\n <span class=\"subheader\" *ngIf=\"transactionInfo?.preferredDeliveryDate\"\r\n [textContent]=\"(transactionInfo?.preferredDeliveryDate | date:'shortDate') + ', ' + transactionInfo?.preferredDeliveryDate | date: 'time' \"></span>\r\n<!-- <arrow-link *ngIf=\"!transactionInfo.preferredDeliveryDate\"-->\r\n<!-- label=\"PLAN_YOUR_DELIVERY\"-->\r\n<!-- (click)=\"planningRequestButtonClick.emit($event)\"-->\r\n<!-- ></arrow-link>-->\r\n <icon [icon]=\"calendarRoundOpen\" (click)=\"planningRequestButtonClick.emit($event)\"></icon>\r\n </div>\r\n </ng-template>\r\n </transaction-summary-block>\r\n `,\r\n styleUrls: [\r\n \"./transaction-delivery-summary.component.scss\"\r\n ]\r\n})\r\nexport class TransactionDeliverySummaryComponent extends TransactionBaseComponent {\r\n public readonly deliveryTruck: CoreComponentsIcon.DeliveryTruck = CoreComponentsIcon.DeliveryTruck;\r\n public readonly calendarRoundOpen: CoreComponentsIcon.CalendarRoundOpen = CoreComponentsIcon.CalendarRoundOpen;\r\n\r\n public decimals: number;\r\n public forceReadonly: boolean;\r\n\r\n @HostBinding(\"class.hidden\")\r\n public hidden: boolean;\r\n\r\n public maxLength: number;\r\n public readonly: boolean;\r\n public required: boolean;\r\n\r\n public deliveryMethodDescription: string = \"\";\r\n\r\n @Input()\r\n public canPlanDelivery: boolean = false;\r\n\r\n @Output()\r\n public planningRequestButtonClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor(\r\n public service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n\r\n public async transactionSet(): Promise<void> {\r\n // TODO: move call to TransactionAPI?\r\n //this.deliveryMethodDescription = await this._lookupService.lookup(DeliveryMethod, this.transaction.deliveryMethod);\r\n }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-product-contract-summary\",\r\n template: `\r\n <transaction-summary-block\r\n [class.disabled]=\"!isNew\"\r\n label=\"CONTRACT\"\r\n [image]=\"product?.imageAsDataUri\"\r\n headerLabel=\"PRODUCT\"\r\n [headerValue]=\"product?.product\"\r\n subHeaderLabel=\"REFERENCE\"\r\n [subHeaderValue]=\"product?.productReference\"\r\n ></transaction-summary-block>\r\n `\r\n})\r\nexport class TransactionProductContractSummaryComponent extends TransactionBaseComponent {\r\n\r\n constructor (\r\n public service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n\r\n public productSet(): void {\r\n // TODO: add to TransactionAPI?\r\n if (!this.product.imageAsDataUri) {\r\n // this._generalRepo.getDocument(this.product.image.documentId).then((doc: CoDocument) => {\r\n // this.product.imageAsDataUri = doc.thumbnailBodyAsDataUri;\r\n // });\r\n }\r\n }\r\n}\r\n","import {Component, forwardRef, HostBinding} from \"@angular/core\";\r\nimport {TransactionBaseComponent} from \"../../core/base/transaction-base.component\";\r\nimport {TransactionService} from \"../../../service/transaction.service\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"transaction-product-summary\",\r\n template: `\r\n <transaction-summary-block\r\n [class.disabled]=\"!isNew\"\r\n label=\"PRODUCT\"\r\n [image]=\"product?.imageAsDataUri\"\r\n headerLabel=\"PRODUCT_TYPE\"\r\n [headerValue]=\"product?.productReference\"\r\n subHeaderLabel=\"PRODUCT\"\r\n [subHeaderValue]=\"product?.product\"\r\n ></transaction-summary-block>\r\n `,\r\n})\r\nexport class TransactionProductSummaryComponent extends TransactionBaseComponent {\r\n\r\n decimals: number;\r\n forceReadonly: boolean;\r\n @HostBinding(\"class.hidden\")\r\n hidden: boolean;\r\n maxLength: number;\r\n objectConfigName: string;\r\n readonly: boolean;\r\n redErrorBackground: boolean;\r\n required: boolean;\r\n\r\n constructor (\r\n public service: TransactionService\r\n ) {\r\n super(service);\r\n }\r\n\r\n public productSet(): void {\r\n // TODO: Add to TransactionAPI?\r\n if (this.product && !this.product.imageAsDataUri && this.product.image && this.product.image.documentId) {\r\n // this._generalRepo.getDocument(this.product.image.documentId).then((doc: CoDocument) => {\r\n // this.product.imageAsDataUri = doc.thumbnailBodyAsDataUri;\r\n // });\r\n }\r\n }\r\n}\r\n","import {Directive, Input, OnChanges, OnDestroy, SimpleChange, SimpleChanges, TemplateRef, ViewContainerRef, ViewRef} from \"@angular/core\";\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: \"[templateWrapper]\"\r\n})\r\nexport class TemplateWrapperDirective implements OnDestroy, OnChanges {\r\n @Input()\r\n public templateWrapper: TemplateRef<any> | null = null;\r\n\r\n @Input()\r\n public templateWrapperContext: Object | null = null;\r\n\r\n private _viewRef: ViewRef;\r\n\r\n constructor(protected viewContainer: ViewContainerRef) {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const recreateView: boolean = this._shouldRecreateView(changes);\r\n\r\n if (recreateView) {\r\n if (this._viewRef) {\r\n this.viewContainer.remove(this.viewContainer.indexOf(this._viewRef));\r\n }\r\n\r\n if (this.templateWrapper) {\r\n this._viewRef = this.viewContainer.createEmbeddedView(\r\n this.templateWrapper, this.templateWrapperContext);\r\n }\r\n } else {\r\n if (this._viewRef && this.templateWrapperContext) {\r\n this._updateExistingContext(this.templateWrapperContext);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._viewRef) {\r\n this.viewContainer.remove(this.viewContainer.indexOf(this._viewRef));\r\n this._viewRef = undefined;\r\n }\r\n this.templateWrapper = undefined;\r\n }\r\n\r\n private _shouldRecreateView(changes: SimpleChanges): boolean {\r\n const ctxChange: any = changes[\"templateWrapperContext\"];\r\n return !!changes[\"templateWrapper\"] || (ctxChange && this._hasContextShapeChanged(ctxChange));\r\n }\r\n\r\n private _hasContextShapeChanged(ctxChange: SimpleChange): boolean {\r\n const prevCtxKeys: any = Object.keys(ctxChange.previousValue || {});\r\n const currCtxKeys: any = Object.keys(ctxChange.currentValue || {});\r\n\r\n if (prevCtxKeys.length === currCtxKeys.length) {\r\n for (const propName of currCtxKeys) {\r\n if (prevCtxKeys.indexOf(propName) === -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n private _updateExistingContext(ctx: Object): void {\r\n for (const propName of Object.keys(ctx)) {\r\n (<any>this._viewRef).context[propName] = (<any>this.templateWrapperContext)[propName];\r\n }\r\n }\r\n}\r\n","import {Component, Output, EventEmitter, Input, ViewChild} from \"@angular/core\";\r\nimport {ButtonComponent} from \"@colijnit/corecomponents_v12\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"default-ok-cancel-buttons\",\r\n template: `\r\n <co-button *ngIf=\"!hideOk\" [label]=\"okLabel\" [disabled]=\"okDisabled\" class=\"ok\" #okButton (click)=\"onOkClick($event)\"></co-button>\r\n <co-button *ngIf=\"!hideCancel\" label=\"CANCEL\" (click)=\"cancelClick.emit($event)\"></co-button>\r\n <ng-content></ng-content>\r\n `,\r\n styleUrls: [\r\n \"./default-ok-cancel-buttons.component.scss\"\r\n ]\r\n})\r\nexport class DefaultOkCancelButtonsComponent {\r\n @Input()\r\n public okDisabled: boolean;\r\n\r\n @Input()\r\n public hideCancel: boolean = false;\r\n\r\n @Input()\r\n public hideOk: boolean = false;\r\n\r\n @Input()\r\n public okLabel: string = \"OK\";\r\n\r\n // only emits when ok button was not disabled when it was clicked\r\n @Output()\r\n public okClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public cancelClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\r\n\r\n @ViewChild(\"okButton\")\r\n public okButtonComp: ButtonComponent;\r\n\r\n constructor() {\r\n }\r\n\r\n public onOkClick(event: MouseEvent): void {\r\n if (this.okButtonComp && !this.okButtonComp.disabled) {\r\n this.okClick.emit(event);\r\n }\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {\r\n ButtonModule,\r\n CoDialogModule,\r\n CoDialogPromptModule,\r\n CoGridModule,\r\n CoSidebarModule,\r\n DropDownModule,\r\n FormModule,\r\n IconModule,\r\n InputCheckboxModule,\r\n InputComboBoxModule,\r\n InputDatePickerModule,\r\n InputNumberPickerModule,\r\n InputRadioButtonModule,\r\n InputTextModule,\r\n MultiSelectListModule,\r\n PopupModule,\r\n} from \"@colijnit/corecomponents_v12\";\r\nimport {FlexModule} from \"@angular/flex-layout\";\r\nimport {DictionaryService} from \"../../service/dictionary.service\";\r\nimport {TransactionService} from \"../../service/transaction.service\";\r\nimport {OptionsService} from \"../../service/options.service\";\r\nimport {CoreModule} from \"../core/core.module\";\r\nimport {IoneServiceOrderComponent} from \"./ione-service-order.component\";\r\nimport {ServiceOrderComponent} from \"./service-order.component\";\r\n\r\nimport {DropDownButtonModule} from \"@syncfusion/ej2-angular-splitbuttons\";\r\nimport {CheckBoxModule, ChipListModule} from \"@syncfusion/ej2-angular-buttons\";\r\nimport {DropDownListModule} from \"@syncfusion/ej2-angular-dropdowns\";\r\nimport {TransactionOrderTotalsComponent} from \"./transaction-order-totals/transaction-order-totals.component\";\r\nimport {TransactionOrderLineViewComponent} from \"./transaction-order-line-view/transaction-order-line-view.component\";\r\nimport {IoneShoppingCartModule} from \"../shopping-cart/ione-shopping-cart.module\";\r\nimport {TransactionOrderLinesComponent} from \"./transaction-order-lines/transaction-order-lines.component\";\r\nimport {TransactionRelationAddressComponent} from \"./transaction-relation/transaction-relation-address.component\";\r\nimport {TransactionArticleTextComponent} from \"./transaction-article-text/transaction-article-text.component\";\r\nimport {TransactionSidebarRightComponent} from \"./transaction-sidebar/transaction-sidebar-right.component\";\r\nimport {TabModule} from \"@syncfusion/ej2-angular-navigations\";\r\nimport {TransactionLineAccordionComponent} from \"./transaction-sidebar/transaction-line-accordion.component\";\r\nimport {TransactionHeaderBlockComponent} from \"./transaction-header-block/transaction-header-block.component\";\r\nimport {TransactionServiceSummaryComponent} from \"./summary/transaction-service-summary.component\";\r\nimport {TransactionSummaryBlockComponent} from \"./summary/transaction-summary-block.component\";\r\nimport {TransactionServiceStatusComponent} from \"./summary/transaction-service-status.component\";\r\nimport {TransactionOrderSummaryComponent} from \"./summary/transaction-order-summary.component\";\r\nimport {TransactionPaymentInfoComponent} from \"./summary/transaction-payment-info.component\";\r\nimport {TransactionRelationEditComponent} from \"./transaction-relation/transaction-relation-edit.component\";\r\nimport {TransactionArticleSummaryComponent} from \"./summary/transaction-article-summary.component\";\r\nimport {TransactionDeliverySummaryComponent} from \"./summary/transaction-delivery-summary.component\";\r\nimport {TransactionProductContractSummaryComponent} from \"./summary/transaction-product-contract-summary.component\";\r\nimport {TransactionProductSummaryComponent} from \"./summary/transaction-product-summary.component\";\r\nimport {TemplateWrapperDirective} from \"../core/directive/template-wrapper.directive\";\r\nimport {DefaultOkCancelButtonsComponent} from \"../core/base/default-ok-cancel-buttons.component\";\r\nimport {CommonModule} from \"@angular/common\";\r\n\r\n@NgModule({\r\n imports: [\r\n IconModule,\r\n InputTextModule,\r\n InputCheckboxModule,\r\n InputRadioButtonModule,\r\n FormModule,\r\n InputComboBoxModule,\r\n InputDatePickerModule,\r\n InputNumberPickerModule,\r\n CoDialogModule,\r\n CoDialogPromptModule,\r\n ButtonModule,\r\n FlexModule,\r\n MultiSelectListModule,\r\n DropDownModule,\r\n PopupModule.forRoot(),\r\n CoSidebarModule,\r\n CoGridModule,\r\n CoreModule,\r\n ChipListModule,\r\n DropDownButtonModule,\r\n CheckBoxModule,\r\n DropDownListModule,\r\n IoneShoppingCartModule,\r\n TabModule,\r\n CommonModule,\r\n ],\r\n declarations: [\r\n TemplateWrapperDirective,\r\n DefaultOkCancelButtonsComponent,\r\n IoneServiceOrderComponent,\r\n ServiceOrderComponent,\r\n TransactionOrderTotalsComponent,\r\n TransactionOrderLineViewComponent,\r\n TransactionOrderLinesComponent,\r\n TransactionRelationAddressComponent,\r\n TransactionArticleTextComponent,\r\n TransactionSidebarRightComponent,\r\n TransactionLineAccordionComponent,\r\n TransactionHeaderBlockComponent,\r\n TransactionServiceSummaryComponent,\r\n TransactionSummaryBlockComponent,\r\n TransactionServiceStatusComponent,\r\n TransactionOrderSummaryComponent,\r\n TransactionPaymentInfoComponent,\r\n TransactionRelationEditComponent,\r\n TransactionArticleSummaryComponent,\r\n TransactionDeliverySummaryComponent,\r\n TransactionProductContractSummaryComponent,\r\n TransactionProductSummaryComponent,\r\n ],\r\n providers: [\r\n DictionaryService,\r\n TransactionService,\r\n OptionsService\r\n ],\r\n entryComponents: [\r\n IoneServiceOrderComponent\r\n ],\r\n exports: [IoneServiceOrderComponent],\r\n bootstrap: [IoneServiceOrderComponent]\r\n})\r\nexport class IoneServiceOrderModule {}\r\n","//export * from \"./app/component/ione-transaction.module\";\r\n//export * from \"./app/component/ione-transaction.component\";\r\n//export * from \"./app/component/checkout/retail-transaction-checkout/retail-transaction-checkout.component\";\r\nexport * from \"./app/component/checkout/ione-checkout.component\";\r\nexport * from \"./app/component/checkout/ione-checkout.module\";\r\nexport * from \"./app/component/shopping-cart/ione-shopping-cart.component\";\r\nexport * from \"./app/component/shopping-cart/ione-shopping-cart.module\";\r\nexport * from \"./app/component/service-order/ione-service-order.component\";\r\nexport * from \"./app/component/service-order/ione-service-order-module\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {CheckoutLoginComponent as ɵj} from './app/component/checkout/checkout-login/checkout-login.component';\nexport {CheckoutOverviewBlockComponent as ɵd} from './app/component/checkout/checkout-overview-block/checkout-overview-block.component';\nexport {CheckoutOverviewDeliveryAddressComponent as ɵx} from './app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component';\nexport {CheckoutOverviewDeliveryEditComponent as ɵh} from './app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component';\nexport {CheckoutOverviewRelationAddressComponent as ɵw} from './app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component';\nexport {CheckoutOverviewRelationEditComponent as ɵe} from './app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component';\nexport {CheckoutOverviewComponent as ɵc} from './app/component/checkout/checkout-overview/checkout-overview.component';\nexport {CheckOutRelationSuggestionsListItemComponent as ɵz} from './app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component';\nexport {CheckOutRelationSuggestionsListComponent as ɵy} from './app/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component';\nexport {CheckoutComponent as ɵb} from './app/component/checkout/checkout/checkout.component';\nexport {RetailTransactionCheckoutComponent as ɵa} from './app/component/checkout/retail-transaction-checkout/retail-transaction-checkout.component';\nexport {IconComponent as ɵv} from './app/component/common/icon/icon.component';\nexport {ImageDisplayComponent as ɵt} from './app/component/common/image-display/image-display.component';\nexport {NoImageDisplayComponent as ɵu} from './app/component/common/no-image-display/no-image-display.component';\nexport {DefaultOkCancelButtonsComponent as ɵbg} from './app/component/core/base/default-ok-cancel-buttons.component';\nexport {TransactionBaseComponent as ɵbi} from './app/component/core/base/transaction-base.component';\nexport {CoreModule as ɵm} from './app/component/core/core.module';\nexport {TemplateWrapperDirective as ɵbf} from './app/component/core/directive/template-wrapper.directive';\nexport {StockStatusIndicatorComponent as ɵbd} from './app/component/core/stock-status-indicator/stock-status-indicator.component';\nexport {ServiceOrderComponent as ɵbh} from './app/component/service-order/service-order.component';\nexport {TransactionArticleSummaryComponent as ɵbx} from './app/component/service-order/summary/transaction-article-summary.component';\nexport {TransactionDeliverySummaryComponent as ɵby} from './app/component/service-order/summary/transaction-delivery-summary.component';\nexport {TransactionOrderSummaryComponent as ɵbv} from './app/component/service-order/summary/transaction-order-summary.component';\nexport {TransactionPaymentInfoComponent as ɵbw} from './app/component/service-order/summary/transaction-payment-info.component';\nexport {TransactionProductContractSummaryComponent as ɵbz} from './app/component/service-order/summary/transaction-product-contract-summary.component';\nexport {TransactionProductSummaryComponent as ɵca} from './app/component/service-order/summary/transaction-product-summary.component';\nexport {TransactionServiceStatusComponent as ɵbu} from './app/component/service-order/summary/transaction-service-status.component';\nexport {TransactionServiceSummaryComponent as ɵbs} from './app/component/service-order/summary/transaction-service-summary.component';\nexport {TransactionSummaryBlockComponent as ɵbt} from './app/component/service-order/summary/transaction-summary-block.component';\nexport {TransactionArticleTextComponent as ɵbj} from './app/component/service-order/transaction-article-text/transaction-article-text.component';\nexport {TransactionHeaderBlockComponent as ɵbq} from './app/component/service-order/transaction-header-block/transaction-header-block.component';\nexport {TransactionOrderLineViewComponent as ɵbl} from './app/component/service-order/transaction-order-line-view/transaction-order-line-view.component';\nexport {TransactionOrderLinesComponent as ɵbm} from './app/component/service-order/transaction-order-lines/transaction-order-lines.component';\nexport {TransactionOrderTotalsComponent as ɵbk} from './app/component/service-order/transaction-order-totals/transaction-order-totals.component';\nexport {TransactionRelationAddressComponent as ɵbn} from './app/component/service-order/transaction-relation/transaction-relation-address.component';\nexport {TransactionRelationEditComponent as ɵbr} from './app/component/service-order/transaction-relation/transaction-relation-edit.component';\nexport {TransactionLineAccordionComponent as ɵbp} from './app/component/service-order/transaction-sidebar/transaction-line-accordion.component';\nexport {TransactionSidebarRightComponent as ɵbo} from './app/component/service-order/transaction-sidebar/transaction-sidebar-right.component';\nexport {CharacteristicAnswerComponent as ɵbe} from './app/component/shopping-cart/characteristic-answer/characteristic-answer.component';\nexport {ShoppingCartLineComponent as ɵbc} from './app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component';\nexport {ShoppingCartManagerComponent as ɵba} from './app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component';\nexport {ShoppingCartComponent as ɵbb} from './app/component/shopping-cart/shopping-cart/shopping-cart.component';\nexport {AppendPipe as ɵn} from './app/pipe/append.pipe';\nexport {CoCurrencyPipe as ɵr} from './app/pipe/co-currency.pipe';\nexport {DateDurationPipe as ɵp} from './app/pipe/date-duration.pipe';\nexport {DeliveryTimePipe as ɵo} from './app/pipe/delivery-time.pipe';\nexport {LocalizePipe as ɵq} from './app/pipe/localize.pipe';\nexport {SafeStylePipe as ɵs} from './app/pipe/safe-style-pipe';\nexport {DictionaryService as ɵi} from './app/service/dictionary.service';\nexport {IOneConnectorAdapterService as ɵg} from './app/service/ione-connector-adapter.service';\nexport {OptionsService as ɵk} from './app/service/options.service';\nexport {TransactionEventService as ɵl} from './app/service/transaction-event.service';\nexport {TransactionService as ɵf} from './app/service/transaction.service';"],"names":["BehaviorSubject","Options","Injectable","PROP_META_KEY","ObjectUtils","notNill","GetLogicalBooleanValue","GetYesNoDbBooleanValue","GetTrueFalseDbBooleanValue","GetOneZeroDbBooleanValue","DateUtils","NumberUtils","isNill","MapPropertyDecorator","BooleanTextDecorator","JsonFieldFieldDecorator","ComplexArrayDecorator","Transaction","ArticleFullObject","ImageUtils","RelationPrivacySetting","TransactionInfoResponse","CustomerFullObject","GetPostalCodeRetrievalOutputParams","RelationListObject","LineOperationResponse","EventEmitter","TransactionTotal","NULL_RELATION_OBJECT","TransactionInfo","LineOperationStatus","ArrayUtils","PendingReasonType","SequenceName","TransactionKind","TransactionLineType","NULL_CUSTOMER_FULL_OBJECT","SetTransactionDeliveryOptionsRequest","Subject","Component","Input","Output","GenderType","ContactOption","RelationNameKind","FunctionUtils","Address","AddressType","CommunicationType","BusinessObjectUtils","ChangeDetectorRef","ViewChild","FormComponent","CoSidebarComponent","PromptService","Pipe","DomSanitizer","HostBinding","CoreComponentsIcon","IconCacheService","NgModule","CommonModule","IconModule","InputTextModule","InputCheckboxModule","InputRadioButtonModule","FormModule","InputComboBoxModule","InputDatePickerModule","InputNumberPickerModule","CoDialogModule","CoDialogPromptModule","ButtonModule","FlexModule","MultiSelectListModule","MatStepperModule","DropDownModule","PopupModule","CoSidebarModule","CoGridModule","ResolvePendingLineReasonRequest","throwError","SortDirection","SortType","StockStatus","NULL_RELATION_LIST_OBJECT","relationRequest","RelationRequest","Directive","trigger","state","style","transition","animate","Sidebar","TransactionLineInfo","Accordion","ContentChild","ViewContainerRef","ChipListModule","DropDownButtonModule","CheckBoxModule","DropDownListModule","TabModule"],"mappings":"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"}