diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2025-08-12 17:30:21 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2025-08-12 17:30:21 +0700 |
| commit | d90fe88740674de2a5dcc4a06a93c71884bb8262 (patch) | |
| tree | 13a882e823200b8dbc5b4613d765a14eaed4870e /src-migrate/validations | |
| parent | f62358c34e8449088093267ccf694b18b4d09cd6 (diff) | |
<hafid> add tempo validation
Diffstat (limited to 'src-migrate/validations')
| -rw-r--r-- | src-migrate/validations/tempo.ts | 128 |
1 files changed, 69 insertions, 59 deletions
diff --git a/src-migrate/validations/tempo.ts b/src-migrate/validations/tempo.ts index b2239d8c..46ac1ef1 100644 --- a/src-migrate/validations/tempo.ts +++ b/src-migrate/validations/tempo.ts @@ -13,8 +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 atau 021234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890', }), bankName: z.string().min(1, { message: 'Nama bank harus diisi' }), accountName: z.string().min(1, { message: 'Nama rekening harus diisi' }), @@ -44,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 atau 021234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890', }), purchasingTittle: z.string().min(1, { message: 'Tittle harus dipilih' }), financeTittle: z.string().min(1, { message: 'Tittle harus dipilih' }), @@ -52,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 atau 021234567890', + message: 'Format nomor telepon tidak valid, contoh: 081234567890', }), direkturEmail: z .string() @@ -70,8 +69,8 @@ export const TempoSchemaKontakPerson = z }) .refine( (data) => - !data.financeEmail || - data.financeEmail !== data.purchasingEmail, + !data.financeEmail || // Jika financeEmail kosong, tidak perlu validasi + data.financeEmail !== data.purchasingEmail, // Validasi jika financeEmail ada { message: 'Email Finance tidak boleh sama dengan Email Purchasing', path: ['financeEmail'], @@ -87,37 +86,70 @@ export const TempoSchemaKontakPerson = z 'Email Direktur tidak boleh sama dengan Email Finance atau Purchasing', path: ['direkturEmail'], } - ) - .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<string, { key: string; label: string }>(); - - 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 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', + }), + 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', + }), + 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', + }), + durasiTempo: z.string().min(1, { message: 'Durasi tempo harus diisi' }), + creditLimit: z.string().min(1, { message: 'Limit Kredit harus diisi' }), +}); export const TempoSchemaDokumen = z.object({ dokumenNib: z.object({ name: z.string().min(1, { message: 'Nama file harus diisi' }), @@ -185,25 +217,3 @@ 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', 'PICBarangMobile'], - }); |
