"L.STOCKSECURITY, L.STOCKMAXIMUM, COALESCE(S.SUMUNITS, 0) " +
"FROM PRODUCTS P " +
"LEFT OUTER JOIN (SELECT ID, PRODUCT, LOCATION, STOCKSECURITY, STOCKMAXIMUM FROM STOCKLEVEL WHERE LOCATION = ?) L ON P.ID = L.PRODUCT " +
"LEFT OUTER JOIN (SELECT PRODUCT, SUM(UNITS) AS SUMUNITS FROM STOCKCURRENT WHERE LOCATION = ? GROUP BY PRODUCT) S ON P.ID = S.PRODUCT " +
"ORDER BY P.NAME",
new SerializerWriteBasicExt(new Datas[] {Datas.OBJECT, Datas.STRING}, new int[]{1, 1}),
new WarehouseSerializerRead()
),
m_paramslocation);
SentenceExec updatesent = new SentenceExecTransaction(app.getSession()) {
public int execInTransaction(Object params) throws BasicException {
Object[] values = (Object[]) params;
if (values[0] == null) {
// INSERT
values[0] = UUID.randomUUID().toString();
return new PreparedSentence(app.getSession()
, "INSERT INTO STOCKLEVEL (ID, LOCATION, PRODUCT, STOCKSECURITY, STOCKMAXIMUM) VALUES (?, ?, ?, ?, ?)"
, new SerializerWriteBasicExt(row.getDatas(), new int[] {0, 4, 1, 5, 6})).exec(params);
} else {
// UPDATE
return new PreparedSentence(app.getSession()
, "UPDATE STOCKLEVEL SET STOCKSECURITY = ?, STOCKMAXIMUM = ? WHERE ID = ?"
, new SerializerWriteBasicExt(row.getDatas(), new int[] {5, 6, 0})).exec(params);
}
}
};
spr = new SaveProvider(updatesent, null, null);