diff --git a/src/actions/sponsor-cart-actions.js b/src/actions/sponsor-cart-actions.js
index 6f03ad1e7..0aa49f97c 100644
--- a/src/actions/sponsor-cart-actions.js
+++ b/src/actions/sponsor-cart-actions.js
@@ -201,10 +201,11 @@ export const getSponsorFormsForCart =
orderDir = DEFAULT_ORDER_DIR
) =>
async (dispatch, getState) => {
- const { currentSummitState } = getState();
+ const { currentSummitState, currentSponsorState } = getState();
const { currentSummit } = currentSummitState;
+ const { entity: sponsor } = currentSponsorState;
const accessToken = await getAccessTokenSafely();
- const filter = ["has_items==1"];
+ const filter = [];
dispatch(startLoading());
@@ -215,7 +216,7 @@ export const getSponsorFormsForCart =
const params = {
page: currentPage,
- fields: "id,code,name,items",
+ fields: "id,code,name,items_count",
per_page: DEFAULT_PER_PAGE,
access_token: accessToken
};
@@ -233,7 +234,7 @@ export const getSponsorFormsForCart =
return getRequest(
createAction(REQUEST_CART_AVAILABLE_FORMS),
createAction(RECEIVE_CART_AVAILABLE_FORMS),
- `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms`,
+ `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsor.id}/available-forms`,
authErrorHandler,
{ term, order, orderDir, currentPage }
)(params)(dispatch).then(() => {
diff --git a/src/actions/sponsor-forms-actions.js b/src/actions/sponsor-forms-actions.js
index 4fa43055c..ca26562fd 100644
--- a/src/actions/sponsor-forms-actions.js
+++ b/src/actions/sponsor-forms-actions.js
@@ -766,7 +766,7 @@ export const getSponsorCustomizedForm =
const params = {
fields:
- "id,code,name,is_archived,opens_at,instructions,expires_at,items_count,allowed_add_ons,meta_fields",
+ "id,code,name,is_archived,opens_at,instructions,expires_at,items_count,allowed_add_ons,meta_fields,apply_to_all_add_ons",
expand: "allowed_add_ons,meta_fields,meta_fields.values",
access_token: accessToken
};
diff --git a/src/i18n/en.json b/src/i18n/en.json
index bf2730055..62bbc3f23 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -2449,7 +2449,8 @@
"add_form_using_template": "Add Form Using Template",
"add_selected_form_template": "Add Selected Form Template",
"customized_form": {
- "title": "Create New Form",
+ "new_form_title": "Create New Form",
+ "edit_form_title": "Edit Form",
"code": "Code",
"name": "Name",
"addons": "Add-ons",
diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/edit-form/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/edit-form/index.js
index 7834c28b4..3a6aa2c62 100644
--- a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/edit-form/index.js
+++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/edit-form/index.js
@@ -157,10 +157,8 @@ const buildInitialValues = (form, timeZone) => {
const buildValidationSchema = (items) => {
const schema = items.reduce((acc, item) => {
- item.meta_fields.map((f) => {
- acc[`i-${item.form_item_id}-c-${f.class_field}-f-${f.type_id}`] =
- getYupValidation(f);
- });
+ const quantityKey = `i-${item.form_item_id}-c-global-f-quantity`;
+
// notes
acc[`i-${item.form_item_id}-c-global-f-notes`] = yup.string(
T.translate("validation.string")
@@ -181,12 +179,22 @@ const buildValidationSchema = (items) => {
globalQtySchema = globalQtySchema.required(
T.translate("validation.required")
);
- acc[`i-${item.form_item_id}-c-global-f-quantity`] = globalQtySchema;
+ acc[quantityKey] = globalQtySchema;
// custom rate
acc[`i-${item.form_item_id}-c-global-f-custom_rate`] = yup.number(
T.translate("validation.number")
);
+ item.meta_fields.map((f) => {
+ acc[`i-${item.form_item_id}-c-${f.class_field}-f-${f.type_id}`] = yup
+ .mixed()
+ .when(quantityKey, {
+ is: (val) => val > 0,
+ then: () => getYupValidation(f),
+ otherwise: () => yup.mixed().notRequired()
+ });
+ });
+
return acc;
}, {});
diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/__tests__/select-form-dialog.test.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/__tests__/select-form-dialog.test.js
index d5118ceb7..298658f7f 100644
--- a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/__tests__/select-form-dialog.test.js
+++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/__tests__/select-form-dialog.test.js
@@ -122,19 +122,19 @@ const mockForms = [
id: 1,
code: "FORM001",
name: "Installation Form",
- item_count: 5
+ items_count: 5
},
{
id: 2,
code: "FORM002",
name: "Dismantle Form",
- item_count: 3
+ items_count: 3
},
{
id: 3,
code: "FORM003",
name: "Setup Form",
- item_count: 8
+ items_count: 8
}
];
diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/index.js
index bb9bb5d04..8b4631380 100644
--- a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/index.js
+++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/index.js
@@ -103,7 +103,7 @@ const SelectFormDialog = ({
sortable: true
},
{
- columnKey: "item_count",
+ columnKey: "items_count",
header: T.translate("general.items"),
sortable: false
}
diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/customized-form-popup.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/customized-form-popup.js
index 479e3b46a..49741509a 100644
--- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/customized-form-popup.js
+++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/customized-form-popup.js
@@ -95,7 +95,11 @@ const CustomizedFormPopup = ({
component="div"
>
- {T.translate("edit_sponsor.forms_tab.customized_form.title")}
+ {T.translate(
+ `edit_sponsor.forms_tab.customized_form.${
+ formId ? "edit_form_title" : "new_form_title"
+ }`
+ )}
{
? epochToMomentTimeZone(expires_at, summitTZ)
: null;
+ normalized.allowed_add_ons = data.apply_to_all_add_ons
+ ? ["all"]
+ : data.allowed_add_ons;
+
return normalized;
};
diff --git a/src/reducers/sponsors/sponsor-page-cart-list-reducer.js b/src/reducers/sponsors/sponsor-page-cart-list-reducer.js
index 80a19d34e..bf60ffd23 100644
--- a/src/reducers/sponsors/sponsor-page-cart-list-reducer.js
+++ b/src/reducers/sponsors/sponsor-page-cart-list-reducer.js
@@ -62,11 +62,6 @@ const DEFAULT_STATE = {
cartOwner: null
};
-const mapForm = (formData) => ({
- ...formData,
- item_count: `${formData.items.length} items`
-});
-
const sponsorPageCartListReducer = (state = DEFAULT_STATE, action) => {
const { type, payload } = action;
@@ -164,9 +159,7 @@ const sponsorPageCartListReducer = (state = DEFAULT_STATE, action) => {
} = payload.response;
const forms =
- currentPage === 1
- ? data.map(mapForm)
- : [...state.availableForms.forms, ...data.map(mapForm)];
+ currentPage === 1 ? data : [...state.availableForms.forms, ...data];
const availableForms = {
...state.availableForms,