@acorex-platform/module-business-core-client 0.0.15

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.
@@ -0,0 +1,1449 @@
1
+ import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';
2
+ import { createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';
3
+ import { contactAssignmentDetailsCrudActionsForPartyContext, contactAssignmentPartyConditions } from '@acorex-platform/module-person-core-contracts';
4
+ import { RootConfig as RootConfig$1, locationAssignmentDetailsCrudActionsForPartyContext, locationAssignmentPartyConditions } from '@acorex-platform/module-location-management-contracts';
5
+
6
+ const AXMBusinessCoreMenuKeys = {
7
+ Root: 'business-core',
8
+ Manufacturers: 'business-core.manufacturers',
9
+ Divider1: 'business-core.divider-1',
10
+ Industries: 'business-core.industries',
11
+ BusinessTypes: 'business-core.business-types',
12
+ BusinessStatuses: 'business-core.business-statuses',
13
+ Divider2: 'business-core.divider-2',
14
+ PartyTypes: 'business-core.party-types',
15
+ PartySegments: 'business-core.party-segments',
16
+ LifecycleStages: 'business-core.lifecycle-stages',
17
+ };
18
+
19
+ const AXMBusinessCorePermissionKeys = {
20
+ BusinessCore: {
21
+ Manufacturer: {
22
+ Management: 'BusinessCore:Permission:Manufacturer.Management',
23
+ },
24
+ Industry: {
25
+ Management: 'BusinessCore:Permission:Industry.Management',
26
+ },
27
+ BusinessType: {
28
+ Management: 'BusinessCore:Permission:BusinessType.Management',
29
+ },
30
+ BusinessStatus: {
31
+ Management: 'BusinessCore:Permission:BusinessStatus.Management',
32
+ },
33
+ PartyType: {
34
+ Management: 'BusinessCore:Permission:PartyType.Management',
35
+ },
36
+ PartySegment: {
37
+ Management: 'BusinessCore:Permission:PartySegment.Management',
38
+ },
39
+ LifecycleStage: {
40
+ Management: 'BusinessCore:Permission:LifecycleStage.Management',
41
+ },
42
+ },
43
+ };
44
+
45
+ const config = {
46
+ i18n: 'business-core',
47
+ module: 'BusinessCore',
48
+ };
49
+ const RootConfig = {
50
+ config,
51
+ module: {
52
+ name: config.module,
53
+ title: `@${config.i18n}:module.title`,
54
+ icon: 'fa-light fa-building',
55
+ },
56
+ entities: {
57
+ manufacturer: {
58
+ name: 'Manufacturer',
59
+ title: `@${config.i18n}:manufacturers.entities.manufacturer.title`,
60
+ titlePlural: `@${config.i18n}:manufacturers.entities.manufacturer.plural`,
61
+ icon: 'fa-light fa-industry',
62
+ },
63
+ industry: {
64
+ name: 'Industry',
65
+ title: `@${config.i18n}:industries.entities.industry.title`,
66
+ titlePlural: `@${config.i18n}:industries.entities.industry.plural`,
67
+ icon: 'fa-light fa-chart-line',
68
+ },
69
+ businessType: {
70
+ name: 'BusinessType',
71
+ title: `@${config.i18n}:business-types.entities.business-type.title`,
72
+ titlePlural: `@${config.i18n}:business-types.entities.business-type.plural`,
73
+ icon: 'fa-light fa-briefcase',
74
+ },
75
+ businessStatus: {
76
+ name: 'BusinessStatus',
77
+ title: `@${config.i18n}:business-statuses.entities.business-status.title`,
78
+ titlePlural: `@${config.i18n}:business-statuses.entities.business-status.plural`,
79
+ icon: 'fa-light fa-circle-check',
80
+ },
81
+ partyType: {
82
+ name: 'PartyType',
83
+ title: `@${config.i18n}:party-types.entities.party-type.title`,
84
+ titlePlural: `@${config.i18n}:party-types.entities.party-type.plural`,
85
+ icon: 'fa-light fa-tag',
86
+ },
87
+ partySegment: {
88
+ name: 'PartySegment',
89
+ title: `@${config.i18n}:party-segments.entities.party-segment.title`,
90
+ titlePlural: `@${config.i18n}:party-segments.entities.party-segment.plural`,
91
+ icon: 'fa-light fa-chart-pie',
92
+ },
93
+ lifecycleStage: {
94
+ name: 'LifecycleStage',
95
+ title: `@${config.i18n}:lifecycle-stages.entities.lifecycle-stage.title`,
96
+ titlePlural: `@${config.i18n}:lifecycle-stages.entities.lifecycle-stage.plural`,
97
+ icon: 'fa-light fa-timeline',
98
+ },
99
+ party: {
100
+ name: 'Party',
101
+ title: `@${config.i18n}:parties.entities.party.title`,
102
+ titlePlural: `@${config.i18n}:parties.entities.party.plural`,
103
+ icon: 'fa-light fa-building',
104
+ },
105
+ },
106
+ };
107
+
108
+ //#endregion
109
+ //#region ---- Entity Factory ----
110
+ async function businessStatusFactory() {
111
+ const sections = [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }];
112
+ const propertyLayouts = [
113
+ { name: 'code', layout: { positions: { lg: { colSpan: 4, order: 1 } } } },
114
+ { name: 'title', layout: { positions: { lg: { colSpan: 8, order: 2 } } } },
115
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
116
+ ];
117
+ const entityDef = {
118
+ module: RootConfig.module.name,
119
+ name: RootConfig.entities.businessStatus.name,
120
+ title: RootConfig.entities.businessStatus.title,
121
+ icon: RootConfig.entities.businessStatus.icon,
122
+ formats: {
123
+ individual: RootConfig.entities.businessStatus.title,
124
+ plural: RootConfig.entities.businessStatus.titlePlural,
125
+ searchResult: {
126
+ title: '{{ title }}',
127
+ description: '{{ code }}',
128
+ },
129
+ },
130
+ plugins: [{ name: 'history' }, { name: 'compare' }, { name: 'clone' }, { name: 'disable' }],
131
+ groups: [{ id: 'basic-info', title: '@business-core:business-statuses.entities.business-status.groups.basic-info' }],
132
+ properties: [
133
+ {
134
+ name: 'id',
135
+ title: '@general:terms.common.id',
136
+ groupId: 'basic-info',
137
+ schema: {
138
+ dataType: 'uuid',
139
+ visible: false,
140
+ readonly: true,
141
+ unique: { enabled: true },
142
+ },
143
+ },
144
+ {
145
+ name: 'code',
146
+ title: '@general:terms.common.code',
147
+ groupId: 'basic-info',
148
+ options: {
149
+ sort: { enabled: true },
150
+ filter: {
151
+ advance: { enabled: true },
152
+ inline: { enabled: true },
153
+ },
154
+ },
155
+ schema: {
156
+ dataType: 'string',
157
+ interface: {
158
+ type: AXPWidgetsList.Editors.TextBox,
159
+ options: {
160
+ placeholder: '@business-core:business-statuses.entities.business-status.fields.code.placeholder',
161
+ },
162
+ },
163
+ },
164
+ validations: [{ rule: 'required' }],
165
+ },
166
+ {
167
+ name: 'title',
168
+ title: '@general:terms.common.title',
169
+ groupId: 'basic-info',
170
+ options: {
171
+ sort: { enabled: true },
172
+ filter: {
173
+ advance: { enabled: true },
174
+ inline: { enabled: true },
175
+ },
176
+ },
177
+ schema: {
178
+ dataType: 'string',
179
+ interface: {
180
+ type: AXPWidgetsList.Editors.TextBox,
181
+ options: {
182
+ placeholder: '@business-core:business-statuses.entities.business-status.fields.title.placeholder',
183
+ },
184
+ },
185
+ },
186
+ validations: [{ rule: 'required' }],
187
+ },
188
+ {
189
+ name: 'description',
190
+ title: '@general:terms.common.description',
191
+ groupId: 'basic-info',
192
+ schema: {
193
+ dataType: 'string',
194
+ interface: {
195
+ type: AXPWidgetsList.Editors.LargeTextBox,
196
+ options: {
197
+ rows: 3,
198
+ placeholder: '@business-core:business-statuses.entities.business-status.fields.description.placeholder',
199
+ },
200
+ },
201
+ },
202
+ },
203
+ ],
204
+ columns: [
205
+ { name: 'code', options: { width: '120px', order: 1 } },
206
+ { name: 'title', options: { width: '220px', order: 2 } },
207
+ ],
208
+ interfaces: {
209
+ master: {
210
+ create: {
211
+ sections,
212
+ properties: propertyLayouts,
213
+ },
214
+ update: {
215
+ sections,
216
+ properties: propertyLayouts,
217
+ },
218
+ single: {
219
+ title: '{{ title }}',
220
+ sections,
221
+ properties: propertyLayouts,
222
+ actions: [...entityMasterRecordActions()],
223
+ },
224
+ list: {
225
+ actions: [...entityMasterCrudActions()],
226
+ views: [
227
+ createAllQueryView({
228
+ sorts: [{ name: 'code', dir: 'asc' }],
229
+ }),
230
+ ],
231
+ },
232
+ },
233
+ },
234
+ };
235
+ return entityDef;
236
+ }
237
+ //#endregion
238
+
239
+ //#endregion
240
+
241
+ //#endregion
242
+ //#region ---- Entity Factory ----
243
+ async function businessTypeFactory() {
244
+ const sections = [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }];
245
+ const propertyLayouts = [
246
+ { name: 'code', layout: { positions: { lg: { colSpan: 4, order: 1 } } } },
247
+ { name: 'title', layout: { positions: { lg: { colSpan: 8, order: 2 } } } },
248
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
249
+ ];
250
+ const entityDef = {
251
+ module: RootConfig.module.name,
252
+ name: RootConfig.entities.businessType.name,
253
+ title: RootConfig.entities.businessType.title,
254
+ icon: RootConfig.entities.businessType.icon,
255
+ formats: {
256
+ individual: RootConfig.entities.businessType.title,
257
+ plural: RootConfig.entities.businessType.titlePlural,
258
+ searchResult: {
259
+ title: '{{ title }}',
260
+ description: '{{ code }}',
261
+ },
262
+ },
263
+ plugins: [{ name: 'history' }, { name: 'compare' }, { name: 'clone' }, { name: 'disable' }],
264
+ groups: [{ id: 'basic-info', title: '@business-core:business-types.entities.business-type.groups.basic-info' }],
265
+ properties: [
266
+ {
267
+ name: 'id',
268
+ title: '@general:terms.common.id',
269
+ groupId: 'basic-info',
270
+ schema: {
271
+ dataType: 'uuid',
272
+ visible: false,
273
+ readonly: true,
274
+ unique: { enabled: true },
275
+ },
276
+ },
277
+ {
278
+ name: 'code',
279
+ title: '@general:terms.common.code',
280
+ groupId: 'basic-info',
281
+ options: {
282
+ sort: { enabled: true },
283
+ filter: {
284
+ advance: { enabled: true },
285
+ inline: { enabled: true },
286
+ },
287
+ },
288
+ schema: {
289
+ dataType: 'string',
290
+ interface: {
291
+ type: AXPWidgetsList.Editors.TextBox,
292
+ options: {
293
+ placeholder: '@business-core:business-types.entities.business-type.fields.code.placeholder',
294
+ },
295
+ },
296
+ },
297
+ validations: [{ rule: 'required' }],
298
+ },
299
+ {
300
+ name: 'title',
301
+ title: '@general:terms.common.title',
302
+ groupId: 'basic-info',
303
+ options: {
304
+ sort: { enabled: true },
305
+ filter: {
306
+ advance: { enabled: true },
307
+ inline: { enabled: true },
308
+ },
309
+ },
310
+ schema: {
311
+ dataType: 'string',
312
+ interface: {
313
+ type: AXPWidgetsList.Editors.TextBox,
314
+ options: {
315
+ placeholder: '@business-core:business-types.entities.business-type.fields.title.placeholder',
316
+ },
317
+ },
318
+ },
319
+ validations: [{ rule: 'required' }],
320
+ },
321
+ {
322
+ name: 'description',
323
+ title: '@general:terms.common.description',
324
+ groupId: 'basic-info',
325
+ schema: {
326
+ dataType: 'string',
327
+ interface: {
328
+ type: AXPWidgetsList.Editors.LargeTextBox,
329
+ options: {
330
+ rows: 3,
331
+ placeholder: '@business-core:business-types.entities.business-type.fields.description.placeholder',
332
+ },
333
+ },
334
+ },
335
+ },
336
+ ],
337
+ columns: [
338
+ { name: 'code', options: { width: '120px', order: 1 } },
339
+ { name: 'title', options: { width: '220px', order: 2 } },
340
+ ],
341
+ interfaces: {
342
+ master: {
343
+ create: {
344
+ sections,
345
+ properties: propertyLayouts,
346
+ },
347
+ update: {
348
+ sections,
349
+ properties: propertyLayouts,
350
+ },
351
+ single: {
352
+ title: '{{ title }}',
353
+ sections,
354
+ properties: propertyLayouts,
355
+ actions: [...entityMasterRecordActions()],
356
+ },
357
+ list: {
358
+ actions: [...entityMasterCrudActions()],
359
+ views: [
360
+ createAllQueryView({
361
+ sorts: [{ name: 'code', dir: 'asc' }],
362
+ }),
363
+ ],
364
+ },
365
+ },
366
+ },
367
+ };
368
+ return entityDef;
369
+ }
370
+ //#endregion
371
+
372
+ //#endregion
373
+
374
+ //#endregion
375
+ //#region ---- Entity Factory ----
376
+ async function industryFactory() {
377
+ const sections = [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }];
378
+ const propertyLayouts = [
379
+ { name: 'code', layout: { positions: { lg: { colSpan: 4, order: 1 } } } },
380
+ { name: 'title', layout: { positions: { lg: { colSpan: 8, order: 2 } } } },
381
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
382
+ ];
383
+ const entityDef = {
384
+ module: RootConfig.module.name,
385
+ name: RootConfig.entities.industry.name,
386
+ title: RootConfig.entities.industry.title,
387
+ icon: RootConfig.entities.industry.icon,
388
+ formats: {
389
+ individual: RootConfig.entities.industry.title,
390
+ plural: RootConfig.entities.industry.titlePlural,
391
+ searchResult: {
392
+ title: '{{ title }}',
393
+ description: '{{ code }}',
394
+ },
395
+ },
396
+ plugins: [{ name: 'history' }, { name: 'compare' }, { name: 'clone' }, { name: 'disable' }],
397
+ groups: [{ id: 'basic-info', title: '@business-core:industries.entities.industry.groups.basic-info' }],
398
+ properties: [
399
+ {
400
+ name: 'id',
401
+ title: '@general:terms.common.id',
402
+ groupId: 'basic-info',
403
+ schema: {
404
+ dataType: 'uuid',
405
+ visible: false,
406
+ readonly: true,
407
+ unique: { enabled: true },
408
+ },
409
+ },
410
+ {
411
+ name: 'code',
412
+ title: '@general:terms.common.code',
413
+ groupId: 'basic-info',
414
+ options: {
415
+ sort: { enabled: true },
416
+ filter: {
417
+ advance: { enabled: true },
418
+ inline: { enabled: true },
419
+ },
420
+ },
421
+ schema: {
422
+ dataType: 'string',
423
+ interface: {
424
+ type: AXPWidgetsList.Editors.TextBox,
425
+ options: {
426
+ placeholder: '@business-core:industries.entities.industry.fields.code.placeholder',
427
+ },
428
+ },
429
+ },
430
+ validations: [{ rule: 'required' }],
431
+ },
432
+ {
433
+ name: 'title',
434
+ title: '@general:terms.common.title',
435
+ groupId: 'basic-info',
436
+ options: {
437
+ sort: { enabled: true },
438
+ filter: {
439
+ advance: { enabled: true },
440
+ inline: { enabled: true },
441
+ },
442
+ },
443
+ schema: {
444
+ dataType: 'string',
445
+ interface: {
446
+ type: AXPWidgetsList.Editors.TextBox,
447
+ options: {
448
+ placeholder: '@business-core:industries.entities.industry.fields.title.placeholder',
449
+ },
450
+ },
451
+ },
452
+ validations: [{ rule: 'required' }],
453
+ },
454
+ {
455
+ name: 'description',
456
+ title: '@general:terms.common.description',
457
+ groupId: 'basic-info',
458
+ schema: {
459
+ dataType: 'string',
460
+ interface: {
461
+ type: AXPWidgetsList.Editors.LargeTextBox,
462
+ options: {
463
+ rows: 3,
464
+ placeholder: '@business-core:industries.entities.industry.fields.description.placeholder',
465
+ },
466
+ },
467
+ },
468
+ },
469
+ ],
470
+ columns: [
471
+ { name: 'code', options: { width: '120px', order: 1 } },
472
+ { name: 'title', options: { width: '220px', order: 2 } },
473
+ ],
474
+ interfaces: {
475
+ master: {
476
+ create: {
477
+ sections,
478
+ properties: propertyLayouts,
479
+ },
480
+ update: {
481
+ sections,
482
+ properties: propertyLayouts,
483
+ },
484
+ single: {
485
+ title: '{{ title }}',
486
+ sections,
487
+ properties: propertyLayouts,
488
+ actions: [...entityMasterRecordActions()],
489
+ },
490
+ list: {
491
+ actions: [...entityMasterCrudActions()],
492
+ views: [
493
+ createAllQueryView({
494
+ sorts: [{ name: 'code', dir: 'asc' }],
495
+ }),
496
+ ],
497
+ },
498
+ },
499
+ },
500
+ };
501
+ return entityDef;
502
+ }
503
+ //#endregion
504
+
505
+ //#endregion
506
+
507
+ //#endregion
508
+ //#region ---- Entity Factory ----
509
+ async function lifecycleStageFactory() {
510
+ const i18n = RootConfig.config.i18n + ':lifecycle-stages.entities.lifecycle-stage';
511
+ const sections = [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }];
512
+ const propertyLayouts = [
513
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
514
+ { name: 'order', layout: { positions: { lg: { colSpan: 4, order: 2 } } } },
515
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
516
+ ];
517
+ const entityDef = {
518
+ module: RootConfig.module.name,
519
+ name: RootConfig.entities.lifecycleStage.name,
520
+ title: RootConfig.entities.lifecycleStage.title,
521
+ icon: RootConfig.entities.lifecycleStage.icon,
522
+ formats: {
523
+ individual: RootConfig.entities.lifecycleStage.title,
524
+ plural: RootConfig.entities.lifecycleStage.titlePlural,
525
+ searchResult: {
526
+ title: '{{ title }}',
527
+ description: RootConfig.module.title,
528
+ },
529
+ },
530
+ plugins: [{ name: 'archive' }],
531
+ groups: [{ id: 'basic-info', title: `@${i18n}.groups.basic-info` }],
532
+ properties: [
533
+ {
534
+ name: 'id',
535
+ title: '@general:terms.common.id',
536
+ groupId: 'basic-info',
537
+ schema: { dataType: 'uuid', visible: false, readonly: true, unique: { enabled: true } },
538
+ },
539
+ {
540
+ name: 'title',
541
+ title: `@${i18n}.fields.title.title`,
542
+ groupId: 'basic-info',
543
+ options: { sort: { enabled: true }, filter: { advance: { enabled: true }, inline: { enabled: true } } },
544
+ schema: {
545
+ dataType: 'string',
546
+ interface: {
547
+ type: AXPWidgetsList.Editors.TextBox,
548
+ options: { placeholder: `@${i18n}.fields.title.placeholder` },
549
+ },
550
+ },
551
+ validations: [{ rule: 'required' }],
552
+ },
553
+ {
554
+ name: 'order',
555
+ title: `@${i18n}.fields.order.title`,
556
+ groupId: 'basic-info',
557
+ options: { sort: { enabled: true }, filter: { advance: { enabled: true }, inline: { enabled: true } } },
558
+ schema: {
559
+ dataType: 'number',
560
+ interface: {
561
+ type: AXPWidgetsList.Editors.NumberBox,
562
+ options: { placeholder: `@${i18n}.fields.order.placeholder` },
563
+ },
564
+ },
565
+ },
566
+ {
567
+ name: 'description',
568
+ title: `@${i18n}.fields.description.title`,
569
+ groupId: 'basic-info',
570
+ schema: {
571
+ dataType: 'string',
572
+ interface: {
573
+ type: AXPWidgetsList.Editors.LargeTextBox,
574
+ options: { rows: 3, placeholder: `@${i18n}.fields.description.placeholder` },
575
+ },
576
+ },
577
+ },
578
+ ],
579
+ columns: [
580
+ { name: 'title', options: { width: '200px', order: 1 } },
581
+ { name: 'order', options: { width: '80px', order: 2 } },
582
+ { name: 'description', options: { width: '280px', order: 3 } },
583
+ ],
584
+ interfaces: {
585
+ master: {
586
+ create: { sections, properties: propertyLayouts },
587
+ update: { sections, properties: propertyLayouts },
588
+ single: {
589
+ title: '{{ title }}',
590
+ sections,
591
+ properties: propertyLayouts,
592
+ actions: [...entityMasterRecordActions()],
593
+ },
594
+ list: {
595
+ actions: [...entityMasterCrudActions()],
596
+ views: [createAllQueryView({ sorts: [{ name: 'order', dir: 'asc' }, { name: 'title', dir: 'asc' }] })],
597
+ },
598
+ },
599
+ },
600
+ };
601
+ return entityDef;
602
+ }
603
+ //#endregion
604
+
605
+ //#endregion
606
+ //#region ---- Entity Factory ----
607
+ async function manufacturerFactory() {
608
+ const entityDef = {
609
+ module: RootConfig.module.name,
610
+ name: RootConfig.entities.manufacturer.name,
611
+ title: RootConfig.entities.manufacturer.title,
612
+ icon: RootConfig.entities.manufacturer.icon,
613
+ formats: {
614
+ individual: RootConfig.entities.manufacturer.title,
615
+ plural: RootConfig.entities.manufacturer.titlePlural,
616
+ searchResult: {
617
+ title: '{{ title }}',
618
+ description: RootConfig.module.title,
619
+ },
620
+ },
621
+ plugins: [
622
+ { name: 'history' },
623
+ { name: 'lock' },
624
+ { name: 'compare' },
625
+ { name: 'clone' },
626
+ { name: 'category', options: { appearance: { icon: true, color: true }, metaData: { enabled: true } } },
627
+ { name: 'meta-data-form', options: { path: 'categoryIds' } },
628
+ { name: 'archive' },
629
+ ],
630
+ groups: [
631
+ {
632
+ id: 'basic-info',
633
+ title: '@general:terms.interface.basic-info',
634
+ },
635
+ {
636
+ id: 'contact-info',
637
+ title: '@business-core:manufacturers.entities.manufacturer.groups.contact-info',
638
+ },
639
+ ],
640
+ properties: [
641
+ {
642
+ name: 'code',
643
+ title: '@general:terms.common.code',
644
+ groupId: 'basic-info',
645
+ options: {
646
+ sort: { enabled: true },
647
+ filter: {
648
+ advance: { enabled: true },
649
+ inline: { enabled: true },
650
+ },
651
+ },
652
+ schema: {
653
+ dataType: 'string',
654
+ interface: {
655
+ type: AXPWidgetsList.Editors.TextBox,
656
+ options: {
657
+ placeholder: 'e.g., MFG-001',
658
+ },
659
+ },
660
+ },
661
+ validations: [
662
+ {
663
+ rule: 'required',
664
+ },
665
+ ],
666
+ },
667
+ {
668
+ name: 'title',
669
+ title: '@general:terms.common.title',
670
+ groupId: 'basic-info',
671
+ options: {
672
+ sort: { enabled: true },
673
+ filter: {
674
+ advance: { enabled: true },
675
+ inline: { enabled: true },
676
+ },
677
+ },
678
+ schema: {
679
+ dataType: 'string',
680
+ interface: {
681
+ type: AXPWidgetsList.Editors.TextBox,
682
+ },
683
+ },
684
+ validations: [
685
+ {
686
+ rule: 'required',
687
+ },
688
+ ],
689
+ },
690
+ {
691
+ name: 'description',
692
+ title: '@general:terms.common.description',
693
+ groupId: 'basic-info',
694
+ options: {
695
+ sort: { enabled: false },
696
+ filter: {
697
+ advance: { enabled: true },
698
+ inline: { enabled: false },
699
+ },
700
+ },
701
+ schema: {
702
+ dataType: 'string',
703
+ interface: {
704
+ type: AXPWidgetsList.Editors.LargeTextBox,
705
+ options: {
706
+ rows: 3,
707
+ },
708
+ },
709
+ },
710
+ },
711
+ {
712
+ name: 'logo',
713
+ title: '@business-core:manufacturers.entities.manufacturer.fields.logo.title',
714
+ groupId: 'basic-info',
715
+ options: {
716
+ sort: { enabled: false },
717
+ filter: {
718
+ advance: { enabled: false },
719
+ inline: { enabled: false },
720
+ },
721
+ },
722
+ schema: {
723
+ dataType: 'string',
724
+ interface: {
725
+ type: AXPWidgetsList.Advanced.Avatar,
726
+ options: {
727
+ accept: ['.jpg', '.jpeg', '.png', '.svg'],
728
+ maxSize: 2048,
729
+ },
730
+ },
731
+ },
732
+ },
733
+ {
734
+ name: 'countryOfOrigin',
735
+ title: '@business-core:manufacturers.entities.manufacturer.fields.country-of-origin.title',
736
+ groupId: 'basic-info',
737
+ options: {
738
+ sort: { enabled: true },
739
+ filter: {
740
+ advance: { enabled: true },
741
+ inline: { enabled: true },
742
+ },
743
+ },
744
+ schema: {
745
+ dataType: 'string',
746
+ interface: {
747
+ type: AXPWidgetsList.Editors.TextBox,
748
+ },
749
+ },
750
+ },
751
+ {
752
+ name: 'website',
753
+ title: '@business-core:manufacturers.entities.manufacturer.fields.website.title',
754
+ groupId: 'contact-info',
755
+ options: {
756
+ sort: { enabled: false },
757
+ filter: {
758
+ advance: { enabled: true },
759
+ inline: { enabled: false },
760
+ },
761
+ },
762
+ schema: {
763
+ dataType: 'string',
764
+ interface: {
765
+ type: AXPWidgetsList.Editors.TextBox,
766
+ options: {
767
+ placeholder: 'https://www.example.com',
768
+ },
769
+ },
770
+ },
771
+ },
772
+ {
773
+ name: 'contactEmail',
774
+ title: '@business-core:manufacturers.entities.manufacturer.fields.contact-email.title',
775
+ groupId: 'contact-info',
776
+ options: {
777
+ sort: { enabled: false },
778
+ filter: {
779
+ advance: { enabled: true },
780
+ inline: { enabled: false },
781
+ },
782
+ },
783
+ schema: {
784
+ dataType: 'string',
785
+ interface: {
786
+ type: AXPWidgetsList.Editors.TextBox,
787
+ options: {
788
+ placeholder: 'contact@example.com',
789
+ },
790
+ },
791
+ },
792
+ validations: [
793
+ {
794
+ rule: 'email',
795
+ },
796
+ ],
797
+ },
798
+ {
799
+ name: 'contactPhone',
800
+ title: '@business-core:manufacturers.entities.manufacturer.fields.contact-phone.title',
801
+ groupId: 'contact-info',
802
+ options: {
803
+ sort: { enabled: false },
804
+ filter: {
805
+ advance: { enabled: true },
806
+ inline: { enabled: false },
807
+ },
808
+ },
809
+ schema: {
810
+ dataType: 'string',
811
+ interface: {
812
+ type: AXPWidgetsList.Editors.TextBox,
813
+ options: {
814
+ placeholder: '+1-234-567-8900',
815
+ },
816
+ },
817
+ },
818
+ },
819
+ ],
820
+ columns: [
821
+ { name: 'code' },
822
+ { name: 'title' },
823
+ { name: 'countryOfOrigin' },
824
+ ],
825
+ interfaces: {
826
+ master: {
827
+ create: {
828
+ sections: [{ id: 'basic-info' }, { id: 'contact-info' }],
829
+ properties: [
830
+ { name: 'code', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
831
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
832
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
833
+ { name: 'logo', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
834
+ { name: 'countryOfOrigin', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
835
+ { name: 'website', layout: { positions: { lg: { colSpan: 6, order: 6 } } } },
836
+ { name: 'contactEmail', layout: { positions: { lg: { colSpan: 6, order: 7 } } } },
837
+ { name: 'contactPhone', layout: { positions: { lg: { colSpan: 6, order: 8 } } } },
838
+ ],
839
+ },
840
+ update: {
841
+ sections: [{ id: 'basic-info' }, { id: 'contact-info' }],
842
+ properties: [
843
+ { name: 'code', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
844
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
845
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
846
+ { name: 'logo', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
847
+ { name: 'countryOfOrigin', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
848
+ { name: 'website', layout: { positions: { lg: { colSpan: 6, order: 6 } } } },
849
+ { name: 'contactEmail', layout: { positions: { lg: { colSpan: 6, order: 7 } } } },
850
+ { name: 'contactPhone', layout: { positions: { lg: { colSpan: 6, order: 8 } } } },
851
+ ],
852
+ },
853
+ single: {
854
+ title: '{{title}}',
855
+ sections: [{ id: 'basic-info' }, { id: 'contact-info' }],
856
+ properties: [
857
+ { name: 'code', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
858
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
859
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
860
+ { name: 'logo', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
861
+ { name: 'countryOfOrigin', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
862
+ { name: 'website', layout: { positions: { lg: { colSpan: 6, order: 6 } } } },
863
+ { name: 'contactEmail', layout: { positions: { lg: { colSpan: 6, order: 7 } } } },
864
+ { name: 'contactPhone', layout: { positions: { lg: { colSpan: 6, order: 8 } } } },
865
+ ],
866
+ actions: [...entityMasterRecordActions()],
867
+ },
868
+ list: {
869
+ actions: [...entityMasterCrudActions()],
870
+ views: [
871
+ createAllQueryView({
872
+ sorts: [{ name: 'title', dir: 'asc' }],
873
+ }),
874
+ ],
875
+ },
876
+ },
877
+ },
878
+ };
879
+ return entityDef;
880
+ }
881
+ //#endregion
882
+
883
+ //#endregion
884
+ //#region ---- Repeater Children ----
885
+ const PHONES_REPEATER_CHILDREN = [
886
+ {
887
+ type: AXPWidgetsList.Editors.ContactBox,
888
+ mode: 'edit',
889
+ options: {
890
+ type: 'phone',
891
+ placeholder: '@business-core:parties.entities.party.fields.phone.placeholder',
892
+ },
893
+ },
894
+ ];
895
+ const EMAILS_REPEATER_CHILDREN = [
896
+ {
897
+ type: AXPWidgetsList.Editors.ContactBox,
898
+ mode: 'edit',
899
+ options: {
900
+ type: 'email',
901
+ placeholder: '@business-core:parties.entities.party.fields.email.placeholder',
902
+ },
903
+ },
904
+ ];
905
+ const LOCATION_ROLE_ENTITY = `${RootConfig$1.module.name}.${RootConfig$1.entities.locationRole.name}`;
906
+ const ADDRESSES_REPEATER_CHILDREN = [
907
+ {
908
+ type: AXPWidgetsList.Editors.AddressBox,
909
+ mode: 'edit',
910
+ options: {
911
+ mode: 'expandable',
912
+ hasLabel: true,
913
+ labelEntity: LOCATION_ROLE_ENTITY,
914
+ },
915
+ },
916
+ ];
917
+ //#endregion
918
+ //#region ---- Entity Factory ----
919
+ async function partyFactory() {
920
+ const entityDef = {
921
+ module: RootConfig.module.name,
922
+ name: RootConfig.entities.party.name,
923
+ title: RootConfig.entities.party.title,
924
+ icon: RootConfig.entities.party.icon,
925
+ formats: {
926
+ individual: RootConfig.entities.party.title,
927
+ plural: RootConfig.entities.party.titlePlural,
928
+ displayName: '@general:terms.common.profile',
929
+ searchResult: {
930
+ title: '{{ title }}',
931
+ description: '@business-core:parties.entities.party.search-result-description',
932
+ },
933
+ },
934
+ plugins: [
935
+ { name: 'identifier', options: { field: 'code', rule: 'party-code' } },
936
+ { name: 'compare' },
937
+ { name: 'history' },
938
+ { name: 'archive' },
939
+ ],
940
+ groups: [
941
+ {
942
+ id: 'profile',
943
+ title: '@business-core:parties.entities.party.groups.profile',
944
+ icon: 'fa-light fa-building',
945
+ },
946
+ {
947
+ id: 'image',
948
+ title: '@business-core:parties.entities.party.groups.image',
949
+ icon: 'fa-light fa-image',
950
+ },
951
+ {
952
+ id: 'phones',
953
+ title: '@business-core:parties.entities.party.groups.phones',
954
+ icon: 'fa-light fa-phone',
955
+ },
956
+ {
957
+ id: 'emails',
958
+ title: '@business-core:parties.entities.party.groups.emails',
959
+ icon: 'fa-light fa-envelope',
960
+ },
961
+ {
962
+ id: 'addresses',
963
+ title: '@business-core:parties.entities.party.groups.addresses',
964
+ icon: 'fa-light fa-location-dot',
965
+ },
966
+ ],
967
+ properties: [
968
+ {
969
+ name: 'code',
970
+ title: '@general:terms.common.code',
971
+ groupId: 'profile',
972
+ options: {
973
+ sort: { enabled: true },
974
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
975
+ },
976
+ schema: {
977
+ dataType: 'string',
978
+ interface: {
979
+ type: AXPWidgetsList.Editors.TextBox,
980
+ options: {
981
+ placeholder: '@business-core:parties.entities.party.fields.code.placeholder',
982
+ },
983
+ },
984
+ },
985
+ validations: [{ rule: 'required' }],
986
+ },
987
+ {
988
+ name: 'title',
989
+ title: '@general:terms.common.title',
990
+ groupId: 'profile',
991
+ options: {
992
+ sort: { enabled: true },
993
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
994
+ },
995
+ schema: {
996
+ dataType: 'string',
997
+ interface: {
998
+ type: AXPWidgetsList.Editors.TextBox,
999
+ options: {
1000
+ placeholder: '@business-core:parties.entities.party.fields.title.placeholder',
1001
+ },
1002
+ },
1003
+ },
1004
+ validations: [{ rule: 'required' }],
1005
+ },
1006
+ {
1007
+ name: 'description',
1008
+ title: '@general:terms.common.description',
1009
+ groupId: 'profile',
1010
+ options: {
1011
+ sort: { enabled: true },
1012
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
1013
+ },
1014
+ schema: {
1015
+ dataType: 'string',
1016
+ interface: {
1017
+ type: AXPWidgetsList.Editors.LargeTextBox,
1018
+ options: {
1019
+ placeholder: '@business-core:parties.entities.party.fields.description.placeholder',
1020
+ rows: 3,
1021
+ },
1022
+ },
1023
+ },
1024
+ },
1025
+ {
1026
+ name: 'image',
1027
+ title: '@business-core:parties.entities.party.groups.image',
1028
+ groupId: 'image',
1029
+ options: {
1030
+ sort: { enabled: true },
1031
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
1032
+ },
1033
+ schema: {
1034
+ dataType: 'string',
1035
+ interface: {
1036
+ type: AXPWidgetsList.Advanced.Image,
1037
+ options: {
1038
+ type: 'profile-photo',
1039
+ },
1040
+ },
1041
+ },
1042
+ },
1043
+ {
1044
+ name: 'phones',
1045
+ title: '@business-core:parties.entities.party.groups.phones',
1046
+ groupId: 'phones',
1047
+ schema: {
1048
+ defaultValue: [],
1049
+ dataType: 'array',
1050
+ interface: {
1051
+ type: AXPWidgetsList.Layouts.RepeaterLayout,
1052
+ options: { hasControls: true },
1053
+ children: [...PHONES_REPEATER_CHILDREN],
1054
+ },
1055
+ },
1056
+ },
1057
+ {
1058
+ name: 'emails',
1059
+ title: '@business-core:parties.entities.party.groups.emails',
1060
+ groupId: 'emails',
1061
+ schema: {
1062
+ defaultValue: [],
1063
+ dataType: 'array',
1064
+ interface: {
1065
+ type: AXPWidgetsList.Layouts.RepeaterLayout,
1066
+ options: { hasControls: true },
1067
+ children: [...EMAILS_REPEATER_CHILDREN],
1068
+ },
1069
+ },
1070
+ },
1071
+ {
1072
+ name: 'addresses',
1073
+ title: '@business-core:parties.entities.party.groups.addresses',
1074
+ groupId: 'addresses',
1075
+ schema: {
1076
+ defaultValue: [],
1077
+ dataType: 'array',
1078
+ interface: {
1079
+ type: AXPWidgetsList.Layouts.RepeaterLayout,
1080
+ options: { hasControls: true },
1081
+ children: [...ADDRESSES_REPEATER_CHILDREN],
1082
+ },
1083
+ },
1084
+ },
1085
+ ],
1086
+ columns: [
1087
+ { name: 'code', options: { width: '120px' } },
1088
+ { name: 'title', options: { width: '250px' } },
1089
+ { name: 'description', options: { width: '200px', visible: false } },
1090
+ { name: 'image', options: { width: '80px' } },
1091
+ { name: 'phones', options: { width: '200px' } },
1092
+ { name: 'emails', options: { width: '200px' } },
1093
+ { name: 'addresses', options: { width: '250px' } },
1094
+ ],
1095
+ relatedEntities: [
1096
+ {
1097
+ entity: `${"PersonCore"}.${"ContactAssignment"}`,
1098
+ title: '@business-core:parties.entities.party.related-entities.contacts.title',
1099
+ columns: [
1100
+ { name: 'personId', title: '@general:terms.people.contact', options: { dataPath: 'person.fullName' } },
1101
+ { name: 'roleId', options: { dataPath: 'role.title' } },
1102
+ { name: 'person.phones', title: '@general:terms.communication.phones', options: { width: '180px' } },
1103
+ { name: 'person.emails', title: '@general:terms.communication.emails', options: { width: '180px' } },
1104
+ ],
1105
+ conditions: contactAssignmentPartyConditions('id'),
1106
+ actions: [...contactAssignmentDetailsCrudActionsForPartyContext('id')],
1107
+ excludeProperties: ['partyId'],
1108
+ layout: { type: 'page-list', position: 'after', order: 1 },
1109
+ },
1110
+ {
1111
+ entity: `${"LocationManagement"}.${"LocationAssignment"}`,
1112
+ title: '@business-core:parties.entities.party.related-entities.locations.title',
1113
+ icon: 'fa-light fa-building-user',
1114
+ columns: [
1115
+ { name: 'locationId', title: '@general:terms.common.title', options: { dataPath: 'location.title' } },
1116
+ { name: 'roleId', options: { dataPath: 'role.title' } },
1117
+ { name: 'location.fullAddress', title: '@general:terms.geography.address' },
1118
+ { name: 'personId', title: '@general:terms.people.contact', options: { dataPath: 'person.fullName' } },
1119
+ { name: 'person.phones', title: '@general:terms.communication.phones', options: { width: '180px' } },
1120
+ { name: 'notes', title: '@general:terms.common.notes' },
1121
+ ],
1122
+ conditions: locationAssignmentPartyConditions('id'),
1123
+ actions: [...locationAssignmentDetailsCrudActionsForPartyContext('id')],
1124
+ excludeProperties: ['ownerRef.id', 'ownerRef.type'],
1125
+ layout: { type: 'page-list', position: 'after', order: 2 },
1126
+ },
1127
+ ],
1128
+ interfaces: {
1129
+ master: {
1130
+ create: {
1131
+ sections: [
1132
+ { id: 'profile', order: 1, layout: { positions: { lg: { colSpan: 8, colStart: 1 } } } },
1133
+ { id: 'image', order: 1, layout: { positions: { lg: { colSpan: 4, colStart: 9 } } } },
1134
+ { id: 'phones', order: 2, layout: { positions: { lg: { colSpan: 6, colStart: 1 } } } },
1135
+ { id: 'emails', order: 2, layout: { positions: { lg: { colSpan: 6, colStart: 7 } } } },
1136
+ { id: 'addresses', order: 3, layout: { positions: { lg: { colSpan: 12, colStart: 1 } } } },
1137
+ ],
1138
+ properties: [
1139
+ { name: 'code', layout: { positions: { lg: { colSpan: 6, order: 0 } } } },
1140
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 0 } } } },
1141
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 1 } } } },
1142
+ { name: 'image', layout: { label: { visible: false }, positions: { lg: { colSpan: 12, order: 2 } } } },
1143
+ { name: 'phones', layout: { label: { visible: false }, positions: { lg: { colSpan: 12, order: 0 } } } },
1144
+ { name: 'emails', layout: { label: { visible: false }, positions: { lg: { colSpan: 12, order: 0 } } } },
1145
+ { name: 'addresses', layout: { label: { visible: false }, positions: { lg: { colSpan: 12, order: 0 } } } },
1146
+ ],
1147
+ },
1148
+ update: {
1149
+ sections: [
1150
+ { id: 'profile', order: 1, layout: { positions: { lg: { colSpan: 8, colStart: 1 } } } },
1151
+ { id: 'image', order: 1, layout: { positions: { lg: { colSpan: 4, colStart: 9 } } } },
1152
+ { id: 'phones', order: 2, layout: { positions: { lg: { colSpan: 6, colStart: 1 } } } },
1153
+ { id: 'emails', order: 2, layout: { positions: { lg: { colSpan: 6, colStart: 7 } } } },
1154
+ { id: 'addresses', order: 3, layout: { positions: { lg: { colSpan: 12 } } } },
1155
+ ],
1156
+ properties: [
1157
+ { name: 'code', layout: { positions: { lg: { colSpan: 6 } } } },
1158
+ { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },
1159
+ { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },
1160
+ { name: 'image', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },
1161
+ { name: 'phones', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },
1162
+ { name: 'emails', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },
1163
+ { name: 'addresses', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },
1164
+ ],
1165
+ },
1166
+ single: {
1167
+ title: '{{ title }}',
1168
+ sections: [
1169
+ { id: 'profile', order: 1, layout: { positions: { lg: { colSpan: 8, colStart: 1 } } } },
1170
+ { id: 'image', order: 1, layout: { positions: { lg: { colSpan: 4, colStart: 9 } } } },
1171
+ { id: 'phones', order: 2, layout: { positions: { lg: { colSpan: 6, colStart: 1 } } } },
1172
+ { id: 'emails', order: 2, layout: { positions: { lg: { colSpan: 6, colStart: 7 } } } },
1173
+ { id: 'addresses', order: 3, layout: { positions: { lg: { colSpan: 12 } } } },
1174
+ ],
1175
+ properties: [
1176
+ { name: 'code', layout: { positions: { lg: { colSpan: 6 } } } },
1177
+ { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },
1178
+ { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },
1179
+ { name: 'image', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },
1180
+ { name: 'phones', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },
1181
+ { name: 'emails', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },
1182
+ { name: 'addresses', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },
1183
+ ],
1184
+ actions: [...entityMasterRecordActions()],
1185
+ },
1186
+ list: {
1187
+ actions: [...entityMasterCrudActions()],
1188
+ views: [
1189
+ createAllQueryView({
1190
+ sorts: [{ name: 'title', dir: 'asc' }],
1191
+ }),
1192
+ ],
1193
+ },
1194
+ },
1195
+ },
1196
+ };
1197
+ return entityDef;
1198
+ }
1199
+ //#endregion
1200
+
1201
+ //#endregion
1202
+ //#region ---- Entity Factory ----
1203
+ async function partySegmentFactory() {
1204
+ const sections = [
1205
+ { id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } },
1206
+ { id: 'appearance', layout: { positions: { lg: { colSpan: 12 } } } },
1207
+ ];
1208
+ const propertyLayouts = [
1209
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
1210
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
1211
+ { name: 'color', layout: { positions: { lg: { colSpan: 6, order: 3 } } } },
1212
+ ];
1213
+ const entityDef = {
1214
+ module: RootConfig.module.name,
1215
+ name: RootConfig.entities.partySegment.name,
1216
+ title: RootConfig.entities.partySegment.title,
1217
+ icon: RootConfig.entities.partySegment.icon,
1218
+ formats: {
1219
+ individual: RootConfig.entities.partySegment.title,
1220
+ plural: RootConfig.entities.partySegment.titlePlural,
1221
+ searchResult: {
1222
+ title: '{{ title }}',
1223
+ description: RootConfig.module.title,
1224
+ },
1225
+ },
1226
+ plugins: [{ name: 'color' }, { name: 'archive' }],
1227
+ groups: [
1228
+ { id: 'basic-info', title: '@business-core:party-segments.entities.party-segment.groups.basic-info' },
1229
+ { id: 'appearance', title: '@general:terms.interface.appearance' },
1230
+ ],
1231
+ properties: [
1232
+ {
1233
+ name: 'id',
1234
+ title: '@general:terms.common.id',
1235
+ groupId: 'basic-info',
1236
+ schema: {
1237
+ dataType: 'uuid',
1238
+ visible: false,
1239
+ readonly: true,
1240
+ unique: { enabled: true },
1241
+ },
1242
+ },
1243
+ {
1244
+ name: 'title',
1245
+ title: '@general:terms.common.title',
1246
+ groupId: 'basic-info',
1247
+ options: {
1248
+ sort: { enabled: true },
1249
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
1250
+ },
1251
+ schema: {
1252
+ dataType: 'string',
1253
+ interface: {
1254
+ type: AXPWidgetsList.Editors.TextBox,
1255
+ options: {
1256
+ placeholder: '@business-core:party-segments.entities.party-segment.fields.title.placeholder',
1257
+ },
1258
+ },
1259
+ },
1260
+ validations: [{ rule: 'required' }],
1261
+ },
1262
+ {
1263
+ name: 'description',
1264
+ title: '@general:terms.common.description',
1265
+ groupId: 'basic-info',
1266
+ schema: {
1267
+ dataType: 'string',
1268
+ interface: {
1269
+ type: AXPWidgetsList.Editors.LargeTextBox,
1270
+ options: {
1271
+ rows: 3,
1272
+ placeholder: '@business-core:party-segments.entities.party-segment.fields.description.placeholder',
1273
+ },
1274
+ },
1275
+ },
1276
+ },
1277
+ ],
1278
+ columns: [
1279
+ { name: 'title', options: { width: '200px', order: 1 } },
1280
+ { name: 'description', options: { width: '280px', order: 2 } },
1281
+ ],
1282
+ interfaces: {
1283
+ master: {
1284
+ create: {
1285
+ sections,
1286
+ properties: propertyLayouts,
1287
+ },
1288
+ update: {
1289
+ sections,
1290
+ properties: propertyLayouts,
1291
+ },
1292
+ single: {
1293
+ title: '{{ title }}',
1294
+ sections,
1295
+ properties: propertyLayouts,
1296
+ actions: [...entityMasterRecordActions()],
1297
+ },
1298
+ list: {
1299
+ actions: [...entityMasterCrudActions()],
1300
+ views: [
1301
+ createAllQueryView({
1302
+ sorts: [{ name: 'title', dir: 'asc' }],
1303
+ }),
1304
+ ],
1305
+ },
1306
+ },
1307
+ },
1308
+ };
1309
+ return entityDef;
1310
+ }
1311
+ //#endregion
1312
+
1313
+ //#endregion
1314
+
1315
+ //#endregion
1316
+ //#region ---- Entity Factory ----
1317
+ async function partyTypeFactory() {
1318
+ const sections = [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }];
1319
+ const propertyLayouts = [
1320
+ { name: 'code', layout: { positions: { lg: { colSpan: 4, order: 1 } } } },
1321
+ { name: 'title', layout: { positions: { lg: { colSpan: 8, order: 2 } } } },
1322
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
1323
+ ];
1324
+ const entityDef = {
1325
+ module: RootConfig.module.name,
1326
+ name: RootConfig.entities.partyType.name,
1327
+ title: RootConfig.entities.partyType.title,
1328
+ icon: RootConfig.entities.partyType.icon,
1329
+ formats: {
1330
+ individual: RootConfig.entities.partyType.title,
1331
+ plural: RootConfig.entities.partyType.titlePlural,
1332
+ searchResult: {
1333
+ title: '{{ title }}',
1334
+ description: '{{ code }}',
1335
+ },
1336
+ },
1337
+ plugins: [{ name: 'history' }, { name: 'compare' }, { name: 'clone' }, { name: 'disable' }],
1338
+ groups: [{ id: 'basic-info', title: '@business-core:party-types.entities.party-type.groups.basic-info' }],
1339
+ properties: [
1340
+ {
1341
+ name: 'id',
1342
+ title: '@general:terms.common.id',
1343
+ groupId: 'basic-info',
1344
+ schema: {
1345
+ dataType: 'uuid',
1346
+ visible: false,
1347
+ readonly: true,
1348
+ unique: { enabled: true },
1349
+ },
1350
+ },
1351
+ {
1352
+ name: 'code',
1353
+ title: '@general:terms.common.code',
1354
+ groupId: 'basic-info',
1355
+ options: {
1356
+ sort: { enabled: true },
1357
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
1358
+ },
1359
+ schema: {
1360
+ dataType: 'string',
1361
+ interface: {
1362
+ type: AXPWidgetsList.Editors.TextBox,
1363
+ options: {
1364
+ placeholder: '@business-core:party-types.entities.party-type.fields.code.placeholder',
1365
+ },
1366
+ },
1367
+ },
1368
+ validations: [{ rule: 'required' }],
1369
+ },
1370
+ {
1371
+ name: 'title',
1372
+ title: '@general:terms.common.title',
1373
+ groupId: 'basic-info',
1374
+ options: {
1375
+ sort: { enabled: true },
1376
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
1377
+ },
1378
+ schema: {
1379
+ dataType: 'string',
1380
+ interface: {
1381
+ type: AXPWidgetsList.Editors.TextBox,
1382
+ options: {
1383
+ placeholder: '@business-core:party-types.entities.party-type.fields.title.placeholder',
1384
+ },
1385
+ },
1386
+ },
1387
+ validations: [{ rule: 'required' }],
1388
+ },
1389
+ {
1390
+ name: 'description',
1391
+ title: '@general:terms.common.description',
1392
+ groupId: 'basic-info',
1393
+ schema: {
1394
+ dataType: 'string',
1395
+ interface: {
1396
+ type: AXPWidgetsList.Editors.LargeTextBox,
1397
+ options: {
1398
+ rows: 3,
1399
+ placeholder: '@business-core:party-types.entities.party-type.fields.description.placeholder',
1400
+ },
1401
+ },
1402
+ },
1403
+ },
1404
+ ],
1405
+ columns: [
1406
+ { name: 'code', options: { width: '120px', order: 1 } },
1407
+ { name: 'title', options: { width: '220px', order: 2 } },
1408
+ ],
1409
+ interfaces: {
1410
+ master: {
1411
+ create: {
1412
+ sections,
1413
+ properties: propertyLayouts,
1414
+ },
1415
+ update: {
1416
+ sections,
1417
+ properties: propertyLayouts,
1418
+ },
1419
+ single: {
1420
+ title: '{{ title }}',
1421
+ sections,
1422
+ properties: propertyLayouts,
1423
+ actions: [...entityMasterRecordActions()],
1424
+ },
1425
+ list: {
1426
+ actions: [...entityMasterCrudActions()],
1427
+ views: [
1428
+ createAllQueryView({
1429
+ sorts: [{ name: 'code', dir: 'asc' }],
1430
+ }),
1431
+ ],
1432
+ },
1433
+ },
1434
+ },
1435
+ };
1436
+ return entityDef;
1437
+ }
1438
+ //#endregion
1439
+
1440
+ //#endregion
1441
+
1442
+ //#region ---- Contracts barrel ----
1443
+
1444
+ /**
1445
+ * Generated bundle index. Do not edit.
1446
+ */
1447
+
1448
+ export { AXMBusinessCoreMenuKeys, AXMBusinessCorePermissionKeys, RootConfig, businessStatusFactory, businessTypeFactory, industryFactory, lifecycleStageFactory, manufacturerFactory, partyFactory, partySegmentFactory, partyTypeFactory };
1449
+ //# sourceMappingURL=acorex-platform-module-business-core-client-contracts.mjs.map