diff --git a/.env.example b/.env.example index e780e06..61fa02c 100644 --- a/.env.example +++ b/.env.example @@ -5,7 +5,7 @@ VUE_APP_VIEW_SIZE=10 VUE_APP_PERMISSION_ID= VUE_APP_DEFAULT_LOG_LEVEL="error" VUE_APP_RULE_ENUMS={"QUEUE":{"id":"OIP_QUEUE","code":"facilityId"},"SHIPPING_METHOD":{"id":"OIP_SHIP_METH_TYPE","code":"shipmentMethodTypeId"},"PRIORITY":{"id":"OIP_PRIORITY","code":"priority"},"PROMISE_DATE":{"id":"OIP_PROMISE_DATE","code":"promiseDaysCutoff"},"SALES_CHANNEL":{"id":"OIP_SALES_CHANNEL","code":"salesChannelEnumId"},"ORIGIN_FACILITY_GROUP":{"id":"OIP_ORIGIN_FAC_GRP","code":"originFacilityGroupId"},"SHIP_BY":{"id":"OSP_SHIP_BY","code":"shipBeforeDate"},"SHIP_AFTER":{"id":"OSP_SHIP_AFTER","code":"shipAfterDate"},"ORDER_DATE":{"id":"OSP_ORDER_DATE","code":"orderDate"},"SHIPPING_METHOD_SORT":{"id":"OSP_SHIP_METH","code":"deliveryDays"},"SORT_PRIORITY":{"id":"OSP_PRIORITY","code":"priority"}} -VUE_APP_RULE_FILTER_ENUMS={"FACILITY_GROUP":{"id":"IIP_FACILITY_GROUP","code":"facilityGroupId"},"FACILITY_GROUP_EXCLUDED":{"id":"IIP_FACILITY_GROUP_EXCLUDED","code":"facilityGroupId_excluded"},"PROXIMITY":{"id":"IIP_PROXIMITY","code":"distance"},"BRK_SAFETY_STOCK":{"id":"IIP_BRK_SFTY_STOCK","code":"brokeringSafetyStock"},"MEASUREMENT_SYSTEM":{"id":"IIP_MSMNT_SYSTEM","code":"measurementSystem"},"SPLIT_ITEM_GROUP":{"id":"IIP_SPLIT_ITEM_GROUP","code":"splitOrderItemGroup"}} +VUE_APP_RULE_FILTER_ENUMS={"FACILITY_GROUP":{"id":"IIP_FACILITY_GROUP","code":"facilityGroupId"},"FACILITY_GROUP_EXCLUDED":{"id":"IIP_FACILITY_GROUP_EXCLUDED","code":"facilityGroupId_excluded"},"PROXIMITY":{"id":"IIP_PROXIMITY","code":"distance"},"BRK_SAFETY_STOCK":{"id":"IIP_BRK_SFTY_STOCK","code":"brokeringSafetyStock"},"MEASUREMENT_SYSTEM":{"id":"IIP_MSMNT_SYSTEM","code":"measurementSystem"},"SPLIT_ITEM_GROUP":{"id":"IIP_SPLIT_ITEM_GROUP","code":"splitOrderItemGroup"}, "FACILITY_ORDER_LIMIT": {"id":"IFP_IGNORE_ORD_FAC_LIMIT", "code":"ignoreFacilityOrderLimit"}} VUE_APP_RULE_SORT_ENUMS={"PROXIMITY":{"id":"ISP_PROXIMITY","code":"distance"},"INV_BALANCE":{"id":"ISP_INV_BAL","code":"inventoryForAllocation"},"CUSTOMER_SEQ":{"id":"ISP_CUST_SEQ","code":"facilitySequence"}} VUE_APP_RULE_ACTION_ENUMS={"RM_AUTO_CANCEL_DATE":{"id":"ORA_RM_CANCEL_DATE","code":"RM_AUTO_CANCEL_DATE"},"AUTO_CANCEL_DAYS":{"id":"ORA_AUTO_CANCEL_DAYS","code":"ADD_AUTO_CANCEL_DATE"},"NEXT_RULE":{"id":"ORA_NEXT_RULE","code":"NEXT_RULE"},"MOVE_TO_QUEUE":{"id":"ORA_MV_TO_QUEUE","code":"MOVE_TO_QUEUE"}} VUE_APP_CRON_EXPRESSIONS={"Every 5 minutes":"0 */5 * ? * *","Every 15 minutes":"0 */15 * ? * *","Every 30 minutes":"0 */30 * ? * *","Hourly":"0 0 * ? * *","Every six hours":"0 0 */6 ? * *","Every day at midnight":"0 0 0 * * ?"} diff --git a/src/locales/en.json b/src/locales/en.json index abb0ac3..027a8a7 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -6,11 +6,8 @@ "Activate": "Activate", "Add": "Add", "Add filters": "Add filters", - "Add inventory lookup filters.": "Add inventory lookup filters.", "Add inventory rule": "Add inventory rule", - "Add order filters.": "Add order filters.", "Add sorting": "Add sorting", - "Add sorting rules.": "Add sorting rules.", "All facilities enabled for online fulfillment will be attempted for brokering if no filter is applied.": "All facilities enabled for online fulfillment will be attempted for brokering if no filter is applied.", "All orders in all parkings will be attempted if no filter is applied.": "All orders in all parkings will be attempted if no filter is applied.", "Allow partial allocation": "Allow partial allocation", @@ -177,6 +174,7 @@ "This is the name of the OMS you are connected to right now. Make sure that you are connected to the right instance before proceeding.": "This is the name of the OMS you are connected to right now. Make sure that you are connected to the right instance before proceeding.", "Timezone": "Timezone", "Time zone updated successfully": "Time zone updated successfully", + "Turn of the facility order limit check": "Turn of the facility order limit check", "Unarchive": "Unarchive", "Unavailable items": "Unavailable items", "Updated at": "Updated at", diff --git a/src/views/BrokeringQuery.vue b/src/views/BrokeringQuery.vue index caa8411..51e7e03 100644 --- a/src/views/BrokeringQuery.vue +++ b/src/views/BrokeringQuery.vue @@ -52,7 +52,6 @@

- {{ translate("Add order filters.") }}

{{ translate("All orders in all parkings will be attempted if no filter is applied.") }} {{ translate("Add filters") }} @@ -156,7 +155,6 @@

- {{ translate("Add sorting rules.") }}

{{ translate("Orders will be brokered based on order date if no sorting is specified.") }} {{ translate("Add sorting") }} @@ -232,14 +230,13 @@

{{ translate("Filters") }}

- + -

- {{ translate("Add inventory lookup filters.") }}

+

{{ translate("All facilities enabled for online fulfillment will be attempted for brokering if no filter is applied.") }}

- {{ translate("Learn more") }}{{ translate(" about enabling a facility for online fulfillment.") }} + {{ translate("Learn more") }}{{ translate(" about enabling a facility for online fulfillment.") }} {{ translate("Add filters") }} @@ -285,6 +282,12 @@ {{ getFilterValue(inventoryRuleFilterOptions, conditionFilterEnums, "BRK_SAFETY_STOCK").fieldValue || getFilterValue(inventoryRuleFilterOptions, conditionFilterEnums, "BRK_SAFETY_STOCK").fieldValue == 0 ? getFilterValue(inventoryRuleFilterOptions, conditionFilterEnums, "BRK_SAFETY_STOCK").fieldValue : "-" }} + + + + {{ translate("Turn of the facility order limit check") }} + + @@ -322,7 +325,7 @@ {{ translate("Select if partial allocation should be allowed in this inventory rule") }} - {{ translate("Allow partial allocation") }} + {{ translate("Allow partial allocation") }} @@ -880,17 +883,26 @@ function updatePartialAllocation(checked: any) { if(inventoryRule.routingRuleId === selectedRoutingRule.value.routingRuleId) { // Updating selected routing rule explicitely as we are using rulesForReorder for fetching selected values inventoryRule.assignmentEnumId = selectedRoutingRule.value.assignmentEnumId = checked ? "ORA_MULTI" : "ORA_SINGLE" + + // When enabling partial allocation, updating the value of partial group item allocation by default, + // as when partial allocation is enabled we are saying to partial allocate all items of orders thus need to make + // group items allocation enabled as well in this case. + updatePartialGroupItemsAllocation(checked) } }) hasUnsavedChanges.value = true } +function isInventoryRuleFiltersApplied() { + const ruleFilters = Object.keys(inventoryRuleFilterOptions.value).filter((rule: string) => rule !== conditionFilterEnums["SPLIT_ITEM_GROUP"].code); + return ruleFilters.length +} + function isPromiseDateFilterApplied() { if(!currentRouting.value["rules"]?.length) { return; } - // When user updates partial allocation and then selects promiseDate filter then we will assume that the user wants to change the value for partialAllocation on server and thus we will not revert any change made in the partial allocation action and update its value on server const filter = getFilterValue(orderRoutingFilterOptions.value, ruleEnums, "PROMISE_DATE") return filter?.fieldValue || filter?.fieldValue == 0 } @@ -950,6 +962,9 @@ async function selectPromiseFilterValue(ev: CustomEvent, type = "included") { // Making partial allocation value to `MULTI` when applying promise date filter updatePartialAllocation(true); hasUnsavedChanges.value = true + + // When selecting promiseDate route filter value, we also need to enable partial allocation and make its value change on the server + updatePartialAllocation(true); } getFilterValue(orderRoutingFilterOptions.value, ruleEnums, type === "excluded" ? "PROMISE_DATE_EXCLUDED" : "PROMISE_DATE").operator = "less-equals" }) @@ -1013,7 +1028,11 @@ function updateOrderFilterValue(event: CustomEvent, id: string, multi = false) { } function updateRuleFilterValue(event: CustomEvent, id: string) { - inventoryRuleFilterOptions.value[conditionFilterEnums[id].code].fieldValue = event.detail.value + if(id === "FACILITY_ORDER_LIMIT") { + inventoryRuleFilterOptions.value[conditionFilterEnums[id].code].fieldValue = event.detail.checked ? "Y" : "N" + } else { + inventoryRuleFilterOptions.value[conditionFilterEnums[id].code].fieldValue = event.detail.value + } updateRule() }