Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/redux/actions/putaways.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export const SUBMIT_PUTAWAY_ITEM_BIN_LOCATION = 'SUBMIT_PUTAWAY_ITEM_BIN_LOCATIO
export const SUBMIT_PUTAWAY_ITEM_BIN_LOCATION_SUCCESS = 'SUBMIT_PUTAWAY_ITEM_BIN_LOCATION_SUCCESS';
export const PATCH_PUTAWAY_TASK_REQUEST = 'PATCH_PUTAWAY_TASK_REQUEST';
export const PATCH_PUTAWAY_TASK_REQUEST_SUCCESS = 'PATCH_PUTAWAY_TASK_REQUEST_SUCCESS';
export const PUTAWAY_CANDIDATE_PUT_AWAY = 'PUTAWAY_CANDIDATE_PUT_AWAY';
export const GET_PUTAWAY_DETAILS_BY_CONTAINER_ID_REQUEST = 'GET_PUTAWAY_DETAILS_BY_CONTAINER_ID_REQUEST';
export const GET_PUTAWAY_DETAILS_BY_CONTAINER_ID_REQUEST_SUCCESS =
'GET_PUTAWAY_DETAILS_BY_CONTAINER_ID_REQUEST_SUCCESS';
Expand Down Expand Up @@ -66,6 +67,13 @@ export function patchPutawayTaskAction(
};
}

export function markCandidatePutAway(key: string, remainingQuantity: number) {
return {
type: PUTAWAY_CANDIDATE_PUT_AWAY,
payload: { key, remainingQuantity }
};
}

export function getPutawayDetailsByContainerId(containerId: string, callback?: (data: any) => void) {
return {
type: GET_PUTAWAY_DETAILS_BY_CONTAINER_ID_REQUEST,
Expand Down
25 changes: 23 additions & 2 deletions src/redux/reducers/putawayReducer.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { SortationTask } from '../../types/sortation';
import { putawayCandidateKey } from '../../utils/putawayCandidate';
import {
FETCH_PUTAWAY_FROM_ORDER_REQUEST_SUCCESS,
GET_PUTAWAY_CANDIDATES_REQUEST_SUCCESS,
GET_PUTAWAY_DETAILS_BY_CONTAINER_ID_REQUEST_SUCCESS,
PUTAWAY_CANDIDATE_PUT_AWAY,
SUBMIT_PUTAWAY_ITEM_BIN_LOCATION_SUCCESS
} from '../actions/putaways';

Expand All @@ -11,13 +13,15 @@ export interface State {
putAwayItem: any;
candidates: any;
putawayTasks: SortationTask[];
putAwayOverrides: { [key: string]: number };
}

const initialState: State = {
putAway: null,
putAwayItem: null,
candidates: [],
putawayTasks: []
putawayTasks: [],
putAwayOverrides: {}
};

function reducer(state = initialState, action: any) {
Expand All @@ -28,10 +32,27 @@ function reducer(state = initialState, action: any) {
putAway: action.payload.data
};
}
case PUTAWAY_CANDIDATE_PUT_AWAY: {
const { key, remainingQuantity } = action.payload;
return {
...state,
putAwayOverrides: { ...state.putAwayOverrides, [key]: remainingQuantity }
};
}
case GET_PUTAWAY_CANDIDATES_REQUEST_SUCCESS: {
const candidates = action.payload || [];
// Drop overrides the server has caught up with, so they cannot go stale
const putAwayOverrides = { ...state.putAwayOverrides };
Object.keys(putAwayOverrides).forEach((key) => {
const match = candidates.find((candidate: any) => putawayCandidateKey(candidate) === key);
if (!match || Number(match.quantity) <= putAwayOverrides[key]) {
delete putAwayOverrides[key];
}
});
return {
...state,
candidates: action.payload
candidates,
putAwayOverrides
};
}
case SUBMIT_PUTAWAY_ITEM_BIN_LOCATION_SUCCESS: {
Expand Down
Loading