storemw-core-client 1.0.1

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 (112) hide show
  1. package/.env +1 -0
  2. package/.vscode/launch.json +24 -0
  3. package/dist/config/config.d.ts +6 -0
  4. package/dist/config/config.js +13 -0
  5. package/dist/config/env.d.ts +7 -0
  6. package/dist/config/env.js +16 -0
  7. package/dist/config/index.d.ts +2 -0
  8. package/dist/config/index.js +8 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.js +32 -0
  11. package/dist/lib/ApiService.d.ts +41 -0
  12. package/dist/lib/ApiService.js +143 -0
  13. package/dist/lib/index.d.ts +4 -0
  14. package/dist/lib/index.js +9 -0
  15. package/dist/lib/queryParams.d.ts +43 -0
  16. package/dist/lib/queryParams.js +99 -0
  17. package/dist/services/account/AccountService.d.ts +52 -0
  18. package/dist/services/account/AccountService.js +119 -0
  19. package/dist/services/auth/AuthService.d.ts +44 -0
  20. package/dist/services/auth/AuthService.js +76 -0
  21. package/dist/services/branch/BranchService.d.ts +124 -0
  22. package/dist/services/branch/BranchService.js +162 -0
  23. package/dist/services/business/BusinessService.d.ts +91 -0
  24. package/dist/services/business/BusinessService.js +153 -0
  25. package/dist/services/document/DocumentService.d.ts +578 -0
  26. package/dist/services/document/DocumentService.js +615 -0
  27. package/dist/services/index.d.ts +36 -0
  28. package/dist/services/index.js +97 -0
  29. package/dist/services/injection_field/InjectionFieldService.d.ts +113 -0
  30. package/dist/services/injection_field/InjectionFieldService.js +220 -0
  31. package/dist/services/inventory/InventoryService.d.ts +27 -0
  32. package/dist/services/inventory/InventoryService.js +231 -0
  33. package/dist/services/item/ItemService.d.ts +227 -0
  34. package/dist/services/item/ItemService.js +411 -0
  35. package/dist/services/location/LocationService.d.ts +154 -0
  36. package/dist/services/location/LocationService.js +256 -0
  37. package/dist/services/logistic/LogisticService.d.ts +104 -0
  38. package/dist/services/logistic/LogisticService.js +150 -0
  39. package/dist/services/permission/PermissionService.d.ts +296 -0
  40. package/dist/services/permission/PermissionService.js +576 -0
  41. package/dist/services/permission/config/custom/adminPermission.d.ts +4 -0
  42. package/dist/services/permission/config/custom/adminPermission.js +18 -0
  43. package/dist/services/permission/config/custom/config.d.ts +40 -0
  44. package/dist/services/permission/config/custom/config.js +23 -0
  45. package/dist/services/permission/config/default/adminPermission.d.ts +2 -0
  46. package/dist/services/permission/config/default/adminPermission.js +129 -0
  47. package/dist/services/permission/config/default/agentPermission.d.ts +2 -0
  48. package/dist/services/permission/config/default/agentPermission.js +43 -0
  49. package/dist/services/permission/config/default/customerPermission.d.ts +2 -0
  50. package/dist/services/permission/config/default/customerPermission.js +10 -0
  51. package/dist/services/permission/config/default/driverPermission.d.ts +2 -0
  52. package/dist/services/permission/config/default/driverPermission.js +4 -0
  53. package/dist/services/permission/config/default/workerPermission.d.ts +2 -0
  54. package/dist/services/permission/config/default/workerPermission.js +25 -0
  55. package/dist/services/rate/RateService.d.ts +201 -0
  56. package/dist/services/rate/RateService.js +303 -0
  57. package/dist/services/region/RegionService.d.ts +111 -0
  58. package/dist/services/region/RegionService.js +193 -0
  59. package/dist/services/repository/RepositoryService.d.ts +153 -0
  60. package/dist/services/repository/RepositoryService.js +243 -0
  61. package/dist/services/transaction/TransactionService.d.ts +153 -0
  62. package/dist/services/transaction/TransactionService.js +173 -0
  63. package/dist/services/user/BranchUserService.d.ts +129 -0
  64. package/dist/services/user/BranchUserService.js +193 -0
  65. package/dist/services/user/UserRoleService.d.ts +105 -0
  66. package/dist/services/user/UserRoleService.js +193 -0
  67. package/dist/services/user/UserService.d.ts +269 -0
  68. package/dist/services/user/UserService.js +477 -0
  69. package/dist/services/wallet/WalletService.d.ts +104 -0
  70. package/dist/services/wallet/WalletService.js +163 -0
  71. package/dist/utils/dateUtils.d.ts +6 -0
  72. package/dist/utils/dateUtils.js +28 -0
  73. package/dist/utils/index.d.ts +2 -0
  74. package/dist/utils/index.js +13 -0
  75. package/package.json +27 -0
  76. package/src/config/config.ts +15 -0
  77. package/src/config/env.ts +18 -0
  78. package/src/config/index.ts +2 -0
  79. package/src/index.ts +41 -0
  80. package/src/lib/ApiService.ts +170 -0
  81. package/src/lib/index.ts +5 -0
  82. package/src/lib/queryParams.ts +162 -0
  83. package/src/services/account/AccountService.ts +232 -0
  84. package/src/services/auth/AuthService.ts +125 -0
  85. package/src/services/branch/BranchService.ts +330 -0
  86. package/src/services/business/BusinessService.ts +277 -0
  87. package/src/services/document/DocumentService.ts +1471 -0
  88. package/src/services/index.ts +73 -0
  89. package/src/services/injection_field/InjectionFieldService.ts +483 -0
  90. package/src/services/inventory/InventoryService.ts +314 -0
  91. package/src/services/item/ItemService.ts +707 -0
  92. package/src/services/location/LocationService.ts +505 -0
  93. package/src/services/logistic/LogisticService.ts +285 -0
  94. package/src/services/permission/PermissionService.ts +1069 -0
  95. package/src/services/permission/config/custom/adminPermission.ts +19 -0
  96. package/src/services/permission/config/custom/config.ts +39 -0
  97. package/src/services/permission/config/default/adminPermission.ts +129 -0
  98. package/src/services/permission/config/default/agentPermission.ts +42 -0
  99. package/src/services/permission/config/default/customerPermission.ts +9 -0
  100. package/src/services/permission/config/default/driverPermission.ts +4 -0
  101. package/src/services/permission/config/default/workerPermission.ts +25 -0
  102. package/src/services/rate/RateService.ts +570 -0
  103. package/src/services/region/RegionService.ts +353 -0
  104. package/src/services/repository/RepositoryService.ts +437 -0
  105. package/src/services/transaction/TransactionService.ts +404 -0
  106. package/src/services/user/BranchUserService.ts +381 -0
  107. package/src/services/user/UserRoleService.ts +342 -0
  108. package/src/services/user/UserService.ts +807 -0
  109. package/src/services/wallet/WalletService.ts +300 -0
  110. package/src/utils/dateUtils.ts +26 -0
  111. package/src/utils/index.ts +2 -0
  112. package/tsconfig.json +119 -0
@@ -0,0 +1,1471 @@
1
+ import { ApiService, ApiServiceType } from '@/lib';
2
+
3
+ import { _, dayjs } from "@/utils"
4
+
5
+ import {
6
+ buildApiListUrl,
7
+ BuildApiListParamsProps,
8
+ buildApiGetUrl,
9
+ BuildApiGetParamsProps,
10
+ filterOperatorTypes
11
+ } from '@/lib';
12
+
13
+ export const documentTypes = {
14
+ /** sales */
15
+ profomaSale: "proforma_sales",
16
+ salesOrder: "sales",
17
+ proformaSales: "proforma_sales",
18
+ cashSales: "cash_sales",
19
+ retailCashSales: "retail_cash_sales",
20
+ deliveryOrder: "delivery",
21
+ replacementDelivery: "replacement_delivery",
22
+ invoice: "invoices",
23
+ // retailPrescription: "retail_prescription",
24
+ /** purchase */
25
+ purchaseOrder: "purchase",
26
+ purchaseReturn: "purchase_return",
27
+ purchaseInvoice: "purchase_invoice",
28
+ /** warehouse */
29
+ packingOrder: "packing_order",
30
+ itemPicking: "item_picking",
31
+ itemReceive: "item_receive",
32
+ // itemReturn: "item_return",
33
+ itemTransfer: "item_transfer",
34
+ itemRepack: "item_repack",
35
+ itemRelocate: "item_relocate",
36
+ itemTransform: "item_transform",
37
+ itemIssue: "item_issue",
38
+ itemAdjustment: "item_adjustment",
39
+ stockTake: "stock_take",
40
+ transferReturn: "transfer_return",
41
+ transferRequisition: "transfer_requisition",
42
+ pickOrder: "pick_order",
43
+ /** logistic */
44
+ tripOrder: "trip",
45
+ /** Accounting */
46
+ salesInvoice: "sales_invoice",
47
+ salesCreditNote: "sales_credit_note",
48
+ salesDebitNote: "sales_debit_note",
49
+ } as const
50
+
51
+ export type DocumentType = typeof documentTypes[keyof typeof documentTypes]
52
+ export type DocumentTargetType = typeof documentTypes[keyof typeof documentTypes]
53
+ export type DocumentTargetKey = keyof typeof documentTypes
54
+
55
+ export type DocumentServiceProps = ApiServiceType & {
56
+ documentTargetType?: DocumentTargetType
57
+ documentType?: DocumentType
58
+ };
59
+
60
+ export type ListDocumentProps = BuildApiListParamsProps & {
61
+ documentType: DocumentType
62
+ }
63
+
64
+ export type GetDocumentProps = BuildApiGetParamsProps & {
65
+ id: number | string
66
+ documentType: DocumentType
67
+ }
68
+
69
+ type Document = {
70
+ docNumber?: string
71
+ docDate: string
72
+ remark: string
73
+ }
74
+
75
+ type OverrideProfile = {
76
+ profileName: string
77
+ address1: string
78
+ address2: string
79
+ postcode: string
80
+ contact: string
81
+ email: string
82
+ area: string
83
+ countryId: number
84
+ stateId: number
85
+ }
86
+
87
+ type Adjustment = {
88
+ type: "tax" | "discount", // Adjustment Type
89
+ referId?: string
90
+ description: string
91
+ adjustmentAmount: number
92
+ adjustmentPercentage: number
93
+ }
94
+
95
+ type Dependency = {
96
+ scope: "document" | "document_item",
97
+ target: DocumentTargetType,
98
+ targetId: number,
99
+ type: "reference" | "bind" /* bind / reference */
100
+ }
101
+
102
+ type Item = {
103
+ itemId: number
104
+ code: string
105
+ name: string
106
+ description: string
107
+ qty: number
108
+ uomName: string
109
+ uomId: number,
110
+ price: number
111
+ }
112
+
113
+ type Payment = {
114
+ paymentType: string
115
+ paymentDate: string
116
+ paymentAction: string
117
+ bankName: string
118
+ bankAccountNo: string
119
+ bankAccountName: string
120
+ receiveAmount: number
121
+ paymentReference: string
122
+ paymentPostDate: string
123
+ }
124
+
125
+ type Amount = {
126
+ requireCollectAmount: number
127
+ collectionAmount: number
128
+ }
129
+
130
+ // type DocumentSalesOrder = {
131
+ // document: Document,
132
+ // profiles: {
133
+ // customer: {
134
+ // userId: number
135
+ // },
136
+ // shippingBranch: {
137
+ // branchId: number,
138
+ // override?: OverrideProfile
139
+ // },
140
+ // billingBranch: {
141
+ // branchId: number,
142
+ // override?: OverrideProfile
143
+ // }
144
+ // },
145
+ // props: {
146
+ // locationId: number
147
+ // },
148
+ // adjustments?: Adjustment[],
149
+ // items: Item[]
150
+ // }
151
+
152
+ // type DocumentProformaSales = {
153
+ // document: Document,
154
+ // profiles: {
155
+ // retailer: {
156
+ // userId: number
157
+ // },
158
+ // shippingBranch: {
159
+ // branchId: number,
160
+ // override?: OverrideProfile
161
+ // },
162
+ // billingBranch: {
163
+ // branchId: number,
164
+ // override?: OverrideProfile
165
+ // }
166
+ // },
167
+ // props?: {
168
+ // locationId: number
169
+ // },
170
+ // adjustments?: Adjustment[],
171
+ // items: Item[]
172
+ // }
173
+
174
+ // type DocumentCashSales = {
175
+ // document: Document,
176
+ // profiles: {
177
+ // customer: {
178
+ // userId: number
179
+ // },
180
+ // shippingBranch: {
181
+ // branchId: number,
182
+ // // override?: OverrideProfile
183
+ // },
184
+ // billingBranch: {
185
+ // branchId: number,
186
+ // // override?: OverrideProfile
187
+ // }
188
+ // },
189
+ // props: {
190
+ // locationId: number,
191
+ // distributionLocationId: number[]
192
+ // },
193
+ // payment: Payment,
194
+ // adjustments?: Adjustment[],
195
+ // items: Item[]
196
+ // }
197
+
198
+ // type DocumentRetailCashSales = {
199
+ // document: Document,
200
+ // profiles: {
201
+ // member: {
202
+ // userId: number
203
+ // }
204
+ // },
205
+ // props: {
206
+ // locationId: number,
207
+ // retailOutletId: number
208
+ // },
209
+ // payment: Payment,
210
+ // adjustments?: Adjustment[],
211
+ // items: Item[]
212
+ // }
213
+
214
+ // type DocumentDelivery = {
215
+ // document: Document,
216
+ // profiles: {
217
+ // customer: {
218
+ // userId: number
219
+ // },
220
+ // shippingBranch: {
221
+ // branchId: number,
222
+ // // override?: OverrideProfile
223
+ // },
224
+ // billingBranch: {
225
+ // branchId: number,
226
+ // // override?: OverrideProfile
227
+ // }
228
+ // },
229
+ // props: {
230
+ // locationId: number,
231
+ // distributionLocationId: number
232
+ // doAlternativeNo: string
233
+ // soId: number
234
+ // containerId: number
235
+ // trackingNo: number
236
+ // },
237
+ // status: {
238
+ // isPaymentCollect: boolean
239
+ // }
240
+ // payment: Payment,
241
+ // amounts: Amount,
242
+ // adjustments?: Adjustment[],
243
+ // items: Item[]
244
+ // }
245
+
246
+ // type DocumentReplacementDelivery = {
247
+ // document: Document,
248
+ // profiles: {
249
+ // customer: {
250
+ // userId: number
251
+ // },
252
+ // shippingBranch: {
253
+ // branchId: number,
254
+ // // override?: OverrideProfile
255
+ // },
256
+ // billingBranch: {
257
+ // branchId: number,
258
+ // // override?: OverrideProfile
259
+ // }
260
+ // },
261
+ // props: {
262
+ // locationId: number,
263
+ // distributionLocationId: number
264
+ // collectionRemark: string
265
+ // },
266
+ // status: {
267
+ // isPaymentCollect: boolean
268
+ // }
269
+ // dependencies?: Dependency[]
270
+ // amounts: Amount,
271
+ // adjustments?: Adjustment[],
272
+ // items: Item[]
273
+ // }
274
+
275
+ // type DocumentSalesInvoice = {
276
+ // document: Document,
277
+ // profiles: {
278
+ // customer: {
279
+ // userId: number
280
+ // },
281
+ // billingBranch: {
282
+ // branchId: number,
283
+ // override?: OverrideProfile
284
+ // }
285
+ // },
286
+ // props?: {
287
+ // locationId: number
288
+ // },
289
+ // dependencies?: Dependency[],
290
+ // adjustments?: Adjustment[],
291
+ // items: Item[]
292
+ // }
293
+
294
+ // type DocumentSalesDebitNote = {
295
+ // document: Document,
296
+ // profiles: {
297
+ // customer: {
298
+ // userId: number
299
+ // }
300
+ // },
301
+ // props?: {
302
+ // locationId: number
303
+ // },
304
+ // dependencies?: Dependency[],
305
+ // adjustments?: Adjustment[],
306
+ // items: Item[]
307
+ // }
308
+
309
+ // type DocumentSalesCreditNote = {
310
+ // document: Document,
311
+ // profiles: {
312
+ // customer: {
313
+ // userId: number
314
+ // }
315
+ // },
316
+ // props?: {
317
+ // locationId: number
318
+ // },
319
+ // dependencies?: Dependency[],
320
+ // adjustments?: Adjustment[],
321
+ // items: Item[]
322
+ // }
323
+
324
+ export type CreateDocumentProps = {
325
+ documentTargetType?: DocumentTargetType
326
+ documentType?: DocumentType
327
+ data:
328
+ // sales order
329
+ {
330
+ salesOrder: {
331
+ document: Document,
332
+ profiles: {
333
+ customer: {
334
+ userId: number
335
+ },
336
+ shippingBranch: {
337
+ branchId: number,
338
+ override?: OverrideProfile
339
+ },
340
+ billingBranch: {
341
+ branchId: number,
342
+ override?: OverrideProfile
343
+ }
344
+ },
345
+ props: {
346
+ locationId: number
347
+ },
348
+ adjustments?: Adjustment[],
349
+ items: Item[]
350
+ }
351
+ } |
352
+ // proforma sales
353
+ {
354
+ proformaSales: {
355
+ document: Document,
356
+ profiles: {
357
+ retailer: {
358
+ userId: number
359
+ },
360
+ shippingBranch: {
361
+ branchId: number,
362
+ override?: OverrideProfile
363
+ },
364
+ billingBranch: {
365
+ branchId: number,
366
+ override?: OverrideProfile
367
+ }
368
+ },
369
+ props?: {
370
+ locationId: number
371
+ },
372
+ adjustments?: Adjustment[],
373
+ items: Item[]
374
+ }
375
+ } |
376
+ // cash sales
377
+ {
378
+ cashSales: {
379
+ document: Document,
380
+ profiles: {
381
+ customer: {
382
+ userId: number
383
+ },
384
+ shippingBranch: {
385
+ branchId: number,
386
+ // override?: OverrideProfile
387
+ },
388
+ billingBranch: {
389
+ branchId: number,
390
+ // override?: OverrideProfile
391
+ }
392
+ },
393
+ props: {
394
+ locationId: number,
395
+ distributionLocationId: number[]
396
+ },
397
+ payment: Payment,
398
+ adjustments?: Adjustment[],
399
+ items: Item[]
400
+ }
401
+ } |
402
+ // retail cash sales
403
+ {
404
+ retailCashSales: {
405
+ document: Document,
406
+ profiles: {
407
+ member: {
408
+ userId: number
409
+ }
410
+ },
411
+ props: {
412
+ locationId: number,
413
+ retailOutletId: number
414
+ },
415
+ payment: Payment,
416
+ adjustments?: Adjustment[],
417
+ items: Item[]
418
+ }
419
+ } |
420
+ // delivery order
421
+ {
422
+ deliveryOrder: {
423
+ document: Document,
424
+ profiles: {
425
+ customer: {
426
+ userId: number
427
+ },
428
+ shippingBranch: {
429
+ branchId: number,
430
+ // override?: OverrideProfile
431
+ },
432
+ billingBranch: {
433
+ branchId: number,
434
+ // override?: OverrideProfile
435
+ }
436
+ },
437
+ props: {
438
+ locationId: number,
439
+ distributionLocationId: number
440
+ doAlternativeNo: string
441
+ soId: number
442
+ containerId: number
443
+ trackingNo: number
444
+ },
445
+ status: {
446
+ isPaymentCollect: boolean
447
+ }
448
+ payment: Payment,
449
+ amounts: Amount,
450
+ adjustments?: Adjustment[],
451
+ items: Item[]
452
+ }
453
+ } |
454
+ // replacement delivery
455
+ {
456
+ replacementDelivery: {
457
+ document: Document,
458
+ profiles: {
459
+ customer: {
460
+ userId: number
461
+ },
462
+ shippingBranch: {
463
+ branchId: number,
464
+ // override?: OverrideProfile
465
+ },
466
+ billingBranch: {
467
+ branchId: number,
468
+ // override?: OverrideProfile
469
+ }
470
+ },
471
+ props: {
472
+ locationId: number,
473
+ distributionLocationId: number
474
+ collectionRemark: string
475
+ },
476
+ status: {
477
+ isPaymentCollect: boolean
478
+ }
479
+ dependencies?: Dependency[]
480
+ amounts: Amount,
481
+ adjustments?: Adjustment[],
482
+ items: Item[]
483
+ }
484
+ } |
485
+ // trip order
486
+ {
487
+ tripOrder: {
488
+ document: Document,
489
+ profiles: {
490
+ driver: {
491
+ userId: number
492
+ }
493
+ },
494
+ status: {
495
+ isConfirm: boolean
496
+ },
497
+ props: {
498
+ locationId: number,
499
+ referenceNo: string,
500
+ logisticId: number
501
+ },
502
+ documents: {
503
+ documentId: number,
504
+ documentDocId: number,
505
+ remark: string,
506
+ sequence: number
507
+ }[]
508
+ }
509
+ } |
510
+ // sales invoice
511
+ {
512
+ salesInvoice: {
513
+ document: Document,
514
+ profiles: {
515
+ customer: {
516
+ userId: number
517
+ },
518
+ billingBranch: {
519
+ branchId: number,
520
+ override?: OverrideProfile
521
+ }
522
+ },
523
+ props?: {
524
+ locationId: number
525
+ },
526
+ dependencies?: Dependency[],
527
+ adjustments?: Adjustment[],
528
+ items: Item[]
529
+ }
530
+ } |
531
+ // sales debit note
532
+ {
533
+ salesDebitNote: {
534
+ document: Document,
535
+ profiles: {
536
+ customer: {
537
+ userId: number
538
+ }
539
+ },
540
+ props?: {
541
+ locationId: number
542
+ },
543
+ dependencies?: Dependency[],
544
+ adjustments?: Adjustment[],
545
+ items: Item[]
546
+ }
547
+ } |
548
+ // sales credit note
549
+ {
550
+ salesCreditNote: {
551
+ document: Document,
552
+ profiles: {
553
+ customer: {
554
+ userId: number
555
+ }
556
+ },
557
+ props?: {
558
+ locationId: number
559
+ },
560
+ dependencies?: Dependency[],
561
+ adjustments?: Adjustment[],
562
+ items: Item[]
563
+ }
564
+ }
565
+ }
566
+
567
+ export type UpdateDocumentProps = {
568
+ id: number
569
+ documentTargetType?: DocumentTargetType
570
+ documentType?: DocumentType
571
+ data:
572
+ // sales order
573
+ {
574
+ salesOrder: {
575
+ document: Document,
576
+ profiles: {
577
+ customer: {
578
+ userId: number
579
+ },
580
+ shippingBranch: {
581
+ branchId: number,
582
+ override?: OverrideProfile
583
+ },
584
+ billingBranch: {
585
+ branchId: number,
586
+ override?: OverrideProfile
587
+ }
588
+ },
589
+ props: {
590
+ locationId: number
591
+ },
592
+ adjustments?: Adjustment[],
593
+ items: Item[]
594
+ }
595
+ } |
596
+ // proforma sales
597
+ {
598
+ proformaSales: {
599
+ document: Document,
600
+ profiles: {
601
+ retailer: {
602
+ userId: number
603
+ },
604
+ shippingBranch: {
605
+ branchId: number,
606
+ override?: OverrideProfile
607
+ },
608
+ billingBranch: {
609
+ branchId: number,
610
+ override?: OverrideProfile
611
+ }
612
+ },
613
+ props?: {
614
+ locationId: number
615
+ },
616
+ adjustments?: Adjustment[],
617
+ items: Item[]
618
+ }
619
+ } |
620
+ // cash sales
621
+ {
622
+ cashSales: {
623
+ document: Document,
624
+ profiles: {
625
+ customer: {
626
+ userId: number
627
+ },
628
+ shippingBranch: {
629
+ branchId: number,
630
+ // override?: OverrideProfile
631
+ },
632
+ billingBranch: {
633
+ branchId: number,
634
+ // override?: OverrideProfile
635
+ }
636
+ },
637
+ props: {
638
+ locationId: number,
639
+ distributionLocationId: number[]
640
+ },
641
+ payment: Payment,
642
+ adjustments?: Adjustment[],
643
+ items: Item[]
644
+ }
645
+ } |
646
+ // retail cash sales
647
+ {
648
+ retailCashSales: {
649
+ document: Document,
650
+ profiles: {
651
+ member: {
652
+ userId: number
653
+ }
654
+ },
655
+ props: {
656
+ locationId: number,
657
+ retailOutletId: number
658
+ },
659
+ payment: Payment,
660
+ adjustments?: Adjustment[],
661
+ items: Item[]
662
+ }
663
+ } |
664
+ // delivery order
665
+ {
666
+ deliveryOrder: {
667
+ document: Document,
668
+ profiles: {
669
+ customer: {
670
+ userId: number
671
+ },
672
+ shippingBranch: {
673
+ branchId: number,
674
+ // override?: OverrideProfile
675
+ },
676
+ billingBranch: {
677
+ branchId: number,
678
+ // override?: OverrideProfile
679
+ }
680
+ },
681
+ props: {
682
+ locationId: number,
683
+ distributionLocationId: number
684
+ doAlternativeNo: string
685
+ soId: number
686
+ containerId: number
687
+ trackingNo: number
688
+ },
689
+ status: {
690
+ isPaymentCollect: boolean
691
+ }
692
+ payment: Payment,
693
+ amounts: Amount,
694
+ adjustments?: Adjustment[],
695
+ items: Item[]
696
+ }
697
+ } |
698
+ // replacement delivery
699
+ {
700
+ replacementDelivery: {
701
+ document: Document,
702
+ profiles: {
703
+ customer: {
704
+ userId: number
705
+ },
706
+ shippingBranch: {
707
+ branchId: number,
708
+ // override?: OverrideProfile
709
+ },
710
+ billingBranch: {
711
+ branchId: number,
712
+ // override?: OverrideProfile
713
+ }
714
+ },
715
+ props: {
716
+ locationId: number,
717
+ distributionLocationId: number
718
+ collectionRemark: string
719
+ },
720
+ status: {
721
+ isPaymentCollect: boolean
722
+ }
723
+ dependencies?: Dependency[]
724
+ amounts: Amount,
725
+ adjustments?: Adjustment[],
726
+ items: Item[]
727
+ }
728
+ } |
729
+ // trip order
730
+ {
731
+ tripOrder: {
732
+ document: Document,
733
+ profiles: {
734
+ driver: {
735
+ userId: number
736
+ }
737
+ },
738
+ status: {
739
+ isConfirm: boolean
740
+ },
741
+ props: {
742
+ locationId: number,
743
+ referenceNo: string,
744
+ logisticId: number
745
+ },
746
+ documents: {
747
+ documentId: number,
748
+ documentDocId: number,
749
+ remark: string,
750
+ sequence: number
751
+ }[]
752
+ }
753
+ } |
754
+ // sales invoice
755
+ {
756
+ salesInvoice: {
757
+ document: Document,
758
+ profiles: {
759
+ customer: {
760
+ userId: number
761
+ },
762
+ billingBranch: {
763
+ branchId: number,
764
+ override?: OverrideProfile
765
+ }
766
+ },
767
+ props?: {
768
+ locationId: number
769
+ },
770
+ dependencies?: Dependency[],
771
+ adjustments?: Adjustment[],
772
+ items: Item[]
773
+ }
774
+ } |
775
+ // sales debit note
776
+ {
777
+ salesDebitNote: {
778
+ document: Document,
779
+ profiles: {
780
+ customer: {
781
+ userId: number
782
+ }
783
+ },
784
+ props?: {
785
+ locationId: number
786
+ },
787
+ dependencies?: Dependency[],
788
+ adjustments?: Adjustment[],
789
+ items: Item[]
790
+ }
791
+ } |
792
+ // sales credit note
793
+ {
794
+ salesCreditNote: {
795
+ document: Document,
796
+ profiles: {
797
+ customer: {
798
+ userId: number
799
+ }
800
+ },
801
+ props?: {
802
+ locationId: number
803
+ },
804
+ dependencies?: Dependency[],
805
+ adjustments?: Adjustment[],
806
+ items: Item[]
807
+ }
808
+ }
809
+ }
810
+
811
+ export type RemoveDocumentProps = {
812
+ documentTargetType?: DocumentTargetType
813
+ ids: number[]
814
+ }
815
+
816
+ export type GetDataTypeDocumentProps = {
817
+ documentType?: DocumentType
818
+ }
819
+
820
+ const getCreatePayload = (documentType: DocumentType, data: CreateDocumentProps["data"]) => {
821
+
822
+ if (documentType === "sales" && "salesOrder" in data) {
823
+
824
+ return {
825
+ document: {
826
+ ...(data.salesOrder.document.docNumber && { doc_number: data.salesOrder.document.docNumber }),
827
+ doc_date: dayjs(data.salesOrder.document.docDate).format("YYYY-MM-DD"),
828
+ doc_remark: data.salesOrder.document.remark
829
+ },
830
+ profiles: {
831
+ customer: {
832
+ user_id: data.salesOrder.profiles.customer.userId
833
+ },
834
+ shipping_address: {
835
+ branch_id: data.salesOrder.profiles.shippingBranch.branchId,
836
+ ...(data.salesOrder.profiles.shippingBranch?.override && {
837
+ override: {
838
+ profile_name: data.salesOrder.profiles.shippingBranch.override.profileName,
839
+ address_1: data.salesOrder.profiles.shippingBranch.override.address1,
840
+ address_2: data.salesOrder.profiles.shippingBranch.override.address2,
841
+ postcode: data.salesOrder.profiles.shippingBranch.override.postcode,
842
+ contact: data.salesOrder.profiles.shippingBranch.override.contact,
843
+ email: data.salesOrder.profiles.shippingBranch.override.email,
844
+ area: data.salesOrder.profiles.shippingBranch.override.area,
845
+ country_id: data.salesOrder.profiles.shippingBranch.override.countryId,
846
+ state_id: data.salesOrder.profiles.shippingBranch.override.stateId
847
+ }
848
+ })
849
+ },
850
+ billing_branch: {
851
+ branch_id: data.salesOrder.profiles.billingBranch.branchId,
852
+ ...(data.salesOrder.profiles.billingBranch?.override && {
853
+ override: {
854
+ profile_name: data.salesOrder.profiles.billingBranch.override.profileName,
855
+ address_1: data.salesOrder.profiles.billingBranch.override.address1,
856
+ address_2: data.salesOrder.profiles.billingBranch.override.address2,
857
+ postcode: data.salesOrder.profiles.billingBranch.override.postcode,
858
+ contact: data.salesOrder.profiles.billingBranch.override.contact,
859
+ email: data.salesOrder.profiles.billingBranch.override.email,
860
+ area: data.salesOrder.profiles.billingBranch.override.area,
861
+ country_id: data.salesOrder.profiles.billingBranch.override.countryId,
862
+ state_id: data.salesOrder.profiles.billingBranch.override.stateId
863
+ }
864
+ })
865
+ }
866
+ },
867
+ props: {
868
+ ...(data.salesOrder.props?.locationId && { location_id: data.salesOrder.props?.locationId })
869
+ },
870
+ adjustments: data.salesOrder.adjustments && data.salesOrder.adjustments.map((i: Adjustment) => ({
871
+ type: i.type,
872
+ refer_id: i?.referId,
873
+ description: i.description,
874
+ adjustment_amount: i.adjustmentAmount,
875
+ adjustment_percentage: i.adjustmentPercentage
876
+ })),
877
+ items: data.salesOrder.items.map((i: Item) => ({
878
+ id: i.itemId,
879
+ code: i.code,
880
+ name: i.name,
881
+ description: i.description,
882
+ qty: i.qty,
883
+ uom_lbl: i.uomName,
884
+ uom_id: i.uomId,
885
+ price: _.round(i.price, 2)
886
+ }))
887
+
888
+ }
889
+ }
890
+
891
+ if (documentType === "proforma_sales" && "proformaSales" in data) {
892
+
893
+ return {
894
+ document: {
895
+ ...(data.proformaSales.document.docNumber && { doc_number: data.proformaSales.document.docNumber }),
896
+ doc_date: dayjs(data.proformaSales.document.docDate).format("YYYY-MM-DD"),
897
+ doc_remark: data.proformaSales.document.remark
898
+ },
899
+ profiles: {
900
+ retailer: {
901
+ user_id: data.proformaSales.profiles.retailer.userId
902
+ },
903
+ shipping_address: {
904
+ branch_id: data.proformaSales.profiles.shippingBranch.branchId
905
+ },
906
+ billing_branch: {
907
+ branch_id: data.proformaSales.profiles.billingBranch.branchId
908
+ }
909
+ },
910
+ props: {
911
+ ...(data.proformaSales.props?.locationId && { location_id: data.proformaSales.props?.locationId })
912
+ },
913
+ adjustments: data.proformaSales.adjustments && data.proformaSales.adjustments.map((i: Adjustment) => ({
914
+ type: i.type,
915
+ refer_id: i?.referId,
916
+ description: i.description,
917
+ adjustment_amount: i.adjustmentAmount,
918
+ adjustment_percentage: i.adjustmentPercentage
919
+ })),
920
+ items: data.proformaSales.items.map((i: Item) => ({
921
+ id: i.itemId,
922
+ code: i.code,
923
+ name: i.name,
924
+ description: i.description,
925
+ qty: i.qty,
926
+ uom_lbl: i.uomName,
927
+ uom_id: i.uomId,
928
+ price: _.round(i.price, 2)
929
+ }))
930
+
931
+ }
932
+ }
933
+
934
+ if (documentType === "cash_sales" && "cashSales" in data) {
935
+
936
+ return {
937
+ document: {
938
+ ...(data.cashSales.document.docNumber && { doc_number: data.cashSales.document.docNumber }),
939
+ doc_date: dayjs(data.cashSales.document.docDate).format("YYYY-MM-DD"),
940
+ doc_remark: data.cashSales.document.remark
941
+ },
942
+ profiles: {
943
+ customer: {
944
+ user_id: data.cashSales.profiles.customer.userId
945
+ },
946
+ shipping_address: {
947
+ branch_id: data.cashSales.profiles.shippingBranch.branchId
948
+ },
949
+ billing_branch: {
950
+ branch_id: data.cashSales.profiles.billingBranch.branchId,
951
+ }
952
+ },
953
+ props: {
954
+ ...(data.cashSales.props?.locationId && { location_id: data.cashSales.props?.locationId }),
955
+ distribution_location_id: data.cashSales.props?.distributionLocationId ?? ""
956
+ },
957
+ payment: {
958
+ payment_type: data.cashSales.payment.paymentType,
959
+ payment_date: data.cashSales.payment.paymentDate,
960
+ payment_action: data.cashSales.payment.paymentAction,
961
+ bank_name: data.cashSales.payment.bankName,
962
+ bank_account_no: data.cashSales.payment.bankAccountNo,
963
+ bank_account_name: data.cashSales.payment.bankAccountName,
964
+ receive_amount: _.round(data.cashSales.payment.receiveAmount, 2),
965
+ payment_reference: data.cashSales.payment.paymentReference,
966
+ payment_post_date: data.cashSales.payment.paymentPostDate
967
+ },
968
+ adjustments: data.cashSales.adjustments && data.cashSales.adjustments.map((i: Adjustment) => ({
969
+ type: i.type,
970
+ refer_id: i?.referId,
971
+ description: i.description,
972
+ adjustment_amount: i.adjustmentAmount,
973
+ adjustment_percentage: i.adjustmentPercentage
974
+ })),
975
+ items: data.cashSales.items.map((i: Item) => ({
976
+ id: i.itemId,
977
+ code: i.code,
978
+ name: i.name,
979
+ description: i.description,
980
+ qty: i.qty,
981
+ uom_lbl: i.uomName,
982
+ uom_id: i.uomId,
983
+ price: _.round(i.price, 2)
984
+ }))
985
+
986
+ }
987
+ }
988
+
989
+ if (documentType === "retail_cash_sales" && "retailCashSales" in data) {
990
+
991
+ return {
992
+ document: {
993
+ ...(data.retailCashSales.document.docNumber && { doc_number: data.retailCashSales.document.docNumber }),
994
+ doc_date: dayjs(data.retailCashSales.document.docDate).format("YYYY-MM-DD"),
995
+ doc_remark: data.retailCashSales.document.remark
996
+ },
997
+ profiles: {
998
+ member: {
999
+ user_id: data.retailCashSales.profiles.member.userId
1000
+ }
1001
+ },
1002
+ props: {
1003
+ ...(data.retailCashSales.props?.locationId && { location_id: data.retailCashSales.props?.locationId }),
1004
+ retail_outlet_id: data.retailCashSales?.props?.retailOutletId ?? ""
1005
+ },
1006
+ payment: {
1007
+ payment_type: data.retailCashSales.payment.paymentType,
1008
+ payment_date: data.retailCashSales.payment.paymentDate,
1009
+ payment_action: data.retailCashSales.payment.paymentAction,
1010
+ bank_name: data.retailCashSales.payment.bankName,
1011
+ bank_account_no: data.retailCashSales.payment.bankAccountNo,
1012
+ bank_account_name: data.retailCashSales.payment.bankAccountName,
1013
+ receive_amount: _.round(data.retailCashSales.payment.receiveAmount, 2),
1014
+ payment_reference: data.retailCashSales.payment.paymentReference,
1015
+ payment_post_date: data.retailCashSales.payment.paymentPostDate
1016
+ },
1017
+ adjustments: data.retailCashSales.adjustments && data.retailCashSales.adjustments.map((i: Adjustment) => ({
1018
+ type: i.type,
1019
+ refer_id: i?.referId,
1020
+ description: i.description,
1021
+ adjustment_amount: i.adjustmentAmount,
1022
+ adjustment_percentage: i.adjustmentPercentage
1023
+ })),
1024
+ items: data.retailCashSales.items.map((i: Item) => ({
1025
+ id: i.itemId,
1026
+ code: i.code,
1027
+ name: i.name,
1028
+ description: i.description,
1029
+ qty: i.qty,
1030
+ uom_lbl: i.uomName,
1031
+ uom_id: i.uomId,
1032
+ price: _.round(i.price, 2)
1033
+ }))
1034
+
1035
+ }
1036
+ }
1037
+
1038
+ if (documentType === "delivery" && "deliveryOrder" in data) {
1039
+
1040
+ return {
1041
+ document: {
1042
+ ...(data.deliveryOrder.document.docNumber && { doc_number: data.deliveryOrder.document.docNumber }),
1043
+ doc_date: dayjs(data.deliveryOrder.document.docDate).format("YYYY-MM-DD"),
1044
+ doc_remark: data.deliveryOrder.document.remark
1045
+ },
1046
+ profiles: {
1047
+ customer: {
1048
+ user_id: data.deliveryOrder.profiles.customer.userId
1049
+ },
1050
+ shipping_address: {
1051
+ branch_id: data.deliveryOrder.profiles.shippingBranch.branchId
1052
+ },
1053
+ billing_branch: {
1054
+ branch_id: data.deliveryOrder.profiles.billingBranch.branchId,
1055
+ }
1056
+ },
1057
+ props: {
1058
+ ...(data.deliveryOrder.props?.locationId && { location_id: data.deliveryOrder.props?.locationId }),
1059
+ distribution_location_id: data.deliveryOrder.props?.distributionLocationId ?? "",
1060
+ do_alternative_no: data.deliveryOrder.props?.doAlternativeNo ?? "",
1061
+ so_id: data.deliveryOrder.props?.soId ?? "",
1062
+ container_id: data.deliveryOrder.props?.containerId ?? "",
1063
+ tracking_no: data.deliveryOrder.props?.trackingNo ?? ""
1064
+ },
1065
+ status: {
1066
+ is_payment_collect: data.deliveryOrder.status.isPaymentCollect === true ? 1 : 0
1067
+ },
1068
+ adjustments: data.deliveryOrder.adjustments && data.deliveryOrder.adjustments.map((i: Adjustment) => ({
1069
+ type: i.type,
1070
+ refer_id: i?.referId,
1071
+ description: i.description,
1072
+ adjustment_amount: i.adjustmentAmount,
1073
+ adjustment_percentage: i.adjustmentPercentage
1074
+ })),
1075
+ amounts: {
1076
+ require_collect_amount: data.deliveryOrder.amounts.requireCollectAmount,
1077
+ collection_amount: data.deliveryOrder.amounts.collectionAmount,
1078
+ },
1079
+ items: data.deliveryOrder.items.map((i: Item) => ({
1080
+ id: i.itemId,
1081
+ code: i.code,
1082
+ name: i.name,
1083
+ description: i.description,
1084
+ qty: i.qty,
1085
+ uom_lbl: i.uomName,
1086
+ uom_id: i.uomId,
1087
+ price: _.round(i.price, 2)
1088
+ }))
1089
+
1090
+ }
1091
+ }
1092
+
1093
+ if (documentType === "replacement_delivery" && "replacementDelivery" in data) {
1094
+
1095
+ return {
1096
+ document: {
1097
+ ...(data.replacementDelivery.document.docNumber && { doc_number: data.replacementDelivery.document.docNumber }),
1098
+ doc_date: dayjs(data.replacementDelivery.document.docDate).format("YYYY-MM-DD"),
1099
+ doc_remark: data.replacementDelivery.document.remark
1100
+ },
1101
+ profiles: {
1102
+ customer: {
1103
+ user_id: data.replacementDelivery.profiles.customer.userId
1104
+ },
1105
+ shipping_address: {
1106
+ branch_id: data.replacementDelivery.profiles.shippingBranch.branchId
1107
+ },
1108
+ billing_branch: {
1109
+ branch_id: data.replacementDelivery.profiles.billingBranch.branchId,
1110
+ }
1111
+ },
1112
+ props: {
1113
+ ...(data.replacementDelivery.props?.locationId && { location_id: data.replacementDelivery.props?.locationId }),
1114
+ distribution_location_id: data.replacementDelivery.props?.distributionLocationId ?? "",
1115
+ collection_remark: data.replacementDelivery.props?.collectionRemark ?? ""
1116
+ },
1117
+ status: {
1118
+ is_payment_collect: data.replacementDelivery.status.isPaymentCollect === true ? 1 : 0
1119
+ },
1120
+ adjustments: data.replacementDelivery.adjustments && data.replacementDelivery.adjustments.map((i: Adjustment) => ({
1121
+ type: i.type,
1122
+ refer_id: i?.referId,
1123
+ description: i.description,
1124
+ adjustment_amount: i.adjustmentAmount,
1125
+ adjustment_percentage: i.adjustmentPercentage
1126
+ })),
1127
+ dependencies: data.replacementDelivery.dependencies && data.replacementDelivery.dependencies.map((i: Dependency) => ({
1128
+ scope: i.scope,
1129
+ target: i.target,
1130
+ target_id: i.targetId,
1131
+ type: i.type
1132
+ })),
1133
+ amounts: {
1134
+ require_collect_amount: data.replacementDelivery.amounts.requireCollectAmount,
1135
+ collection_amount: data.replacementDelivery.amounts.collectionAmount,
1136
+ },
1137
+ items: data.replacementDelivery.items.map((i: Item) => ({
1138
+ id: i.itemId,
1139
+ code: i.code,
1140
+ name: i.name,
1141
+ description: i.description,
1142
+ qty: i.qty,
1143
+ uom_lbl: i.uomName,
1144
+ uom_id: i.uomId,
1145
+ price: _.round(i.price, 2)
1146
+ }))
1147
+
1148
+ }
1149
+ }
1150
+
1151
+ if (documentType === "trip" && "tripOrder" in data) {
1152
+
1153
+ return {
1154
+ document: {
1155
+ ...(data.tripOrder.document.docNumber && { doc_number: data.tripOrder.document.docNumber }),
1156
+ doc_date: dayjs(data.tripOrder.document.docDate).format("YYYY-MM-DD"),
1157
+ doc_remark: data.tripOrder.document.remark
1158
+ },
1159
+ profiles: {
1160
+ ...(data?.tripOrder?.profiles?.driver?.userId ? { driver: { user_id: data.tripOrder.profiles.driver.userId } } : {}),
1161
+ props: {
1162
+ location_id: data.tripOrder.props.locationId,
1163
+ reference_no: data.tripOrder.props.referenceNo,
1164
+ ...(data?.tripOrder?.props?.logisticId ? { logistic_id: data.tripOrder.props.logisticId } : {})
1165
+ },
1166
+ status: {
1167
+ confirm: data.tripOrder.status.isConfirm === true ? 1 : 0
1168
+ },
1169
+ docs: data.tripOrder.documents.map((i) => ({
1170
+ document_id: i.documentId,
1171
+ document_doc_id: i.documentDocId,
1172
+ doc_remark: i.remark,
1173
+ props: {
1174
+ sequence: i.sequence
1175
+ }
1176
+ }))
1177
+
1178
+ }
1179
+ }
1180
+ }
1181
+
1182
+ if (documentType === "sales_invoice" && "salesInvoice" in data) {
1183
+
1184
+ return {
1185
+ document: {
1186
+ ...(data.salesInvoice.document.docNumber && { doc_number: data.salesInvoice.document.docNumber }),
1187
+ doc_date: dayjs(data.salesInvoice.document.docDate).format("YYYY-MM-DD"),
1188
+ doc_remark: data.salesInvoice.document.remark
1189
+ },
1190
+ profiles: {
1191
+ customer: {
1192
+ user_id: data.salesInvoice.profiles.customer.userId
1193
+ },
1194
+ billing_branch: {
1195
+ branch_id: data.salesInvoice.profiles.billingBranch.branchId,
1196
+ }
1197
+ },
1198
+ props: {
1199
+ ...(data.salesInvoice.props?.locationId && { location_id: data.salesInvoice.props?.locationId }),
1200
+ },
1201
+ adjustments: data.salesInvoice.adjustments && data.salesInvoice.adjustments.map((i: Adjustment) => ({
1202
+ type: i.type,
1203
+ refer_id: i?.referId,
1204
+ description: i.description,
1205
+ adjustment_amount: i.adjustmentAmount,
1206
+ adjustment_percentage: i.adjustmentPercentage
1207
+ })),
1208
+ dependencies: data.salesInvoice.dependencies && data.salesInvoice.dependencies.map((i: Dependency) => ({
1209
+ scope: i.scope,
1210
+ target: i.target,
1211
+ target_id: i.targetId,
1212
+ type: i.type
1213
+ })),
1214
+ items: data.salesInvoice.items.map((i: Item) => ({
1215
+ id: i.itemId,
1216
+ code: i.code,
1217
+ name: i.name,
1218
+ description: i.description,
1219
+ qty: i.qty,
1220
+ uom_lbl: i.uomName,
1221
+ uom_id: i.uomId,
1222
+ price: _.round(i.price, 2)
1223
+ }))
1224
+
1225
+ }
1226
+ }
1227
+
1228
+ if (documentType === "sales_credit_note" && "salesCreditNote" in data) {
1229
+
1230
+ return {
1231
+ document: {
1232
+ ...(data.salesCreditNote.document.docNumber && { doc_number: data.salesCreditNote.document.docNumber }),
1233
+ doc_date: dayjs(data.salesCreditNote.document.docDate).format("YYYY-MM-DD"),
1234
+ doc_remark: data.salesCreditNote.document.remark
1235
+ },
1236
+ profiles: {
1237
+ customer: {
1238
+ user_id: data.salesCreditNote.profiles.customer.userId
1239
+ },
1240
+ // billing_branch: {
1241
+ // branch_id: data.salesCreditNote.profiles.billingBranch.branchId,
1242
+ // }
1243
+ },
1244
+ props: {
1245
+ ...(data.salesCreditNote.props?.locationId && { location_id: data.salesCreditNote.props?.locationId }),
1246
+ },
1247
+ adjustments: data.salesCreditNote.adjustments && data.salesCreditNote.adjustments.map((i: Adjustment) => ({
1248
+ type: i.type,
1249
+ refer_id: i?.referId,
1250
+ description: i.description,
1251
+ adjustment_amount: i.adjustmentAmount,
1252
+ adjustment_percentage: i.adjustmentPercentage
1253
+ })),
1254
+ dependencies: data.salesCreditNote.dependencies && data.salesCreditNote.dependencies.map((i: Dependency) => ({
1255
+ scope: i.scope,
1256
+ target: i.target,
1257
+ target_id: i.targetId,
1258
+ type: i.type
1259
+ })),
1260
+ items: data.salesCreditNote.items.map((i: Item) => ({
1261
+ id: i.itemId,
1262
+ code: i.code,
1263
+ name: i.name,
1264
+ description: i.description,
1265
+ qty: i.qty,
1266
+ uom_lbl: i.uomName,
1267
+ uom_id: i.uomId,
1268
+ price: _.round(i.price, 2)
1269
+ }))
1270
+
1271
+ }
1272
+ }
1273
+
1274
+ if (documentType === "sales_debit_note" && "salesDebitNote" in data) {
1275
+
1276
+ return {
1277
+ document: {
1278
+ ...(data.salesDebitNote.document.docNumber && { doc_number: data.salesDebitNote.document.docNumber }),
1279
+ doc_date: dayjs(data.salesDebitNote.document.docDate).format("YYYY-MM-DD"),
1280
+ doc_remark: data.salesDebitNote.document.remark
1281
+ },
1282
+ profiles: {
1283
+ customer: {
1284
+ user_id: data.salesDebitNote.profiles.customer.userId
1285
+ },
1286
+ // billing_branch: {
1287
+ // ...data.salesDebitNote.profiles.billingBranch,
1288
+ // branch_id: data.salesDebitNote.profiles.billingBranch.branchId,
1289
+ // }
1290
+ },
1291
+ props: {
1292
+ ...(data.salesDebitNote.props?.locationId && { location_id: data.salesDebitNote.props?.locationId }),
1293
+ },
1294
+ adjustments: data.salesDebitNote.adjustments && data.salesDebitNote.adjustments.map((i: Adjustment) => ({
1295
+ type: i.type,
1296
+ refer_id: i?.referId,
1297
+ description: i.description,
1298
+ adjustment_amount: i.adjustmentAmount,
1299
+ adjustment_percentage: i.adjustmentPercentage
1300
+ })),
1301
+ dependencies: data.salesDebitNote.dependencies && data.salesDebitNote.dependencies.map((i: Dependency) => ({
1302
+ scope: i.scope,
1303
+ target: i.target,
1304
+ target_id: i.targetId,
1305
+ type: i.type
1306
+ })),
1307
+ items: data.salesDebitNote.items.map((i: Item) => ({
1308
+ id: i.itemId,
1309
+ code: i.code,
1310
+ name: i.name,
1311
+ description: i.description,
1312
+ qty: i.qty,
1313
+ uom_lbl: i.uomName,
1314
+ uom_id: i.uomId,
1315
+ price: _.round(i.price, 2)
1316
+ }))
1317
+
1318
+ }
1319
+ }
1320
+
1321
+ }
1322
+
1323
+ const getUpdatePayload = (documentType: DocumentType, data: UpdateDocumentProps["data"]) => {
1324
+ return getCreatePayload(documentType, data)
1325
+ }
1326
+
1327
+ export const DocumentService = (props?: DocumentServiceProps) => {
1328
+
1329
+ const { documentType = "sales", documentTargetType, ...rest } = props ?? {}
1330
+
1331
+ const { makeCall } = ApiService(rest?.customToken ? { customToken: rest.customToken } : {})
1332
+
1333
+ const endpoint1 = "document";
1334
+ const endpoint2 = "documents"
1335
+
1336
+ const list = async (props: ListDocumentProps) => {
1337
+
1338
+ const { documentType: overrideDocumentType } = props;
1339
+
1340
+ const url = buildApiListUrl(
1341
+ `${endpoint2}/${overrideDocumentType || documentType}`,
1342
+ props
1343
+ );
1344
+
1345
+ const response = await makeCall({
1346
+ url,
1347
+ method: "get",
1348
+ payload: {},
1349
+ // configuration
1350
+ });
1351
+
1352
+ return response;
1353
+ }
1354
+
1355
+ const get = async (props: GetDocumentProps) => {
1356
+
1357
+ const { id, documentType: overrideDocumentType } = props;
1358
+
1359
+ const url = buildApiGetUrl(
1360
+ `${endpoint1}/${overrideDocumentType || documentType}/${id}`,
1361
+ props
1362
+ );
1363
+
1364
+ const response = await makeCall({
1365
+ url,
1366
+ method: "get",
1367
+ payload: {},
1368
+ // configuration
1369
+ });
1370
+
1371
+ return response;
1372
+
1373
+ }
1374
+
1375
+ const create = async ({ data, documentType: overrideDocumentType, documentTargetType: overrideDocumentTargetType }: CreateDocumentProps) => {
1376
+
1377
+ let url = `${endpoint1}`;
1378
+
1379
+ let _documentType = overrideDocumentType || documentType
1380
+
1381
+ let payload: any = getCreatePayload(_documentType, data)
1382
+
1383
+ let postData = {
1384
+ scope: {
1385
+ target: overrideDocumentTargetType || documentTargetType,
1386
+ action: "",
1387
+ },
1388
+ payload
1389
+ }
1390
+
1391
+ const response = await makeCall({
1392
+ url,
1393
+ method: "post",
1394
+ payload: postData
1395
+ });
1396
+
1397
+ return response;
1398
+
1399
+ }
1400
+
1401
+ const update = async ({ id, data, documentType: overrideDocumentType, documentTargetType: overrideDocumentTargetType }: UpdateDocumentProps) => {
1402
+
1403
+ let url = `${endpoint1}/${id}`
1404
+
1405
+ let _documentType = overrideDocumentType || documentType
1406
+
1407
+ let payload: any = getUpdatePayload(_documentType, data)
1408
+
1409
+ const postData = {
1410
+ scope: {
1411
+ target: overrideDocumentTargetType || documentTargetType,
1412
+ action: "",
1413
+ },
1414
+ payload
1415
+ }
1416
+
1417
+ const response = await makeCall({
1418
+ url,
1419
+ method: "put",
1420
+ payload: postData
1421
+ });
1422
+
1423
+ return response;
1424
+
1425
+ }
1426
+
1427
+ const remove = async ({ ids, documentTargetType: overrideDocumentTargetType }: RemoveDocumentProps) => {
1428
+
1429
+ let url = `${endpoint2}/delete`
1430
+
1431
+ const postData = {
1432
+ scope: {
1433
+ target: overrideDocumentTargetType || documentTargetType,
1434
+ },
1435
+ payload: {
1436
+ ids
1437
+ }
1438
+ }
1439
+
1440
+ const response = await makeCall({
1441
+ url,
1442
+ method: "post",
1443
+ payload: postData
1444
+ });
1445
+
1446
+ return response;
1447
+
1448
+ }
1449
+
1450
+ const getDataTypes = async ({ documentType: overrideDocumentType }: GetDataTypeDocumentProps) => {
1451
+
1452
+ let url = `${endpoint2}/data_types/${overrideDocumentType || documentType}`
1453
+
1454
+ const response = await makeCall({
1455
+ url,
1456
+ method: "get",
1457
+ });
1458
+
1459
+ return response;
1460
+
1461
+ }
1462
+
1463
+ return {
1464
+ list,
1465
+ get,
1466
+ create,
1467
+ update,
1468
+ remove,
1469
+ getDataTypes
1470
+ };
1471
+ }