import { z } from 'zod'; export const TempoSchema = z.object({ name: z.string().min(1, { message: 'Nama harus diisi' }), street: z.string().min(1, { message: 'Alamat harus diisi' }), industryId: z.string().min(1, { message: 'Jenis usaha harus dipilih' }), zip: z.string().min(1, { message: 'Kode pos harus diisi' }), state: z.string().min(1, { message: 'Provinsi harus dipilih' }), city: z.string().min(1, { message: 'Kota harus dipilih' }), district: z.string().min(1, { message: 'Kecamatan harus dipilih' }), subDistrict: z.string().optional(), mobile: z .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { 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' }), accountNumber: z .string() .min(1, { message: 'Nomor rekening harus diisi' }) .refine((val) => /^\d+$/.test(val), { message: 'Nomor rekening hanya boleh mengandung angka', }), estimasi: z.string().optional(), website: z.string().optional(), tempoDuration: z.string().min(1, { message: 'Durasi tempo harus dipilih' }), bersedia: z.string().min(1, { message: 'Harus dipilih' }), portal: z.string().min(1, { message: 'Harus dipilih' }), categoryProduk: z .string() .min(1, { message: 'Category produk harus dipilih' }), }); export const TempoSchemaKontakPerson = z .object({ direkturName: z.string().min(1, { message: 'Nama harus diisi' }), direkturTittle: z.string().min(1, { message: 'Tittle harus dipilih' }), financeName: z.string().min(1, { message: 'Nama harus diisi' }), direkturMobile: z.string().optional(), financeMobile: z .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { 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' }), purchasingMobile: z .string() .min(1, { message: 'Nomor telepon harus diisi' }) .refine((val) => /^\d{10,12}$/.test(val), { message: 'Format nomor telepon tidak valid, contoh: 081234567890', }), direkturEmail: z .string() .min(1, { message: 'Email harus diisi' }) .email({ message: 'Email harus menggunakan format example@mail.com' }), purchasingEmail: z .string() .min(1, { message: 'Email harus diisi' }) .email({ message: 'Email harus menggunakan format example@mail.com' }), financeEmail: z .string() .min(1, { message: 'Email harus diisi' }) .email({ message: 'Email harus menggunakan format example@mail.com' }), purchasingName: z.string().min(1, { message: 'Nama harus diisi' }), }) .refine( (data) => !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'], } ) .refine( (data) => !data.direkturEmail || (data.direkturEmail !== data.financeEmail && data.direkturEmail !== data.purchasingEmail), { message: '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', }), 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' }), format: z.string().optional(), base64: z.string().optional(), }), dokumenNpwp: z.object({ name: z.string().min(1, { message: 'Nama file harus diisi' }), format: z.string().optional(), base64: z.string().optional(), }), dokumenSppkp: z.object({ name: z.string().min(1, { message: 'Nama file harus diisi' }), format: z.string().optional(), base64: z.string().optional(), }), dokumenSiup: z.object({ name: z.string().optional(), format: z.string().optional(), base64: z.string().optional(), }), dokumenTdp: z.object({ name: z.string().optional(), format: z.string().optional(), base64: z.string().optional(), }), dokumenSkdp: z.object({ name: z.string().optional(), format: z.string().optional(), base64: z.string().optional(), }), dokumenSkt: z.object({ name: z.string().optional(), format: z.string().optional(), base64: z.string().optional(), }), dokumenAktaPerubahan: z.object({ name: z.string().optional(), format: z.string().optional(), base64: z.string().optional(), }), dokumenKtpDirut: z.object({ name: z.string().optional(), format: z.string().optional(), base64: z.string().optional(), }), dokumenAktaPendirian: z.object({ name: z.string().optional(), format: z.string().optional(), base64: z.string().optional(), }), dokumenLaporanKeuangan: z.object({ name: z.string().optional(), format: z.string().optional(), base64: z.string().optional(), }), dokumenFotoKantor: z.object({ name: z.string().min(1, { message: 'Nama file harus diisi' }), format: z.string().optional(), base64: z.string().optional(), }), dokumenTempatBekerja: z.object({ name: z.string().min(1, { message: 'Nama file harus diisi' }), format: z.string().optional(), base64: z.string().optional(), }), });