public Boolean processMessage(GenericMessageHeader gmh)
{
Boolean result = true;
JDBMaterial mat = new JDBMaterial(getHostID(), getSessionID());
JDBMaterialType mattype = new JDBMaterialType(getHostID(), getSessionID());
JDBMaterialLocation matlocn = new JDBMaterialLocation(getHostID(), getSessionID());
JDBLocation locn = new JDBLocation(getHostID(), getSessionID());
JDBMaterialUom matuom = new JDBMaterialUom(getHostID(), getSessionID());
JDBUom uomdb = new JDBUom(getHostID(), getSessionID());
JDBInterface inter = new JDBInterface(getHostID(), getSessionID());
JDBControl ctrl = new JDBControl(getHostID(), getSessionID());
JDBMaterialCustomerData matcustdata = new JDBMaterialCustomerData(getHostID(), getSessionID());
JDBCustomer cust = new JDBCustomer(getHostID(), getSessionID());
String defaultBatchStatus = ctrl.getKeyValue("DEFAULT BATCH STATUS");
inter.getInterfaceProperties("Material Definition", "Input");
material = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/material").trim());
setErrorMessage("Material " + material + " updated.");
materialType = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/materialType").trim());
if (mattype.isValidMaterialType(materialType) == false)
{
mattype.create(materialType, materialType);
}
description = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/description").trim());
base_uom = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/base_uom").trim());
base_uom = uomdb.convertUom(inter.getUOMConversion(), base_uom);
production_uom = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/production_uom").trim());
production_uom = uomdb.convertUom(inter.getUOMConversion(), production_uom);
issue_uom = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/issue_uom").trim());
issue_uom = uomdb.convertUom(inter.getUOMConversion(), issue_uom);
shelf_life_uom = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/shelf_life_uom").trim());
equipment_type = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/equipment_Type").trim());
shelf_life = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/shelf_life").trim());
shelf_life_rule = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/shelf_life_rule").trim());
gross_weight = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/gross_weight").trim());
net_weight = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/net_weight").trim());
weight_uom = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/weight_uom").trim());
weight_uom = uomdb.convertUom(inter.getUOMConversion(), weight_uom);
old_material = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/old_material").trim());
inspection_id = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/inspection_id").trim());
default_batch_status = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath("//message/messageData/materialDefinition/default_batch_status").trim());
/* Material Customer Data */
repeat = true;
seq = 1;
do
{
key = "//message/messageData/materialDefinition/materialCustomerData/customer[" + String.valueOf(seq) + "]/@ID";
customerID = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath(key).trim());
if (customerID.length() > 0)
{
repeat2 = true;
seq2 = 1;
do
{
key = "//message/messageData/materialDefinition/materialCustomerData/customer[" + String.valueOf(seq) + "]/data[" + String.valueOf(seq2) + "]/@dataType";
dataID = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath(key).trim());
key = "//message/messageData/materialDefinition/materialCustomerData/customer[" + String.valueOf(seq) + "]/data[" + String.valueOf(seq2) + "]/@value";
dataValue = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath(key).trim());
if (dataID.length() > 0)
{
if (matcustdata.isValidMaterialCustomerData(material, customerID, dataID)==false)
{
matcustdata.create(material, customerID, dataID);
}
matcustdata.setData(dataValue);
matcustdata.update();
if (dataID.equals("NAME"))
{
customer_name=dataValue;
}
} else
{
repeat2=false;
}
seq2++;
} while (repeat2);
if (cust.isValidCustomer(customerID)==false)
{
cust.clear();
cust.create(customerID, customer_name, "Y");
cust.update();
}
}
else
{
repeat=false;
}
seq++;
} while (repeat);
/* Material Locations */
repeat = true;
seq = 1;
do
{
key = "//message/messageData/materialDefinition/validLocations/location[" + String.valueOf(seq) + "]/id";
location = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath(key).trim());
key = "//message/messageData/materialDefinition/validLocations/location[" + String.valueOf(seq) + "]/status";
status = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath(key).trim());
if (location.length() > 0)
{
if (locn.isValidLocation(location) == true)
{
if (matlocn.isValidMaterialLocation(material, location) == false)
{
matlocn.create(material, location);
}
matlocn.setStatus(status);
matlocn.update();
}
} else
{
repeat = false;
}
seq++;
} while (repeat);
/* Material Units of Measure */
repeat = true;
seq = 1;
String matUOMError = "";
do
{
key = "//message/messageData/materialDefinition/materialUOMDefinition[" + String.valueOf(seq) + "]/uom";
uom = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath(key).trim());
uom = uomdb.convertUom(inter.getUOMConversion(), uom);
if (uom.length() > 0)
{
key = "//message/messageData/materialDefinition/materialUOMDefinition[" + String.valueOf(seq) + "]/numerator";
numerator = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath(key).trim());
key = "//message/messageData/materialDefinition/materialUOMDefinition[" + String.valueOf(seq) + "]/denominator";
denominator = JUtility.replaceNullStringwithBlank(gmh.getXMLDocument().findXPath(key).trim());
key = "//message/messageData/materialDefinition/materialUOMDefinition[" + String.valueOf(seq) + "]/ean";
ean = gmh.getXMLDocument().findXPath(key).trim();
key = "//message/messageData/materialDefinition/materialUOMDefinition[" + String.valueOf(seq) + "]/variant";
variant = gmh.getXMLDocument().findXPath(key).trim();
if (uomdb.isValidInternalUom(uom) == false)
{
uomdb.create(uom, uom, uom, "Auto created UOM");
}
if (matuom.getMaterialUomProperties(material, uom) == false)
{
matuom.setMaterial(material);
matuom.setUom(uom);
if (matuom.create() == false)
{
result = false;
matUOMError = "Material " + material + " UOM [" + uom + "] create error. " + matuom.getErrorMessage();
setErrorMessage(matUOMError);
} else
{
setErrorMessage("Material " + material + " created.");
}
}
try
{
matuom.setNumerator(Integer.valueOf(JUtility.getDefaultValue(numerator, String.valueOf(matuom.getNumerator()), "0")));
matuom.setDenominator(Integer.valueOf(JUtility.getDefaultValue(denominator, String.valueOf(matuom.getDenominator()), "0")));
matuom.setEan(ean);
matuom.setVariant(variant);
if (matuom.getNumerator() == 0)
{
result = false;
setErrorMessage("Material " + material + " UOM [" + uom + "]. Numerator cannot be zero.");
} else
{
if (matuom.getDenominator() == 0)
{
result = false;
setErrorMessage("Material " + material + " UOM [" + uom + "]. Denominator cannot be zero.");
} else
{
if (matuom.update() == false)
{
result = false;
setErrorMessage("Material " + material + " UOM [" + uom + "] update error. " + matuom.getErrorMessage());
}
}
}
} catch (Exception ex)
{
result = false;
setErrorMessage("Material " + material + " UOM [" + uom + "]. Invalid Quantity");
}
} else
{
repeat = false;
}
seq++;
if (matUOMError.equals("") == false)
{
setErrorMessage(matUOMError);
}
} while (repeat);
if (mat.getMaterialProperties(material) == false)
{
mat.setBaseUom(JUtility.getDefaultValue(base_uom, mat.getBaseUom(), ""));
if (mat.create() == false)
{
result = false;
setErrorMessage("Material " + material + " create error. " + mat.getErrorMessage());
} else
{
setErrorMessage("Material " + material + " created.");
}
}
if (uomdb.isValidInternalUom(uom) == false)
{
uomdb.create(weight_uom, weight_uom, weight_uom, "Auto created UOM");
}
mat.setMaterialType(JUtility.getDefaultValue(materialType, mat.getMaterialType(), ""));
mat.setDescription(JUtility.getDefaultValue(description, mat.getDescription(), "No description"));
mat.setBaseUom(JUtility.getDefaultValue(base_uom, mat.getBaseUom(), ""));
mat.setShelfLifeUom(JUtility.getDefaultValue(shelf_life_uom, mat.getShelfLifeUom(), "D"));
mat.setEquipmentType(JUtility.getDefaultValue(equipment_type, mat.getEquipmentType(), ""));
mat.setShelfLife(Integer.valueOf(JUtility.getDefaultValue(shelf_life, String.valueOf(mat.getShelfLife()), "0")));
mat.setShelfLifeRule(JUtility.getDefaultValue(shelf_life_rule, mat.getShelfLifeRule(), "+"));
mat.setGrossWeight(BigDecimal.valueOf(Double.valueOf(JUtility.getDefaultValue(gross_weight, mat.getGrossWeight().toString(), "0.0"))));
mat.setNetWeight(BigDecimal.valueOf(Double.valueOf(JUtility.getDefaultValue(net_weight, mat.getNetWeight().toString(), "0.0"))));
mat.setWeightUom(JUtility.getDefaultValue(weight_uom, mat.getWeightUom(), ""));
mat.setOldMaterial(JUtility.getDefaultValue(old_material, mat.getOldMaterial(), ""));
mat.setInspectionID(JUtility.getDefaultValue(inspection_id, mat.getInspectionID(), ""));
mat.setDefaultBatchStatus(JUtility.getDefaultValue(default_batch_status, mat.getDefaultBatchStatus(), defaultBatchStatus));
if (mat.update() == false)
{
result = false;
setErrorMessage("Material " + material + " update error. " + mat.getErrorMessage());
}
mat = null;
return result;