summaryrefslogtreecommitdiff
path: root/src-migrate
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-03-12 14:30:25 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-03-12 14:30:25 +0700
commit6a682891b755a6f8d91edafe54a62047afcb5492 (patch)
treef8fee880ed7129093f21dc069074767eafce261f /src-migrate
parentf4adb008ae55e4b340c58c32d45af6d0eaf6eb57 (diff)
parentd36a21cb0a6e95323fa9dd868a79bf1a318968e3 (diff)
Merge branch 'new-release' into CR/repeat-order
Diffstat (limited to 'src-migrate')
-rw-r--r--src-migrate/modules/product-detail/components/PriceAction.tsx2
-rw-r--r--src-migrate/modules/register/stores/usePengajuanTempoStore.ts14
-rw-r--r--src-migrate/types/tempo.ts3
-rw-r--r--src-migrate/validations/tempo.ts110
4 files changed, 89 insertions, 40 deletions
diff --git a/src-migrate/modules/product-detail/components/PriceAction.tsx b/src-migrate/modules/product-detail/components/PriceAction.tsx
index 9348bbfb..850c2d9d 100644
--- a/src-migrate/modules/product-detail/components/PriceAction.tsx
+++ b/src-migrate/modules/product-detail/components/PriceAction.tsx
@@ -163,7 +163,7 @@ const PriceAction = ({ product }: Props) => {
</span> */}
</div>
<div>
- {selectedVariant?.is_in_bu && (
+ {qtyPickUp > 0 && (
<Link href='/panduan-pick-up-service' className='group'>
<Image
src='/images/PICKUP-NOW.png'
diff --git a/src-migrate/modules/register/stores/usePengajuanTempoStore.ts b/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
index 1e086c06..79ab3612 100644
--- a/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
+++ b/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
@@ -171,7 +171,7 @@ type StatePengiriman = {
};
type ActionPengiriman = {
updateFormPengiriman: (name: string, value: string) => void;
-
+ updateDokumenProsedur: (name: string, format: string, base64: string) => void;
validatePengiriman: () => void;
};
export const usePengajuanTempoStorePengiriman = create<
@@ -186,6 +186,8 @@ export const usePengajuanTempoStorePengiriman = create<
districtPengiriman: '',
subDistrictPengiriman: '',
zipPengiriman: '',
+ PICBarangMobile: '',
+ invoicePicMobile: '',
invoicePicTittle: '',
invoicePic: '',
isSameAddrees: '',
@@ -202,12 +204,21 @@ export const usePengajuanTempoStorePengiriman = create<
dokumenPengirimanInput: '',
dokumenKirimInput: '',
dokumenPengirimanInvoice: '',
+ dokumenProsedur: { name: '', format: '', base64: '' },
},
updateFormPengiriman: (name, value) =>
set((state) => ({
formPengiriman: { ...state.formPengiriman, [name]: value },
})),
+ updateDokumenProsedur: (name, format, base64) =>
+ set((state) => ({
+ formPengiriman: {
+ ...state.formPengiriman,
+ dokumenProsedur: { name, format, base64 },
+ },
+ })),
+
errorsPengiriman: {},
validatePengiriman: () => {
try {
@@ -260,6 +271,7 @@ export const usePengajuanTempoStoreDokumen = create<
dokumenLaporanKeuangan: { name: '', format: '', base64: '' },
dokumenFotoKantor: { name: '', format: '', base64: '' },
dokumenTempatBekerja: { name: '', format: '', base64: '' },
+ dokumenProsedur: { name: '', format: '', base64: '' },
},
// Memperbarui dokumen dengan name, format, dan base64
diff --git a/src-migrate/types/tempo.ts b/src-migrate/types/tempo.ts
index d043e2d6..27b0c67e 100644
--- a/src-migrate/types/tempo.ts
+++ b/src-migrate/types/tempo.ts
@@ -42,6 +42,8 @@ export type tempoPropsPengiriman = {
cityPengiriman: string;
streetInvoice: string;
zip: string;
+ PICBarangMobile: string;
+ invoicePicMobile: string;
invoicePic: string;
isSameAddrees: string;
stateInvoice: string;
@@ -52,6 +54,7 @@ export type tempoPropsPengiriman = {
dokumenPengirimanInput: string;
dokumenPengirimanInvoice: string;
dokumenPengirimanInvoiceInput: string;
+ dokumenProsedur: string;
};
export type tempoPropsSupplier = {
supplier: string;
diff --git a/src-migrate/validations/tempo.ts b/src-migrate/validations/tempo.ts
index f019275c..e39f0f8b 100644
--- a/src-migrate/validations/tempo.ts
+++ b/src-migrate/validations/tempo.ts
@@ -8,7 +8,7 @@ export const TempoSchema = z.object({
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().min(1, { message: 'Kelurahan harus dipilih' }),
+ subDistrict: z.string().optional(),
mobile: z
.string()
.min(1, { message: 'Nomor telepon harus diisi' })
@@ -33,50 +33,81 @@ export const TempoSchema = z.object({
.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
+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',
}),
- purchasingTittle: z.string().min(1, { message: 'Tittle harus dipilih' }),
- financeTittle: z.string().min(1, { message: 'Tittle harus dipilih' }),
- purchasingMobile: z
+ 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',
}),
- 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' }),
-});
-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()
- .min(1, { message: 'Kelurahan harus dipilih' }),
- zipPengiriman: z.string().min(1, { message: 'Kode pos harus diisi' }),
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' }),
@@ -87,9 +118,7 @@ export const TempoSchemaPengiriman = z.object({
districtInvoice: z
.string()
.min(1, { message: 'Kecamatan invoice harus dipilih' }),
- subDistrictInvoice: z
- .string()
- .min(1, { message: 'Kelurahan invoice harus dipilih' }),
+ subDistrictInvoice: z.string().optional(),
zipInvoice: z.string().min(1, { message: 'Kode pos harus diisi' }),
isSameAddrees: z.string(),
isSameAddreesStreet: z.string(),
@@ -99,6 +128,11 @@ export const TempoSchemaPengiriman = z.object({
dokumenPengirimanInput: z.string().optional(),
dokumenKirimInput: z.string().optional(),
dokumenPengirimanInvoiceInput: z.string().optional(),
+ dokumenProsedur: z.object({
+ name: z.string().min(1, { message: 'Nama file harus diisi' }),
+ format: z.string().optional(),
+ base64: z.string().optional(),
+ }),
});
export const TempoSchemaSupplier = z.object({
supplier: z.string().min(1, { message: 'Nama supplier harus diisi' }),