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
15 changes: 15 additions & 0 deletions src/tools/WSEquipment.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,21 @@ class WSEquipment {
return getGridData(gridRequest).then(response => transformResponse(response, WSWorkorders.myWorkOrderMapper));
}

getSparePart(originalEquipment) {
let gridRequest = new GridRequest("OSOBJA", GridTypes.LIST); //we only display 100 records per default
if(!originalEquipment.partCode) {
return;
}
gridRequest.addFilter("equipmentno", originalEquipment.code, "!=");
gridRequest.addFilter("part", originalEquipment.partCode, "=");
gridRequest.addFilter("statusrcode", 'C', "!=");
gridRequest.addFilter("position", '', "IS EMPTY");
gridRequest.addFilter("parentasset", '', "IS EMPTY");
gridRequest.addFilter("outofservice", '-', "NOT_SELECTED");

return getGridData(gridRequest).then(response => response.body.data);
}

getEquipmentEvents(equipmentCode, equipmentType, config = {}) {
return WS._get(`/equipment/events?c=${equipmentCode}&t=${equipmentType}`, config);
}
Expand Down
6 changes: 3 additions & 3 deletions src/tools/WSGrids.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export function transformResponse(response, keyMap, additionalData = []) {
return {
body: {
data: [
...response.body.data.map(item =>
...response.body.data.map(item =>
Object.fromEntries(Object.entries(keyMap).map(([newKey, oldKey]) => [newKey, typeof oldKey === 'function' ? oldKey(item) : item[oldKey]]))
),
...additionalData
Expand All @@ -24,14 +24,14 @@ export const readStatuses = (entity, newEntity, oldStatus) => {
gridRequest.addFilter("usergroupcode", userData.eamAccount.userGroup, "=", "OR", true, false)
gridRequest.addFilter("usercode", userData.eamAccount.userCode, "=", "AND", false, true)
gridRequest.addFilter("entity", entity, "=")

if (newEntity) {
gridRequest.addFilter("fromstatus", "-", "=")
} else {
gridRequest.addFilter("fromstatus", oldStatus, "=")
}

return getGridData(gridRequest).then(response => transformResponse(response, {code: "tostatus", desc: "tostatusdesc"},
return getGridData(gridRequest).then(response => transformResponse(response, {code: "tostatus", desc: "tostatusdesc"},
newEntity && response.body.data.length > 0 ? [] : [{ code: oldStatus, desc: response.body.data[0].fromstatusdesc }]
));

Expand Down
25 changes: 25 additions & 0 deletions src/ui/pages/equipment/replaceeqp/ReplaceEqp.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ const ReplaceEqp = (props) => {
const [oldEquipment, setOldEquipment] = useState(undefined);
const [replaceEquipment, setReplaceEquipment] = useState(initEqpReplacement);
const [stateList, setStateList] = useState([]);
const [eqpSuggestions, setEqpSuggestions] = useState([]);
const [selectedSuggestion, setSelectedSuggestion] = useState(null);

const [statusList, setStatusList] = useState([]);
const { userData } = useUserDataStore();
const { applicationData } = useApplicationDataStore();
Expand Down Expand Up @@ -103,6 +106,8 @@ const ReplaceEqp = (props) => {
};

const onChangeOldEquipment = (value) => {
setEqpSuggestions([]);
setSelectedSuggestion(null);
if (value) {
loadEquipmentData(value, 'oldEquipment');
} else {
Expand All @@ -119,6 +124,20 @@ const ReplaceEqp = (props) => {
}
};

const onChangeSelectedSuggestion = (value) => {
setSelectedSuggestion(value);
const suggestion = eqpSuggestions.find(x => value.code === x.equipmentno);
updateEqpReplacementProp('newEquipment', value.code);
updateEqpReplacementProp('newEquipmentDesc', suggestion ? suggestion.equipmentdesc : value.desc);
updateEqpReplacementProp('newEquipmentStatus', suggestion ? suggestion.assetstatus : '');
onChangeNewEquipment(value.code);
}

const getDescription = (value) => {
return `${value.equipmentdesc} - ${value.location} - ${value.bin} - ${value.assetstatus_display}`
};


/**
* Load the equipment data when it is selected
* @param code the equipment code
Expand All @@ -130,6 +149,9 @@ const ReplaceEqp = (props) => {
const response = await WSEquipment.getEquipment(code);

if (destination === 'oldEquipment') {
WSEquipment.getSparePart(response.body.data).then((x) => setEqpSuggestions(x.map((eqp)=> {
return {code: eqp.equipmentno, desc: getDescription(eqp)}
})));
setOldEquipment(response.body.data);

// Set status/state for old equipment
Expand Down Expand Up @@ -189,9 +211,12 @@ const ReplaceEqp = (props) => {
updateProperty={updateEqpReplacementProp}
onChangeOldEquipment={onChangeOldEquipment}
onChangeNewEquipment={onChangeNewEquipment}
onChangeSelectedSuggestion={onChangeSelectedSuggestion}
selectedSuggestion={selectedSuggestion}
equipmentLayout={equipmentLayout}
statusList={statusList}
stateList={stateList}
eqpSuggestions={eqpSuggestions}
replaceEquipmentHandler={replaceEquipmentHandler}
showError={showError}
handleError={handleError}
Expand Down
11 changes: 11 additions & 0 deletions src/ui/pages/equipment/replaceeqp/ReplaceEqpGeneral.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,11 @@ const ReplaceEqpGeneral = (props) => {
equipmentLayout,
onChangeNewEquipment,
onChangeOldEquipment,
onChangeSelectedSuggestion,
selectedSuggestion,
replaceEquipmentHandler,
replaceEquipment,
eqpSuggestions,
stateList,
statusList,
showError,
Expand Down Expand Up @@ -204,6 +207,14 @@ const ReplaceEqpGeneral = (props) => {
)}
/>

{eqpSuggestions && eqpSuggestions.length > 0 ? (<EAMSelect
label={"New Equipment suggestion"}
disabled={!eqpSuggestions || eqpSuggestions.length === 0}
options={eqpSuggestions}
value={selectedSuggestion}
onChange={onChangeSelectedSuggestion}
/>) : null }

<EAMAutocomplete
{...processElementInfo(equipmentLayout.fields["equipmentno"])}
required
Expand Down