diff --git a/src/tools/WSEquipment.js b/src/tools/WSEquipment.js
index 36bde4eb..1b3237a0 100644
--- a/src/tools/WSEquipment.js
+++ b/src/tools/WSEquipment.js
@@ -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);
}
diff --git a/src/tools/WSGrids.js b/src/tools/WSGrids.js
index be85e28c..d4f80dea 100644
--- a/src/tools/WSGrids.js
+++ b/src/tools/WSGrids.js
@@ -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
@@ -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 }]
));
diff --git a/src/ui/pages/equipment/replaceeqp/ReplaceEqp.jsx b/src/ui/pages/equipment/replaceeqp/ReplaceEqp.jsx
index f8ad69d9..c1c15bfa 100644
--- a/src/ui/pages/equipment/replaceeqp/ReplaceEqp.jsx
+++ b/src/ui/pages/equipment/replaceeqp/ReplaceEqp.jsx
@@ -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();
@@ -103,6 +106,8 @@ const ReplaceEqp = (props) => {
};
const onChangeOldEquipment = (value) => {
+ setEqpSuggestions([]);
+ setSelectedSuggestion(null);
if (value) {
loadEquipmentData(value, 'oldEquipment');
} else {
@@ -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
@@ -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
@@ -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}
diff --git a/src/ui/pages/equipment/replaceeqp/ReplaceEqpGeneral.jsx b/src/ui/pages/equipment/replaceeqp/ReplaceEqpGeneral.jsx
index 982be650..59f7c939 100644
--- a/src/ui/pages/equipment/replaceeqp/ReplaceEqpGeneral.jsx
+++ b/src/ui/pages/equipment/replaceeqp/ReplaceEqpGeneral.jsx
@@ -34,8 +34,11 @@ const ReplaceEqpGeneral = (props) => {
equipmentLayout,
onChangeNewEquipment,
onChangeOldEquipment,
+ onChangeSelectedSuggestion,
+ selectedSuggestion,
replaceEquipmentHandler,
replaceEquipment,
+ eqpSuggestions,
stateList,
statusList,
showError,
@@ -204,6 +207,14 @@ const ReplaceEqpGeneral = (props) => {
)}
/>
+ {eqpSuggestions && eqpSuggestions.length > 0 ? () : null }
+