summaryrefslogtreecommitdiff
path: root/src-migrate/validations
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-08-12 17:30:21 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-08-12 17:30:21 +0700
commitd90fe88740674de2a5dcc4a06a93c71884bb8262 (patch)
tree13a882e823200b8dbc5b4613d765a14eaed4870e /src-migrate/validations
parentf62358c34e8449088093267ccf694b18b4d09cd6 (diff)
<hafid> add tempo validation
Diffstat (limited to 'src-migrate/validations')
-rw-r--r--src-migrate/validations/tempo.ts128
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'],
- });