@provis/provis-common-be-module 3.0.3 → 3.0.5

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 (44) hide show
  1. package/dist/class/main.repository.js +4 -4
  2. package/dist/constants/claim/general.js +1 -1
  3. package/dist/constants/claim/kalog.js +1 -1
  4. package/dist/constants/claim/life.d.ts +2 -2
  5. package/dist/constants/claim/life.js +1 -1
  6. package/dist/constants/claim/loket.js +40 -40
  7. package/dist/constants/claim/motorVehicle.js +1 -1
  8. package/dist/constants/claim/travel.js +1 -1
  9. package/dist/constants/config.js +2 -2
  10. package/dist/constants/invoice/coa.js +5 -5
  11. package/dist/constants/product.d.ts +1 -0
  12. package/dist/constants/product.js +20 -14
  13. package/dist/constants/source.js +1 -1
  14. package/dist/helpers/alphaNumericCleansing.js +1 -1
  15. package/dist/helpers/amountDescription.js +1 -1
  16. package/dist/helpers/axiosGet.js +1 -1
  17. package/dist/helpers/axiosPost.js +1 -1
  18. package/dist/helpers/axiosPut.js +1 -1
  19. package/dist/helpers/calculateByType.js +1 -1
  20. package/dist/helpers/calculateForNullable.js +6 -6
  21. package/dist/helpers/decimalAmount.js +4 -4
  22. package/dist/helpers/errorNotifier.d.ts +3 -0
  23. package/dist/helpers/errorNotifier.js +71 -0
  24. package/dist/helpers/getHeaderUser.js +4 -4
  25. package/dist/helpers/index.d.ts +2 -1
  26. package/dist/helpers/index.js +4 -1
  27. package/dist/helpers/invoicePeriod.d.ts +11 -0
  28. package/dist/helpers/invoicePeriod.js +66 -0
  29. package/dist/helpers/loop.js +2 -2
  30. package/dist/helpers/loopBackward.js +2 -2
  31. package/dist/helpers/readExcel.d.ts +0 -2
  32. package/dist/interface/error.context.interface.d.ts +7 -0
  33. package/dist/interface/error.context.interface.js +2 -0
  34. package/package.json +3 -2
  35. package/dist/constants/bankAccount.d.ts +0 -8
  36. package/dist/constants/bankAccount.js +0 -54
  37. package/dist/constants/product/cargo.d.ts +0 -39
  38. package/dist/constants/product/cargo.js +0 -41
  39. package/dist/constants/product/coretax.d.ts +0 -12
  40. package/dist/constants/product/coretax.js +0 -14
  41. package/dist/constants/product/mv.d.ts +0 -30
  42. package/dist/constants/product/mv.js +0 -158
  43. package/dist/constants/product/property/occupation.d.ts +0 -5
  44. package/dist/constants/product/property/occupation.js +0 -1725
@@ -116,8 +116,8 @@ class MainRepository extends typeorm_1.Repository {
116
116
  return result;
117
117
  });
118
118
  }
119
- summaryField({ fieldToSum, search, additionalSearchOr, relations, subqueryIns, }) {
120
- return __awaiter(this, void 0, void 0, function* () {
119
+ summaryField(_a) {
120
+ return __awaiter(this, arguments, void 0, function* ({ fieldToSum, search, additionalSearchOr, relations, subqueryIns, }) {
121
121
  let query = this.createQueryBuilder()
122
122
  .select([
123
123
  'COUNT(1) AS totalRows',
@@ -133,8 +133,8 @@ class MainRepository extends typeorm_1.Repository {
133
133
  return query.getRawOne();
134
134
  });
135
135
  }
136
- findAllAndCount({ search, additionalSearchOr, relations, subqueryIns, sortBy = 'id.DESC', offset = 1, maxCount = 50, }) {
137
- return __awaiter(this, void 0, void 0, function* () {
136
+ findAllAndCount(_a) {
137
+ return __awaiter(this, arguments, void 0, function* ({ search, additionalSearchOr, relations, subqueryIns, sortBy = 'id.DESC', offset = 1, maxCount = 50, }) {
138
138
  const skipItems = ((offset < 1 ? 1 : offset) - 1) * maxCount;
139
139
  let query = this.createQueryBuilder().select(this.selectFieldOnFindAllAndCount());
140
140
  query = this.applySearchConditions({
@@ -11,7 +11,7 @@ const doc = {
11
11
  LIST_REQUIREMENT_LOD_SPGR: [],
12
12
  LIST_REQUIREMENT_LOD_SIGNED: [],
13
13
  LIST_REQUIREMENT_PAYMENT: [],
14
- LIST_RISK: [],
14
+ LIST_RISK: [], // untuk ambil list dari resiko
15
15
  RISK_CONFIG: {},
16
16
  DOCUMENT_CONFIG: {},
17
17
  };
@@ -24,7 +24,7 @@ const doc = {
24
24
  LIST_REQUIREMENT_LOD_SPGR: [],
25
25
  LIST_REQUIREMENT_LOD_SIGNED: [],
26
26
  LIST_REQUIREMENT_PAYMENT: [],
27
- LIST_RISK: [],
27
+ LIST_RISK: [], // untuk ambil list dari resiko
28
28
  RISK_CONFIG: {},
29
29
  DOCUMENT_CONFIG: {},
30
30
  STATUS_DEADLINE: {},
@@ -20,13 +20,13 @@ declare const life: {
20
20
  ACCIDENT: string;
21
21
  SICKNESS: string;
22
22
  };
23
- LIST_RISK: {
23
+ LIST_RISK: Array<{
24
24
  code: string;
25
25
  desc: {
26
26
  id: string;
27
27
  en: string;
28
28
  };
29
- }[];
29
+ }>;
30
30
  RISK_CONFIG: Record<string, {
31
31
  isRequiredFillClaimAmount: boolean;
32
32
  desc: {
@@ -20,7 +20,7 @@ const life = {
20
20
  ACCIDENT: 'RISK_ACCIDENT',
21
21
  SICKNESS: 'RISK_SICK',
22
22
  },
23
- LIST_RISK: [],
23
+ LIST_RISK: [], // untuk ambil list dari jenis klaim (Kecelakaan / Sakit)
24
24
  RISK_CONFIG: {},
25
25
  DOCUMENT_CONFIG: {},
26
26
  STATUS_DEADLINE: {},
@@ -4,51 +4,51 @@ const status_1 = require("./status");
4
4
  const config_1 = require("../config");
5
5
  const loket = {
6
6
  // LIST RESIKO
7
- RISK_CLK001: 'CLK001',
8
- RISK_CLK007: 'CLK007',
9
- RISK_CLK002: 'CLK002',
10
- RISK_CLK003: 'CLK003',
11
- RISK_CLK004: 'CLK004',
12
- RISK_CLK008: 'CLK008',
13
- RISK_CLK006: 'CLK006',
14
- RISK_CLK009: 'CLK009',
7
+ RISK_CLK001: 'CLK001', //Meninggal Dunia akibat kecelakaan
8
+ RISK_CLK007: 'CLK007', //Cacat Tetap akibat kecelakaan
9
+ RISK_CLK002: 'CLK002', //Biaya pengobatan akibat kecelakaan
10
+ RISK_CLK003: 'CLK003', //Kerusakan barang pribadi
11
+ RISK_CLK004: 'CLK004', //Pembatalan Konser dibatalkan oleh Penyelenggara Acara
12
+ RISK_CLK008: 'CLK008', //Pembatalan oleh Tertanggung yang mengakibatkan tidak dapat menghadiri acara karena:
13
+ RISK_CLK006: 'CLK006', //Santunan Kebakaran termasuk adanya perampokan dan pencurian dengan kekerasan dan dibuktikan adanya pengrusakan atas Rumah Tinggal
14
+ RISK_CLK009: 'CLK009', //Santunan Penggantian Akomodasi dan Transportasi
15
15
  // INI dropdown buat CLK008
16
- RISK_CLK010: 'CLK010',
17
- RISK_CLK005: 'CLK005',
18
- RISK_CLK011: 'CLK011',
19
- RISK_CLK012: 'CLK012',
20
- RISK_CLK013: 'CLK013',
21
- RISK_CLK014: 'CLK014',
16
+ RISK_CLK010: 'CLK010', //Cedera atau Penyakit serius atau meninggal dunia yang dialami Tertanggung atau keluarga inti*
17
+ RISK_CLK005: 'CLK005', //Sakit Rawat Inap di Rumah Sakit minimal 2 (dua) hari
18
+ RISK_CLK011: 'CLK011', //Panggilan untuk menjadi saksi pengadilan, yang tidak diberitahukan lebih dahulu kepada anda sebelum anda mengambil Polis ini
19
+ RISK_CLK012: 'CLK012', //⁠Terjadinya pemogokan, kerusuhan atau huru-hara yang tidak terduga dimana keadaan tersebut terjadi di tempat tujuan (lokasi acara) yang direncanakan diluar kendali anda
20
+ RISK_CLK013: 'CLK013', //⁠Tempat tinggal anda atau Tempat usaha anda di Indonesia mengalami kerusakan besar** karena kebakaran, banjir atau bencana alam sejenis dan kehadiran anda diperlukan pada tempatnya saat atau setelah tanggal keberangkatan
21
+ RISK_CLK014: 'CLK014', //Pesawat delay minimal 4 jam dan/atau penerbangan pesawat dibatalkan karena bencana alam, akibat pemogokan, aksi buruh sektor industri, cuaca buruk, kerusakan mekanis atau penutupan bandara atau pelabuhan keberangkatan
22
22
  // LIST DOCUMENT
23
- DOCUMENT_DLK001: 'DLK001',
24
- DOCUMENT_DLK002: 'DLK002',
25
- DOCUMENT_DLK003: 'DLK003',
26
- DOCUMENT_DLK004: 'DLK004',
27
- DOCUMENT_DLK005: 'DLK005',
28
- DOCUMENT_DLK006: 'DLK006',
29
- DOCUMENT_DLK007: 'DLK007',
30
- DOCUMENT_DLK008: 'DLK008',
31
- DOCUMENT_DLK009: 'DLK009',
32
- DOCUMENT_DLK010: 'DLK010',
33
- DOCUMENT_DLK011: 'DLK011',
34
- DOCUMENT_DLK012: 'DLK012',
35
- DOCUMENT_DLK013: 'DLK013',
36
- DOCUMENT_DLK014: 'DLK014',
37
- DOCUMENT_DLK015: 'DLK015',
38
- DOCUMENT_DLK016: 'DLK016',
39
- DOCUMENT_DLK017: 'DLK017',
40
- DOCUMENT_DLK018: 'DLK018',
41
- DOCUMENT_DLK019: 'DLK019',
42
- DOCUMENT_DLK020: 'DLK020',
43
- DOCUMENT_DLK021: 'DLK021',
44
- DOCUMENT_DLK022: 'DLK022',
45
- DOCUMENT_DLK023: 'DLK023',
46
- DOCUMENT_DLK024: 'DLK024',
47
- DOCUMENT_DLK025: 'DLK025',
23
+ DOCUMENT_DLK001: 'DLK001', // KTP
24
+ DOCUMENT_DLK002: 'DLK002', // Tiket Konser
25
+ DOCUMENT_DLK003: 'DLK003', // Bukti pemesanan tiket
26
+ DOCUMENT_DLK004: 'DLK004', // Surat Keterangan Kematian dari Aparat Setempat
27
+ DOCUMENT_DLK005: 'DLK005', // Surat Kecelakaan dan Penghentian Pencarian dari Pihak Berwenang
28
+ DOCUMENT_DLK006: 'DLK006', // Akta Kematian jika Tertanggung Meninggal Dunia atau Surat Pemeriksaan
29
+ DOCUMENT_DLK007: 'DLK007', // (Visum) dari Dokter jika Tertanggung Cacat Tetap
30
+ DOCUMENT_DLK008: 'DLK008', // Nota-nota dan kwitansi asli biaya pengobatan
31
+ DOCUMENT_DLK009: 'DLK009', // Catatan diagnosis dokter / laporan medis asli termasuk informasi lama perawatan rumah sakit
32
+ DOCUMENT_DLK010: 'DLK010', // Bukti kerusakan / Foto-foto (jika pencurian dengan kekerasan atau kerusakan)
33
+ DOCUMENT_DLK011: 'DLK011', // Surat laporan polisi (khusus kehilangan)
34
+ DOCUMENT_DLK012: 'DLK012', // Estimasi biaya perbaikan (jika kerusakan)
35
+ DOCUMENT_DLK013: 'DLK013', // Bukti kepemilikan barang (invoice / kwitansi pembelian)
36
+ DOCUMENT_DLK014: 'DLK014', // Dokumen bukti pengembalian/refund dari Loket.com sehubungan dengan pembatalan
37
+ DOCUMENT_DLK015: 'DLK015', // Surat Pernyataan dari pihak Loket.com yang menjelaskan penyebab pembatalan tiket
38
+ DOCUMENT_DLK016: 'DLK016', // Laporan polisi yang menjelaskan kejadian
39
+ DOCUMENT_DLK017: 'DLK017', // Daftar barang yang terbakar/rusak beserta jenis dan spesifikasinya
40
+ DOCUMENT_DLK018: 'DLK018', // Apabila alamat rumah tinggal tidak sama dengan KTP maka perlu dibuktikan dengan surat keterangan tinggal sementara dari RT/RW setempat atau pihak Kelurahan
41
+ DOCUMENT_DLK019: 'DLK019', // Bukti Ahli Waris dari Penerima Manfaat (KTP dan KK) atau Surat dari Pengadilan
42
+ DOCUMENT_DLK020: 'DLK020', // Bukti Pembayaran Akomodasi dan Transportasi – Invoice, kwitansi hotel, bukti reservasi, tiket transportasi yang terjadwal (misalnya kereta, pesawat)
43
+ DOCUMENT_DLK021: 'DLK021', // Surat panggilan pengadilan (jika batal akibat menjadi saksi)
44
+ DOCUMENT_DLK022: 'DLK022', // Surat keterangan dari penyelenggara acara, kepolisian, pemerintah setempat, dan/atau media yang menyatakan bahwa terjadi pemogokan, kerusuhan, atau huru-hara di lokasi acara
45
+ DOCUMENT_DLK023: 'DLK023', // Surat keterangan RT/RW dan foto-foto pendukung (jika tempat tinggal atau tempat usaha rusak)
46
+ DOCUMENT_DLK024: 'DLK024', // Surat keterangan dari Maskapai Penerbangan (jika penerbangan delay atau dibatalkan)
47
+ DOCUMENT_DLK025: 'DLK025', // Bukti pembayaran tiket
48
48
  DOCUMENT_DT001: 'DT001',
49
49
  DOCUMENT_DT002: 'DT002',
50
50
  DOCUMENT_DT003: 'DT003',
51
- LIST_RISK: [],
51
+ LIST_RISK: [], // untuk ambil list dari resiko
52
52
  RISK_CONFIG: {},
53
53
  DOCUMENT_CONFIG: {},
54
54
  STATUS_DEADLINE: {},
@@ -33,7 +33,7 @@ const motorVehicle = {
33
33
  VCDOC022: { key: 'VCDOC022', descEn: '', desc: 'Kuitansi dari Rumah Sakit' },
34
34
  VCDOC023: { key: 'VCDOC023', descEn: '', desc: 'Sertifikat Kematian - Untuk kematian Pihak Ketiga' },
35
35
  VCDOC024: { key: 'VCDOC024', descEn: '', desc: 'Seluruh korespondensi dengan pihak ketiga yang mengalami luka/kematian' },
36
- LIST_RISK: [],
36
+ LIST_RISK: [], // untuk ambil list dari resiko
37
37
  RISK_CONFIG: {},
38
38
  DOCUMENT_CONFIG: {},
39
39
  STATUS_DEADLINE: {},
@@ -73,7 +73,7 @@ const travel = {
73
73
  TCDOC044: { key: 'TCDOC044', descEn: '', desc: 'Tanda terima bagasi (berisi jam & tanggal bagasi diterima)' },
74
74
  TCDOC045: { key: 'TCDOC045', descEn: '', desc: 'Ticket & Boarding Pass' },
75
75
  TCDOC046: { key: 'TCDOC046', descEn: '', desc: 'Visum et Repertum' },
76
- LIST_RISK: [],
76
+ LIST_RISK: [], // untuk ambil list dari resiko
77
77
  RISK_CONFIG: {},
78
78
  DOCUMENT_CONFIG: {},
79
79
  STATUS_DEADLINE: {},
@@ -11,8 +11,8 @@ const config = {
11
11
  date_simple_format_withoud_dash: 'YYYYMMDD',
12
12
  date_format_full_datetime_only: 'DD/MM/YYYY HH:ii:ss',
13
13
  date_format_timestamp: 'timestamp',
14
- date_format_indonesia_format: 'D M Y',
15
- date_format_english_format: 'DD MMM YYYY',
14
+ date_format_indonesia_format: 'D M Y', /** example: 16 Mei 2020 */
15
+ date_format_english_format: 'DD MMM YYYY', /** example: 16 May 2020 */
16
16
  date_simple_indonesia_format: 'DD-MM-YYYY',
17
17
  // GENDER
18
18
  GENDER_MALE: 'M',
@@ -128,11 +128,11 @@ const specificCoa = {
128
128
  exports.specificCoa = specificCoa;
129
129
  // jenis jurnal COA, mengikuti blok di Contoh_Jurnal_Provis.xlsx
130
130
  const coaEvent = {
131
- INITIAL: 'INITIAL',
132
- PAID: 'PAID',
133
- INSURANCE_PAYMENT: 'INSURANCE_PAYMENT',
134
- CANCEL: 'CANCEL',
135
- CANCEL_PAID: 'CANCEL_PAID',
131
+ INITIAL: 'INITIAL', // saat terbuat invoice
132
+ PAID: 'PAID', // saat uang masuk
133
+ INSURANCE_PAYMENT: 'INSURANCE_PAYMENT', // saat bayar ke asuransi
134
+ CANCEL: 'CANCEL', // saat invoice cancel
135
+ CANCEL_PAID: 'CANCEL_PAID', // invoice sudah paid tapi cancel, CN terbit
136
136
  CANCEL_INSURANCE_PAYMENT: 'CANCEL_INSURANCE_PAYMENT', // net off, diproses manual
137
137
  };
138
138
  exports.coaEvent = coaEvent;
@@ -73,5 +73,6 @@ declare const product: {
73
73
  PRODUCT_CODE_FINE_ART_COLLECTION: string;
74
74
  PRODUCT_CODE_MONEY: string;
75
75
  PRODUCT_CODE_FIDELITY_GUARANTEE_INSURANCE: string;
76
+ PRODUCT_CODE_BPR_MANDIRI: string;
76
77
  };
77
78
  export default product;
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const occupation_simple_1 = require("./product/property/occupation-simple");
4
4
  const product = {
5
- LIST: {},
6
- MANUAL_LIST: [],
7
- CARGO_BY_SYSTEM_LIST: [],
5
+ LIST: {}, // ini buat semua product
6
+ MANUAL_LIST: [], // ini buat product yang bisa diadd manual -> di form quotation / policy
7
+ CARGO_BY_SYSTEM_LIST: [], // ini buat product yang by sistem
8
8
  PRODUCT_CODE_PROPERTY_ALL_RISK: 'polismall-property-allrisk',
9
9
  PRODUCT_CODE_EARTHQUAKE: 'polismall-earthquake',
10
10
  PRODUCT_CODE_VEHICLE: 'polismall-vehicle',
@@ -46,7 +46,7 @@ const product = {
46
46
  PRODUCT_CODE_ERECTION_ALL_RISK: 'polismall-erection-all-risk',
47
47
  PRODUCT_CODE_PA_SOGO_ELI_DAYIN: 'polismall-eli',
48
48
  PRODUCT_CODE_PRODUCT_LIABILITY: 'polismall-product-liability',
49
- PRODUCT_POLISMALL_CARGO_QUOTATION: 'polismall-cargo-quotation',
49
+ PRODUCT_POLISMALL_CARGO_QUOTATION: 'polismall-cargo-quotation', // buat quotation
50
50
  // CARGO
51
51
  PRODUCT_POLISMALL_CARGO_MERATUS: 'polismall-cargo-meratus-paliside',
52
52
  PRODUCT_POLISMALL_CARGO: 'polismall-cargo',
@@ -54,17 +54,17 @@ const product = {
54
54
  PRODUCT_CODE_CARGO_BUNDLE: 'polismall-cargo-bundle',
55
55
  PRODUCT_CODE_MERIMEN_CARGO: 'polismall-merimen-cargo',
56
56
  PRODUCT_CODE_CARGO_TEMAS: 'polismall-cargo-temas',
57
- PRODUCT_CODE_CARGO_SINGLE_SHIPMENT: 'polismall-cargo-single-shipment',
57
+ PRODUCT_CODE_CARGO_SINGLE_SHIPMENT: 'polismall-cargo-single-shipment', // Marine Cargo Single Shipment, buat add manual di policy
58
58
  // OTTO
59
- PRODUCT_CODE_OTTO_CI: 'polismall-otto-critical-illness',
60
- PRODUCT_CODE_OTTO_FLEXAS: 'polismall-otto-flexas',
61
- PRODUCT_CODE_OTTO_CRACK_SCREEN: 'polismall-otto-crack',
62
- PRODUCT_CODE_OTTO_AUM_GP: 'polismall-otto-aum-gp',
63
- PRODUCT_CODE_OTTO_AUM_PLN: 'polismall-otto-aum-pln',
64
- PRODUCT_CODE_OTTO_AUM_PDAM: 'polismall-otto-aum-pdam',
65
- PRODUCT_CODE_OTTO_AUM_SB: 'polismall-otto-aum-sb',
66
- PRODUCT_CODE_OTTO_AUM_FB: 'polismall-otto-aum-fb',
67
- PRODUCT_CODE_OTTO_AUM_FBK: 'polismall-otto-aum-fbk',
59
+ PRODUCT_CODE_OTTO_CI: 'polismall-otto-critical-illness', // ELI
60
+ PRODUCT_CODE_OTTO_FLEXAS: 'polismall-otto-flexas', // MNC
61
+ PRODUCT_CODE_OTTO_CRACK_SCREEN: 'polismall-otto-crack', // MNC
62
+ PRODUCT_CODE_OTTO_AUM_GP: 'polismall-otto-aum-gp', // AUM Gamers Protection
63
+ PRODUCT_CODE_OTTO_AUM_PLN: 'polismall-otto-aum-pln', // AUM Biller Protection PLN
64
+ PRODUCT_CODE_OTTO_AUM_PDAM: 'polismall-otto-aum-pdam', // AUM Biller Protection PDAM
65
+ PRODUCT_CODE_OTTO_AUM_SB: 'polismall-otto-aum-sb', // AUM Merchant Protection Stock Barang
66
+ PRODUCT_CODE_OTTO_AUM_FB: 'polismall-otto-aum-fb', // AUM Merchant Protection FLEXAS+BANJIR
67
+ PRODUCT_CODE_OTTO_AUM_FBK: 'polismall-otto-aum-fbk', // AUM Merchant Protection FLEXAS+BANJIR+KEBONGKARAN
68
68
  // BDKI
69
69
  PRODUCT_CODE_BDKI_MOTOR: 'polismall-bdki-motor',
70
70
  PRODUCT_CODE_BDKI_RUMAH: 'polismall-bdki-rumah',
@@ -81,6 +81,7 @@ const product = {
81
81
  PRODUCT_CODE_FINE_ART_COLLECTION: 'polismall-fine-art-collections',
82
82
  PRODUCT_CODE_MONEY: 'polismall-money',
83
83
  PRODUCT_CODE_FIDELITY_GUARANTEE_INSURANCE: 'polismall-fidelity-guarantee-insurance',
84
+ PRODUCT_CODE_BPR_MANDIRI: 'polismall-bpr-mandiri',
84
85
  };
85
86
  product.LIST = {
86
87
  [product.PRODUCT_CODE_BNI_RUMAH]: {
@@ -375,6 +376,10 @@ product.LIST = {
375
376
  value: product.PRODUCT_CODE_WRPL,
376
377
  name: "Wreck Removal & Pollution Liability",
377
378
  },
379
+ [product.PRODUCT_CODE_BPR_MANDIRI]: {
380
+ value: product.PRODUCT_CODE_BPR_MANDIRI,
381
+ name: "BPR Mandiri",
382
+ },
378
383
  };
379
384
  product.MANUAL_LIST = [
380
385
  product.LIST[product.PRODUCT_CODE_FIDELITY_GUARANTEE_INSURANCE],
@@ -422,6 +427,7 @@ product.MANUAL_LIST = [
422
427
  product.LIST[product.PRODUCT_CODE_PRODUCT_LIABILITY],
423
428
  product.LIST[product.PRODUCT_POLISMALL_CARGO_QUOTATION],
424
429
  product.LIST[product.PRODUCT_CODE_MONEY],
430
+ product.LIST[product.PRODUCT_CODE_BPR_MANDIRI],
425
431
  ];
426
432
  product.CARGO_BY_SYSTEM_LIST = [
427
433
  product.LIST[product.PRODUCT_POLISMALL_CARGO_MERATUS],
@@ -6,7 +6,7 @@ const source = {
6
6
  SOURCE_TANTO: 'TANTO',
7
7
  SOURCE_MERATUS_PALISIDE: 'MERATUS-PALISIDE',
8
8
  SOURCE_TEMAS: 'TEMAS',
9
- SOURCE_DOMESTIK: 'DOMESTIK',
9
+ SOURCE_DOMESTIK: 'DOMESTIK', // Cargo Revamp - Domestix
10
10
  SOURCE_YUDHA_EXCEL: 'YUDHA',
11
11
  SOURCE_EXIM: 'EXIM',
12
12
  SOURCE_UPLOAD_BUNDLE: 'UPLOAD-BUNDLE',
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = alphaNumericCleansing;
3
4
  function alphaNumericCleansing(text) {
4
5
  if (typeof text !== 'string')
5
6
  return '';
@@ -7,4 +8,3 @@ function alphaNumericCleansing(text) {
7
8
  .toLowerCase()
8
9
  .replace(/[^a-z0-9]/g, '');
9
10
  }
10
- exports.default = alphaNumericCleansing;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = terbilang;
3
4
  function terbilang(value) {
4
5
  const satuan = ['', 'satu', 'dua', 'tiga', 'empat', 'lima', 'enam', 'tujuh', 'delapan', 'sembilan'];
5
6
  const belasan = ['sepuluh', 'sebelas', 'dua belas', 'tiga belas', 'empat belas', 'lima belas', 'enam belas', 'tujuh belas', 'delapan belas', 'sembilan belas'];
@@ -41,4 +42,3 @@ function terbilang(value) {
41
42
  // Menghilangkan spasi yang double
42
43
  return result.replace(/\s+/g, ' ').trim();
43
44
  }
44
- exports.default = terbilang;
@@ -13,7 +13,7 @@ const axios_1 = require("axios");
13
13
  const generateRelationId_1 = require("./generateRelationId");
14
14
  const getCurrentDate_1 = require("./getCurrentDate");
15
15
  const constants_1 = require("../constants");
16
- exports.default = ({ url, headers, params, callback, }) => __awaiter(void 0, void 0, void 0, function* () {
16
+ exports.default = (_a) => __awaiter(void 0, [_a], void 0, function* ({ url, headers, params, callback, }) {
17
17
  return yield axios_1.default.get(url, {
18
18
  params,
19
19
  headers: Object.assign({ 'Content-Type': 'application/json', 'X-Correlation-Id': (0, generateRelationId_1.default)(24), 'X-Transmission-Date-Time': (0, getCurrentDate_1.default)() }, headers),
@@ -13,7 +13,7 @@ const axios_1 = require("axios");
13
13
  const generateRelationId_1 = require("./generateRelationId");
14
14
  const getCurrentDate_1 = require("./getCurrentDate");
15
15
  const constants_1 = require("../constants");
16
- exports.default = ({ url, headers, body, callback, }) => __awaiter(void 0, void 0, void 0, function* () {
16
+ exports.default = (_a) => __awaiter(void 0, [_a], void 0, function* ({ url, headers, body, callback, }) {
17
17
  return yield axios_1.default.post(url, body, {
18
18
  headers: Object.assign({ 'Content-Type': 'application/json', 'X-Correlation-Id': (0, generateRelationId_1.default)(24), 'X-Transmission-Date-Time': (0, getCurrentDate_1.default)() }, headers),
19
19
  }).then((result) => __awaiter(void 0, void 0, void 0, function* () {
@@ -13,7 +13,7 @@ const axios_1 = require("axios");
13
13
  const constants_1 = require("../constants");
14
14
  const generateRelationId_1 = require("./generateRelationId");
15
15
  const getCurrentDate_1 = require("./getCurrentDate");
16
- exports.default = ({ url, headers, body, callback, }) => __awaiter(void 0, void 0, void 0, function* () {
16
+ exports.default = (_a) => __awaiter(void 0, [_a], void 0, function* ({ url, headers, body, callback, }) {
17
17
  return yield axios_1.default.put(url, body, {
18
18
  headers: Object.assign({ 'Content-Type': 'application/json', 'X-Correlation-Id': (0, generateRelationId_1.default)(24), 'X-Transmission-Date-Time': (0, getCurrentDate_1.default)() }, headers),
19
19
  }).then((result) => __awaiter(void 0, void 0, void 0, function* () {
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
3
4
  const brokerage_1 = require("../constants/brokerage");
4
5
  function default_1(request) {
5
6
  try {
@@ -16,4 +17,3 @@ function default_1(request) {
16
17
  return null;
17
18
  }
18
19
  }
19
- exports.default = default_1;
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.roundTo = exports.minusN = exports.sumN = exports.divide = exports.multiple = exports.minus = exports.sum = void 0;
3
+ exports.minusN = exports.sumN = void 0;
4
+ exports.sum = sum;
5
+ exports.minus = minus;
6
+ exports.multiple = multiple;
7
+ exports.divide = divide;
8
+ exports.roundTo = roundTo;
4
9
  function sum(a, b) {
5
10
  try {
6
11
  if (a == null && b == null)
@@ -11,7 +16,6 @@ function sum(a, b) {
11
16
  return null;
12
17
  }
13
18
  }
14
- exports.sum = sum;
15
19
  function minus(a, b) {
16
20
  try {
17
21
  if (a == null && b == null)
@@ -22,7 +26,6 @@ function minus(a, b) {
22
26
  return null;
23
27
  }
24
28
  }
25
- exports.minus = minus;
26
29
  function multiple(a, b) {
27
30
  try {
28
31
  if (a == null && b == null)
@@ -33,7 +36,6 @@ function multiple(a, b) {
33
36
  return null;
34
37
  }
35
38
  }
36
- exports.multiple = multiple;
37
39
  function roundTo(num, precision = 2) {
38
40
  try {
39
41
  if (num == null && precision == null)
@@ -45,7 +47,6 @@ function roundTo(num, precision = 2) {
45
47
  return null;
46
48
  }
47
49
  }
48
- exports.roundTo = roundTo;
49
50
  function divide(a, b) {
50
51
  try {
51
52
  if (a == null && b == null)
@@ -58,7 +59,6 @@ function divide(a, b) {
58
59
  return null;
59
60
  }
60
61
  }
61
- exports.divide = divide;
62
62
  const sumN = (...numbers) => {
63
63
  let result = null;
64
64
  numbers.forEach(each => {
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sumUnits = exports.fromUnits = exports.toUnits = exports.AMOUNT_SCALE = void 0;
3
+ exports.AMOUNT_SCALE = void 0;
4
+ exports.toUnits = toUnits;
5
+ exports.fromUnits = fromUnits;
6
+ exports.sumUnits = sumUnits;
4
7
  // Untuk nilai uang yang dipakai ledger (kolom decimal(16,4)): semua hitungan dilakukan
5
8
  // dalam integer (nilai * 10^4) biar debit dan kredit tidak pernah beda gara-gara float.
6
9
  // Konversi ke string cuma sekali, waktu mau disimpan.
@@ -19,15 +22,12 @@ function toUnits(value) {
19
22
  }
20
23
  return units;
21
24
  }
22
- exports.toUnits = toUnits;
23
25
  function fromUnits(units) {
24
26
  return (units / FACTOR).toFixed(exports.AMOUNT_SCALE);
25
27
  }
26
- exports.fromUnits = fromUnits;
27
28
  function sumUnits(...values) {
28
29
  return values.reduce((total, value) => total + value, 0);
29
30
  }
30
- exports.sumUnits = sumUnits;
31
31
  exports.default = {
32
32
  AMOUNT_SCALE: exports.AMOUNT_SCALE,
33
33
  toUnits,
@@ -0,0 +1,3 @@
1
+ import IErrorContext from '../interface/error.context.interface';
2
+ export declare function buildErrorKey(err: any, env: string, service: string): string;
3
+ export default function notifyError(err: any, ctx: IErrorContext): void;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildErrorKey = buildErrorKey;
4
+ exports.default = notifyError;
5
+ const axios_1 = require("axios");
6
+ const THROTTLE_MS = 60000;
7
+ const THROTTLE_MAX_KEYS = 1000;
8
+ const WEBHOOK_TIMEOUT_MS = 3000;
9
+ const MESSAGE_MAX_LENGTH = 1000;
10
+ const STACK_MAX_LENGTH = 3000;
11
+ // Throttle per key per proses, supaya badai error tidak membanjiri n8n
12
+ const lastSent = new Map();
13
+ function buildErrorKey(err, env, service) {
14
+ var _a, _b, _c;
15
+ // Frame pertama yang menunjuk ke kode aplikasi (bukan library / internal Node)
16
+ const frame = String((_a = err === null || err === void 0 ? void 0 : err.stack) !== null && _a !== void 0 ? _a : '').split('\n').slice(1)
17
+ .find((line) => !line.includes('node_modules') && !line.includes('node:internal') && /:\d+:\d+/.test(line));
18
+ // Ambil basename + nomor baris, berlaku untuk path Linux maupun Windows
19
+ const location = frame === null || frame === void 0 ? void 0 : frame.match(/([^/\\(\s]+):(\d+):\d+\)?\s*$/);
20
+ const fileLine = location ? `${location[1]}:${location[2]}` : 'unknown';
21
+ const code = (_c = (_b = err === null || err === void 0 ? void 0 : err.code) !== null && _b !== void 0 ? _b : err === null || err === void 0 ? void 0 : err.name) !== null && _c !== void 0 ? _c : 500;
22
+ return `${env}-${service}-${fileLine}-${code}`;
23
+ }
24
+ // Message TypeORM/driver bisa memuat SQL dan nilai baris (data nasabah/polis), jadi jangan dikirim mentah
25
+ function safeMessage(err) {
26
+ var _a, _b;
27
+ if ((err === null || err === void 0 ? void 0 : err.name) === 'QueryFailedError')
28
+ return `${err.name} ${(_a = err.code) !== null && _a !== void 0 ? _a : ''}`.trim();
29
+ return String((_b = err === null || err === void 0 ? void 0 : err.message) !== null && _b !== void 0 ? _b : err).slice(0, MESSAGE_MAX_LENGTH);
30
+ }
31
+ function isThrottled(errorKey) {
32
+ var _a;
33
+ const now = Date.now();
34
+ if (now - ((_a = lastSent.get(errorKey)) !== null && _a !== void 0 ? _a : 0) < THROTTLE_MS)
35
+ return true;
36
+ if (lastSent.size >= THROTTLE_MAX_KEYS)
37
+ lastSent.clear();
38
+ lastSent.set(errorKey, now);
39
+ return false;
40
+ }
41
+ function notifyError(err, ctx) {
42
+ var _a, _b;
43
+ const webhookUrl = process.env.ERROR_WEBHOOK_URL;
44
+ const webhookSecret = process.env.ERROR_WEBHOOK_SECRET;
45
+ if (process.env.ERROR_NOTIFIER_ENABLED !== 'true' || !webhookUrl)
46
+ return;
47
+ try {
48
+ const errorKey = buildErrorKey(err, ctx.env, ctx.service);
49
+ if (isThrottled(errorKey))
50
+ return;
51
+ axios_1.default.post(webhookUrl, {
52
+ errorKey,
53
+ env: ctx.env,
54
+ service: ctx.service,
55
+ message: safeMessage(err),
56
+ stack: String((_a = err === null || err === void 0 ? void 0 : err.stack) !== null && _a !== void 0 ? _a : '').slice(0, STACK_MAX_LENGTH),
57
+ method: ctx.method,
58
+ // Query string bisa berisi data sensitif, selalu dibuang
59
+ endpoint: (_b = ctx.endpoint) === null || _b === void 0 ? void 0 : _b.split('?')[0],
60
+ correlationId: ctx.correlationId,
61
+ timestamp: new Date().toLocaleString('id-ID', { timeZone: 'Asia/Jakarta' }),
62
+ }, {
63
+ timeout: WEBHOOK_TIMEOUT_MS,
64
+ // Secret opsional; axios 0.21 menolak header bernilai undefined, jadi hanya dikirim jika di-set
65
+ headers: webhookSecret ? { 'X-Webhook-Secret': webhookSecret } : {},
66
+ }).catch((e) => console.log(`[error-notifier] ${e === null || e === void 0 ? void 0 : e.message}`));
67
+ }
68
+ catch (e) {
69
+ console.log(`[error-notifier] ${e === null || e === void 0 ? void 0 : e.message}`);
70
+ }
71
+ }
@@ -5,10 +5,10 @@ exports.default = (req, { isUserCodeMandatory = true } = {}) => {
5
5
  if (!userCode && isUserCodeMandatory)
6
6
  throw new Error('Usercode is not found');
7
7
  return {
8
- userCode: req.headers['x-user'] || req.headers['userCode'],
9
- username: req.headers['x-username'] || req.headers['username'],
10
- userEmail: req.headers['x-useremail'] || req.headers['x-user-email'] || req.headers['userEmail'],
11
- isAdmin: req.headers['x-admin'] || req.headers['isAdmin'],
8
+ userCode: req.headers['x-user'] || req.headers['userCode'], //x-user -> isinya userCode
9
+ username: req.headers['x-username'] || req.headers['username'], //x-username -> isinya auth.username
10
+ userEmail: req.headers['x-useremail'] || req.headers['x-user-email'] || req.headers['userEmail'], //x-useremail -> isinya auth.username
11
+ isAdmin: req.headers['x-admin'] || req.headers['isAdmin'], //x-admin // isi 1/undefined -> jika 1 berarti admin
12
12
  isPublic: req.headers['x-public'], //x-public isi 1/undefined -> jika 1 berarti akses public
13
13
  };
14
14
  };
@@ -29,4 +29,5 @@ import alphaNumericCleansing from "./alphaNumericCleansing";
29
29
  import coretaxDppCalculate from "./coretaxDppCalculate";
30
30
  import getEmailContent, { initEmailTemplates } from "./getEmailContent";
31
31
  import { AMOUNT_SCALE, toUnits, fromUnits, sumUnits } from "./decimalAmount";
32
- export { addDateTime, amountDescription, axiosGet, axiosPost, axiosPut, compareDiffObj, convertCurrencySymbol, convertDateTimeFormat, convertObjToNumber, convertToCurrency, filterObj, generateRelationId, getCurrentDate, getDiffValue, getObjByKeys, loop, loopBackward, searchValue, readExcel, generateHashString, mergeObj, combineObj, calculateByType, getCargoType, getHeaderUser, setHeaderUser, alphaNumericCleansing, findObjectByParams, coretaxDppCalculate, getEmailContent, initEmailTemplates, AMOUNT_SCALE, toUnits, fromUnits, sumUnits, };
32
+ import notifyError, { buildErrorKey } from "./errorNotifier";
33
+ export { addDateTime, amountDescription, axiosGet, axiosPost, axiosPut, compareDiffObj, convertCurrencySymbol, convertDateTimeFormat, convertObjToNumber, convertToCurrency, filterObj, generateRelationId, getCurrentDate, getDiffValue, getObjByKeys, loop, loopBackward, searchValue, readExcel, generateHashString, mergeObj, combineObj, calculateByType, getCargoType, getHeaderUser, setHeaderUser, alphaNumericCleansing, findObjectByParams, coretaxDppCalculate, getEmailContent, initEmailTemplates, AMOUNT_SCALE, toUnits, fromUnits, sumUnits, notifyError, buildErrorKey, };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sumUnits = exports.fromUnits = exports.toUnits = exports.AMOUNT_SCALE = exports.initEmailTemplates = exports.getEmailContent = exports.coretaxDppCalculate = exports.findObjectByParams = exports.alphaNumericCleansing = exports.setHeaderUser = exports.getHeaderUser = exports.getCargoType = exports.calculateByType = exports.combineObj = exports.mergeObj = exports.generateHashString = exports.readExcel = exports.searchValue = exports.loopBackward = exports.loop = exports.getObjByKeys = exports.getDiffValue = exports.getCurrentDate = exports.generateRelationId = exports.filterObj = exports.convertToCurrency = exports.convertObjToNumber = exports.convertDateTimeFormat = exports.convertCurrencySymbol = exports.compareDiffObj = exports.axiosPut = exports.axiosPost = exports.axiosGet = exports.amountDescription = exports.addDateTime = void 0;
3
+ exports.buildErrorKey = exports.notifyError = exports.sumUnits = exports.fromUnits = exports.toUnits = exports.AMOUNT_SCALE = exports.initEmailTemplates = exports.getEmailContent = exports.coretaxDppCalculate = exports.findObjectByParams = exports.alphaNumericCleansing = exports.setHeaderUser = exports.getHeaderUser = exports.getCargoType = exports.calculateByType = exports.combineObj = exports.mergeObj = exports.generateHashString = exports.readExcel = exports.searchValue = exports.loopBackward = exports.loop = exports.getObjByKeys = exports.getDiffValue = exports.getCurrentDate = exports.generateRelationId = exports.filterObj = exports.convertToCurrency = exports.convertObjToNumber = exports.convertDateTimeFormat = exports.convertCurrencySymbol = exports.compareDiffObj = exports.axiosPut = exports.axiosPost = exports.axiosGet = exports.amountDescription = exports.addDateTime = void 0;
4
4
  const addDateTime_1 = require("./addDateTime");
5
5
  exports.addDateTime = addDateTime_1.default;
6
6
  const amountDescription_1 = require("./amountDescription");
@@ -67,3 +67,6 @@ Object.defineProperty(exports, "AMOUNT_SCALE", { enumerable: true, get: function
67
67
  Object.defineProperty(exports, "toUnits", { enumerable: true, get: function () { return decimalAmount_1.toUnits; } });
68
68
  Object.defineProperty(exports, "fromUnits", { enumerable: true, get: function () { return decimalAmount_1.fromUnits; } });
69
69
  Object.defineProperty(exports, "sumUnits", { enumerable: true, get: function () { return decimalAmount_1.sumUnits; } });
70
+ const errorNotifier_1 = require("./errorNotifier");
71
+ exports.notifyError = errorNotifier_1.default;
72
+ Object.defineProperty(exports, "buildErrorKey", { enumerable: true, get: function () { return errorNotifier_1.buildErrorKey; } });
@@ -0,0 +1,11 @@
1
+ export declare const CUTOFF_DAY = 15;
2
+ export declare const monthsBetween: (issueDate: string | Date, actionDate: string | Date) => number | null;
3
+ export declare const requiresCreditNote: (issueDate: string | Date, actionDate: string | Date) => boolean;
4
+ export declare const canReviseInPlace: (issueDate: string | Date, actionDate: string | Date) => boolean;
5
+ declare const _default: {
6
+ CUTOFF_DAY: number;
7
+ monthsBetween: (issueDate: string | Date, actionDate: string | Date) => number | null;
8
+ requiresCreditNote: (issueDate: string | Date, actionDate: string | Date) => boolean;
9
+ canReviseInPlace: (issueDate: string | Date, actionDate: string | Date) => boolean;
10
+ };
11
+ export default _default;