From 7ec561888b3123a8d9a0b062727c562c9dbec2db Mon Sep 17 00:00:00 2001 From: Miqdad Date: Mon, 11 Aug 2025 12:15:15 +0700 Subject: change format validation --- src-migrate/validations/tempo.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src-migrate/validations') diff --git a/src-migrate/validations/tempo.ts b/src-migrate/validations/tempo.ts index 46ac1ef1..f0623b6a 100644 --- a/src-migrate/validations/tempo.ts +++ b/src-migrate/validations/tempo.ts @@ -13,7 +13,7 @@ export const TempoSchema = z.object({ .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', }), bankName: z.string().min(1, { message: 'Nama bank harus diisi' }), accountName: z.string().min(1, { message: 'Nama rekening harus diisi' }), @@ -43,7 +43,7 @@ export const TempoSchemaKontakPerson = z .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', }), purchasingTittle: z.string().min(1, { message: 'Tittle harus dipilih' }), financeTittle: z.string().min(1, { message: 'Tittle harus dipilih' }), @@ -51,7 +51,7 @@ export const TempoSchemaKontakPerson = z .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', }), direkturEmail: z .string() @@ -100,13 +100,13 @@ export const TempoSchemaPengiriman = z.object({ .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', }), invoicePicMobile: z .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', }), invoicePicTittle: z.string().min(1, { message: 'Tittle harus dipilih' }), invoicePic: z.string().min(1, { message: 'Nama pic invoice harus diisi' }), @@ -145,7 +145,7 @@ export const TempoSchemaSupplier = z.object({ .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', }), durasiTempo: z.string().min(1, { message: 'Durasi tempo harus diisi' }), creditLimit: z.string().min(1, { message: 'Limit Kredit harus diisi' }), -- cgit v1.2.3 From fc837f851c89614f392e5a17cd6a2ceda3f706f3 Mon Sep 17 00:00:00 2001 From: Miqdad Date: Mon, 11 Aug 2025 16:32:03 +0700 Subject: more vals in confirm page --- src-migrate/validations/tempo.ts | 124 ++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 67 deletions(-) (limited to 'src-migrate/validations') diff --git a/src-migrate/validations/tempo.ts b/src-migrate/validations/tempo.ts index f0623b6a..38380d5a 100644 --- a/src-migrate/validations/tempo.ts +++ b/src-migrate/validations/tempo.ts @@ -13,7 +13,8 @@ export const TempoSchema = z.object({ .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', + message: + 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', }), bankName: z.string().min(1, { message: 'Nama bank harus diisi' }), accountName: z.string().min(1, { message: 'Nama rekening harus diisi' }), @@ -69,8 +70,8 @@ export const TempoSchemaKontakPerson = z }) .refine( (data) => - !data.financeEmail || // Jika financeEmail kosong, tidak perlu validasi - data.financeEmail !== data.purchasingEmail, // Validasi jika financeEmail ada + !data.financeEmail || + data.financeEmail !== data.purchasingEmail, { message: 'Email Finance tidak boleh sama dengan Email Purchasing', path: ['financeEmail'], @@ -86,70 +87,37 @@ export const TempoSchemaKontakPerson = z 'Email Direktur tidak boleh sama dengan Email Finance atau Purchasing', path: ['direkturEmail'], } - ); -export const TempoSchemaPengiriman = z.object({ - PICTittle: z.string().min(1, { message: 'Tittle harus dipilih' }), - PICName: z.string().min(1, { message: 'Nama harus diisi' }), - streetPengiriman: z.string().min(1, { message: 'Alamat harus diisi' }), - statePengiriman: z.string().min(1, { message: 'Provinsi harus dipilih' }), - cityPengiriman: z.string().min(1, { message: 'Kota harus dipilih' }), - districtPengiriman: z.string().min(1, { message: 'Kecamatan harus dipilih' }), - subDistrictPengiriman: z.string().optional(), - zipPengiriman: z.string().min(1, { message: 'Kode pos harus diisi' }), - PICBarangMobile: z - .string() - .min(1, { message: 'Nomor telepon harus diisi' }) - .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', - }), - invoicePicMobile: z - .string() - .min(1, { message: 'Nomor telepon harus diisi' }) - .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', - }), - invoicePicTittle: z.string().min(1, { message: 'Tittle harus dipilih' }), - invoicePic: z.string().min(1, { message: 'Nama pic invoice harus diisi' }), - streetInvoice: z.string().min(1, { message: 'Alamat invoice harus diisi' }), - stateInvoice: z - .string() - .min(1, { message: 'Provinsi invoice harus dipilih' }), - cityInvoice: z.string().min(1, { message: 'Kota invoice harus dipilih' }), - districtInvoice: z - .string() - .min(1, { message: 'Kecamatan invoice harus dipilih' }), - subDistrictInvoice: z.string().optional(), - zipInvoice: z.string().min(1, { message: 'Kode pos harus diisi' }), - isSameAddrees: z.string(), - isSameAddreesStreet: z.string(), - tukarInvoiceInput: z - .string() - .min(1, { message: 'Jadwal Penukaran Invoice Harus Diisi' }), - tukarInvoiceInputPembayaran: z - .string() - .min(1, { message: 'Jadwal Pembayaran Harus Diisi' }), - dokumenPengiriman: z.string().optional(), - dokumenPengirimanInput: z.string().optional(), - dokumenKirimInput: z.string().optional(), - dokumenPengirimanInvoiceInput: z.string().optional(), - dokumenProsedur: z.object({ - name: z.string().optional(), - format: z.string().optional(), - base64: z.string().optional(), - }), -}); -export const TempoSchemaSupplier = z.object({ - supplier: z.string().min(1, { message: 'Nama supplier harus diisi' }), - pic: z.string().min(1, { message: 'Nama PIC harus diisi' }), - telepon: z - .string() - .min(1, { message: 'Nomor telepon harus diisi' }) - .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', - }), - durasiTempo: z.string().min(1, { message: 'Durasi tempo harus diisi' }), - creditLimit: z.string().min(1, { message: 'Limit Kredit harus diisi' }), -}); + ) + .superRefine((data, ctx) => { + const phones = [ + { key: 'direkturMobile', label: 'No. HP Direktur', value: data.direkturMobile }, + { key: 'purchasingMobile', label: 'No. HP Purchasing', value: data.purchasingMobile }, + { key: 'financeMobile', label: 'No. HP Finance', value: data.financeMobile }, + ]; + + const seen = new Map(); + + for (const phone of phones) { + if (!phone.value) continue; + + if (!seen.has(phone.value)) { + seen.set(phone.value, { key: phone.key, label: phone.label }); + } else { + const first = seen.get(phone.value)!; + ctx.addIssue({ + code: 'custom', + path: [phone.key], + message: `${phone.label} tidak boleh sama dengan ${first.label}`, + }); + ctx.addIssue({ + code: 'custom', + path: [first.key], + message: `${first.label} tidak boleh sama dengan ${phone.label}`, + }); + } + } + }); + export const TempoSchemaDokumen = z.object({ dokumenNib: z.object({ name: z.string().min(1, { message: 'Nama file harus diisi' }), @@ -217,3 +185,25 @@ export const TempoSchemaDokumen = z.object({ base64: z.string().optional(), }), }); + +export const TempoSchemaPengiriman = z + .object({ + PICBarangMobile: z + .string() + .min(1, { message: 'Nomor telepon harus diisi' }) + .refine((val) => /^\d{10,12}$/.test(val), { + message: + 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', + }), + invoicePicMobile: z + .string() + .min(1, { message: 'Nomor telepon harus diisi' }) + .refine((val) => /^\d{10,12}$/.test(val), { + message: + 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', + }), + }); + // .refine((data) => data.PICBarangMobile !== data.invoicePicMobile, { + // message: 'Nomor HP PIC Barang tidak boleh sama dengan Nomor HP PIC Invoice', + // path: ['invoicePicMobile'], // error akan tampil di bawah field invoicePicMobile + // }); -- cgit v1.2.3 From 5d12d9f89f25b8bceb6d914dfef0581321b726ed Mon Sep 17 00:00:00 2001 From: Miqdad Date: Tue, 12 Aug 2025 09:38:20 +0700 Subject: PIC num cannot be same --- src-migrate/validations/tempo.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src-migrate/validations') diff --git a/src-migrate/validations/tempo.ts b/src-migrate/validations/tempo.ts index 38380d5a..b2239d8c 100644 --- a/src-migrate/validations/tempo.ts +++ b/src-migrate/validations/tempo.ts @@ -202,8 +202,8 @@ export const TempoSchemaPengiriman = z message: 'Format nomor telepon tidak valid, contoh: 081234567890 atau 021234567890', }), + }) + .refine((data) => data.PICBarangMobile !== data.invoicePicMobile, { + message: 'Nomor HP PIC Barang tidak boleh sama dengan Nomor HP PIC Invoice', + path: ['invoicePicMobile', 'PICBarangMobile'], }); - // .refine((data) => data.PICBarangMobile !== data.invoicePicMobile, { - // message: 'Nomor HP PIC Barang tidak boleh sama dengan Nomor HP PIC Invoice', - // path: ['invoicePicMobile'], // error akan tampil di bawah field invoicePicMobile - // }); -- cgit v1.2.3