fix(dashboard): tax override reference (#9796)

* fix: tax override reference

* fix: create rest

* fix: comment out unsupported references for now

* fix: edit form
This commit is contained in:
Frane Polić
2024-11-04 09:05:46 +01:00
committed by GitHub
parent 1889180319
commit dd93d8de6e
3 changed files with 178 additions and 175 deletions

View File

@@ -1,7 +1,7 @@
export enum TaxRateRuleReferenceType {
PRODUCT = "products",
PRODUCT_COLLECTION = "product_collections",
PRODUCT_TAG = "product_tags",
PRODUCT_TYPE = "product_types",
CUSTOMER_GROUP = "customer_groups",
PRODUCT = "product",
PRODUCT_TYPE = "product_type",
// PRODUCT_COLLECTION = "product_collection",
// PRODUCT_TAG = "product_tag",
// CUSTOMER_GROUP = "customer_group",
}

View File

@@ -48,17 +48,17 @@ const TaxRegionCreateTaxOverrideSchema = z.object({
.optional(),
is_combinable: z.boolean().optional(),
enabled_rules: z.object({
products: z.boolean(),
product_collections: z.boolean(),
product_tags: z.boolean(),
product_types: z.boolean(),
customer_groups: z.boolean(),
product: z.boolean(),
product_type: z.boolean(),
// product_collection: z.boolean(),
// product_tag: z.boolean(),
// customer_group: z.boolean(),
}),
products: z.array(TaxRateRuleReferenceSchema).optional(),
product_collections: z.array(TaxRateRuleReferenceSchema).optional(),
product_tags: z.array(TaxRateRuleReferenceSchema).optional(),
product_types: z.array(TaxRateRuleReferenceSchema).optional(),
customer_groups: z.array(TaxRateRuleReferenceSchema).optional(),
product: z.array(TaxRateRuleReferenceSchema).optional(),
product_type: z.array(TaxRateRuleReferenceSchema).optional(),
// product_collection: z.array(TaxRateRuleReferenceSchema).optional(),
// product_tag: z.array(TaxRateRuleReferenceSchema).optional(),
// customer_group: z.array(TaxRateRuleReferenceSchema).optional(),
})
type TaxRegionCreateTaxOverrideFormProps = {
@@ -85,17 +85,17 @@ export const TaxRegionCreateTaxOverrideForm = ({
value: "",
},
enabled_rules: {
products: true,
product_collections: false,
product_tags: false,
product_types: false,
customer_groups: false,
product: true,
product_type: false,
// product_collection: false,
// product_tag: false,
// customer_group: false,
},
products: [],
product_collections: [],
product_tags: [],
product_types: [],
customer_groups: [],
product: [],
product_type: [],
// product_collection: [],
// product_tag: [],
// customer_group: [],
},
resolver: zodResolver(TaxRegionCreateTaxOverrideSchema),
})
@@ -104,40 +104,40 @@ export const TaxRegionCreateTaxOverrideForm = ({
const handleSubmit = form.handleSubmit(async (values) => {
const {
products,
customer_groups,
product_collections,
product_tags,
product_types,
product,
product_type,
// customer_group,
// product_collection,
// product_tag,
} = values
const productRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.PRODUCT,
references: products || [],
})
const customerGroupRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.CUSTOMER_GROUP,
references: customer_groups || [],
})
const productCollectionRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
references: product_collections || [],
})
const productTagRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.PRODUCT_TAG,
references: product_tags || [],
references: product || [],
})
const productTypeRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.PRODUCT_TYPE,
references: product_types || [],
references: product_type || [],
})
// const customerGroupRules = createTaxRulePayload({
// reference_type: TaxRateRuleReferenceType.CUSTOMER_GROUP,
// references: customer_group || [],
// })
// const productCollectionRules = createTaxRulePayload({
// reference_type: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
// references: product_collection || [],
// })
// const productTagRules = createTaxRulePayload({
// reference_type: TaxRateRuleReferenceType.PRODUCT_TAG,
// references: product_tag || [],
// })
const rules = [
productRules,
customerGroupRules,
productCollectionRules,
productTagRules,
productTypeRules,
// customerGroupRules,
// productCollectionRules,
// productTagRules,
]
.filter((rule) => Boolean(rule))
.flatMap((r) => r) as HttpTypes.AdminCreateTaxRate["rules"]
@@ -165,41 +165,42 @@ export const TaxRegionCreateTaxOverrideForm = ({
const products = useFieldArray({
control: form.control,
name: "products",
})
const productCollections = useFieldArray({
control: form.control,
name: "product_collections",
})
const productTags = useFieldArray({
control: form.control,
name: "product_tags",
name: TaxRateRuleReferenceType.PRODUCT,
})
const productTypes = useFieldArray({
control: form.control,
name: "product_types",
name: TaxRateRuleReferenceType.PRODUCT_TYPE,
})
const customerGroups = useFieldArray({
control: form.control,
name: "customer_groups",
})
// const productCollections = useFieldArray({
// control: form.control,
// name: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
// })
//
// const productTags = useFieldArray({
// control: form.control,
// name: TaxRateRuleReferenceType.PRODUCT_TAG,
// })
//
//
// const customerGroups = useFieldArray({
// control: form.control,
// name: TaxRateRuleReferenceType.CUSTOMER_GROUP,
// })
const getControls = (type: TaxRateRuleReferenceType) => {
switch (type) {
case TaxRateRuleReferenceType.PRODUCT:
return products
case TaxRateRuleReferenceType.PRODUCT_COLLECTION:
return productCollections
case TaxRateRuleReferenceType.PRODUCT_TAG:
return productTags
case TaxRateRuleReferenceType.PRODUCT_TYPE:
return productTypes
case TaxRateRuleReferenceType.CUSTOMER_GROUP:
return customerGroups
// case TaxRateRuleReferenceType.PRODUCT_COLLECTION:
// return productCollections
// case TaxRateRuleReferenceType.PRODUCT_TAG:
// return productTags
// case TaxRateRuleReferenceType.CUSTOMER_GROUP:
// return customerGroups
}
}
@@ -208,40 +209,40 @@ export const TaxRegionCreateTaxOverrideForm = ({
value: TaxRateRuleReferenceType.PRODUCT,
label: t("taxRegions.fields.targets.options.product"),
},
{
value: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
label: t("taxRegions.fields.targets.options.productCollection"),
},
{
value: TaxRateRuleReferenceType.PRODUCT_TAG,
label: t("taxRegions.fields.targets.options.productTag"),
},
{
value: TaxRateRuleReferenceType.PRODUCT_TYPE,
label: t("taxRegions.fields.targets.options.productType"),
},
{
value: TaxRateRuleReferenceType.CUSTOMER_GROUP,
label: t("taxRegions.fields.targets.options.customerGroup"),
},
// {
// value: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
// label: t("taxRegions.fields.targets.options.productCollection"),
// },
// {
// value: TaxRateRuleReferenceType.PRODUCT_TAG,
// label: t("taxRegions.fields.targets.options.productTag"),
// },
// {
// value: TaxRateRuleReferenceType.CUSTOMER_GROUP,
// label: t("taxRegions.fields.targets.options.customerGroup"),
// },
]
const searchPlaceholders = {
[TaxRateRuleReferenceType.PRODUCT]: t(
"taxRegions.fields.targets.placeholders.product"
),
[TaxRateRuleReferenceType.PRODUCT_COLLECTION]: t(
"taxRegions.fields.targets.placeholders.productCollection"
),
[TaxRateRuleReferenceType.PRODUCT_TAG]: t(
"taxRegions.fields.targets.placeholders.productTag"
),
[TaxRateRuleReferenceType.PRODUCT_TYPE]: t(
"taxRegions.fields.targets.placeholders.productType"
),
[TaxRateRuleReferenceType.CUSTOMER_GROUP]: t(
"taxRegions.fields.targets.placeholders.customerGroup"
),
// [TaxRateRuleReferenceType.PRODUCT_COLLECTION]: t(
// "taxRegions.fields.targets.placeholders.productCollection"
// ),
// [TaxRateRuleReferenceType.PRODUCT_TAG]: t(
// "taxRegions.fields.targets.placeholders.productTag"
// ),
// [TaxRateRuleReferenceType.CUSTOMER_GROUP]: t(
// "taxRegions.fields.targets.placeholders.customerGroup"
// ),
}
const getFieldHandler = (type: TaxRateRuleReferenceType) => {

View File

@@ -56,17 +56,17 @@ const TaxRegionTaxRateEditSchema = z.object({
}),
is_combinable: z.boolean().optional(),
enabled_rules: z.object({
products: z.boolean(),
product_collections: z.boolean(),
product_tags: z.boolean(),
product_types: z.boolean(),
customer_groups: z.boolean(),
product: z.boolean(),
product_type: z.boolean(),
// product_collection: z.boolean(),
// product_tag: z.boolean(),
// customer_group: z.boolean(),
}),
products: z.array(TaxRateRuleReferenceSchema).optional(),
product_collections: z.array(TaxRateRuleReferenceSchema).optional(),
product_tags: z.array(TaxRateRuleReferenceSchema).optional(),
product_types: z.array(TaxRateRuleReferenceSchema).optional(),
customer_groups: z.array(TaxRateRuleReferenceSchema).optional(),
product: z.array(TaxRateRuleReferenceSchema).optional(),
product_type: z.array(TaxRateRuleReferenceSchema).optional(),
// product_collection: z.array(TaxRateRuleReferenceSchema).optional(),
// product_tag: z.array(TaxRateRuleReferenceSchema).optional(),
// customer_group: z.array(TaxRateRuleReferenceSchema).optional(),
})
export const TaxRegionTaxOverrideEditForm = ({
@@ -87,17 +87,18 @@ export const TaxRegionTaxOverrideEditForm = ({
},
is_combinable: taxRate.is_combinable,
enabled_rules: {
products: initialValues.products.length > 0,
product_collections: initialValues.product_collections.length > 0,
product_tags: initialValues.product_tags.length > 0,
product_types: initialValues.product_types.length > 0,
customer_groups: initialValues.customer_groups.length > 0,
product: initialValues.product.length > 0,
product_type: initialValues.product_type.length > 0,
// customer_groups: initialValues.customer_group.length > 0,
// product_collections:
// initialValues.product_collections.length > 0,
// product_tags: initialValues.product_tag.length > 0,
},
products: initialValues.products,
product_collections: initialValues.product_collections,
product_tags: initialValues.product_tags,
product_types: initialValues.product_types,
customer_groups: initialValues.customer_groups,
product: initialValues.product,
product_type: initialValues.product_type,
// product_collections: initialValues.product_collection,
// product_tags: initialValues.product_tag,
// customer_groups: initialValues.customer_group,
},
resolver: zodResolver(TaxRegionTaxRateEditSchema),
})
@@ -106,40 +107,40 @@ export const TaxRegionTaxOverrideEditForm = ({
const handleSubmit = form.handleSubmit(async (values) => {
const {
products,
customer_groups,
product_collections,
product_tags,
product_types,
product,
product_type,
// customer_groups,
// product_collections,
// product_tags,
} = values
const productRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.PRODUCT,
references: products || [],
})
const customerGroupRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.CUSTOMER_GROUP,
references: customer_groups || [],
})
const productCollectionRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
references: product_collections || [],
})
const productTagRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.PRODUCT_TAG,
references: product_tags || [],
references: product || [],
})
const productTypeRules = createTaxRulePayload({
reference_type: TaxRateRuleReferenceType.PRODUCT_TYPE,
references: product_types || [],
references: product_type || [],
})
// const customerGroupRules = createTaxRulePayload({
// reference_type: TaxRateRuleReferenceType.CUSTOMER_GROUP,
// references: customer_groups || [],
// })
// const productCollectionRules = createTaxRulePayload({
// reference_type: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
// references: product_collections || [],
// })
// const productTagRules = createTaxRulePayload({
// reference_type: TaxRateRuleReferenceType.PRODUCT_TAG,
// references: product_tags || [],
// })
const rules = [
productRules,
customerGroupRules,
productCollectionRules,
productTagRules,
productTypeRules,
// customerGroupRules,
// productCollectionRules,
// productTagRules,
]
.filter((rule) => Boolean(rule))
.flatMap((r) => r) as HttpTypes.AdminCreateTaxRate["rules"]
@@ -166,41 +167,42 @@ export const TaxRegionTaxOverrideEditForm = ({
const products = useFieldArray({
control: form.control,
name: "products",
})
const productCollections = useFieldArray({
control: form.control,
name: "product_collections",
})
const productTags = useFieldArray({
control: form.control,
name: "product_tags",
name: "product",
})
const productTypes = useFieldArray({
control: form.control,
name: "product_types",
name: "product_type",
})
const customerGroups = useFieldArray({
control: form.control,
name: "customer_groups",
})
// const productCollections = useFieldArray({
// control: form.control,
// name: "product_collection",
// })
//
// const productTags = useFieldArray({
// control: form.control,
// name: "product_tag",
// })
//
//
// const customerGroups = useFieldArray({
// control: form.control,
// name: "customer_group",
// })
const getControls = (type: TaxRateRuleReferenceType) => {
switch (type) {
case TaxRateRuleReferenceType.PRODUCT:
return products
case TaxRateRuleReferenceType.PRODUCT_COLLECTION:
return productCollections
case TaxRateRuleReferenceType.PRODUCT_TAG:
return productTags
case TaxRateRuleReferenceType.PRODUCT_TYPE:
return productTypes
case TaxRateRuleReferenceType.CUSTOMER_GROUP:
return customerGroups
// case TaxRateRuleReferenceType.PRODUCT_COLLECTION:
// return productCollections
// case TaxRateRuleReferenceType.PRODUCT_TAG:
// return productTags
// case TaxRateRuleReferenceType.CUSTOMER_GROUP:
// return customerGroups
}
}
@@ -209,40 +211,40 @@ export const TaxRegionTaxOverrideEditForm = ({
value: TaxRateRuleReferenceType.PRODUCT,
label: t("taxRegions.fields.targets.options.product"),
},
{
value: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
label: t("taxRegions.fields.targets.options.productCollection"),
},
{
value: TaxRateRuleReferenceType.PRODUCT_TAG,
label: t("taxRegions.fields.targets.options.productTag"),
},
{
value: TaxRateRuleReferenceType.PRODUCT_TYPE,
label: t("taxRegions.fields.targets.options.productType"),
},
{
value: TaxRateRuleReferenceType.CUSTOMER_GROUP,
label: t("taxRegions.fields.targets.options.customerGroup"),
},
// {
// value: TaxRateRuleReferenceType.PRODUCT_COLLECTION,
// label: t("taxRegions.fields.targets.options.productCollection"),
// },
// {
// value: TaxRateRuleReferenceType.PRODUCT_TAG,
// label: t("taxRegions.fields.targets.options.productTag"),
// },
// {
// value: TaxRateRuleReferenceType.CUSTOMER_GROUP,
// label: t("taxRegions.fields.targets.options.customerGroup"),
// },
]
const searchPlaceholders = {
[TaxRateRuleReferenceType.PRODUCT]: t(
"taxRegions.fields.targets.placeholders.product"
),
[TaxRateRuleReferenceType.PRODUCT_COLLECTION]: t(
"taxRegions.fields.targets.placeholders.productCollection"
),
[TaxRateRuleReferenceType.PRODUCT_TAG]: t(
"taxRegions.fields.targets.placeholders.productTag"
),
[TaxRateRuleReferenceType.PRODUCT_TYPE]: t(
"taxRegions.fields.targets.placeholders.productType"
),
[TaxRateRuleReferenceType.CUSTOMER_GROUP]: t(
"taxRegions.fields.targets.placeholders.customerGroup"
),
// [TaxRateRuleReferenceType.PRODUCT_COLLECTION]: t(
// "taxRegions.fields.targets.placeholders.productCollection"
// ),
// [TaxRateRuleReferenceType.PRODUCT_TAG]: t(
// "taxRegions.fields.targets.placeholders.productTag"
// ),
// [TaxRateRuleReferenceType.CUSTOMER_GROUP]: t(
// "taxRegions.fields.targets.placeholders.customerGroup"
// ),
}
const getFieldHandler = (type: TaxRateRuleReferenceType) => {