sCustAcc = sCustomerAccount;
sUser = sUserUid;
}
public void run() {
AtrilSession oSes = null;
try {
BigDecimal oCredits = oSrvFlv.credits();
oSes = DAO.getAdminSession("CreditBurner");
oSes.autoCommit(false);
CustomerAccount oAcc = new CustomerAccount(oSes.getDms(), sCustAcc);
oAcc.burnCredits(oSes, oCredits);
oAcc.save(oSes);
DAO.log(oSes, oAcc.getDocument(), CustomerAccount.class, "BURN CREDITS", AtrilEvent.Level.INFO, oCredits.toString()+";"+oSrvFlv.uid()+";"+sUser);
switch (oAcc.getCreditsLeft().signum()) {
case 0:
DAO.log(oSes, oAcc.getDocument(), CustomerAccount.class, "NO CREDITS LEFT", AtrilEvent.Level.WARNING, "0;"+oSrvFlv.uid()+";"+sUser);
break;
case -1:
DAO.log(oSes, oAcc.getDocument(), CustomerAccount.class, "NEGATIVE CREDITS", AtrilEvent.Level.WARNING, oAcc.getCreditsLeft().toString()+";"+oSrvFlv.uid()+";"+sUser);
break;
}
oSes.commit();
oSes.disconnect();
oSes.close();
oSes = null;
} catch (Exception xcpt) {
Log.out.error("CreditBurner "+xcpt.getClass().getName()+" "+xcpt.getMessage(), xcpt);
} finally {
if (oSes!=null) {
if (oSes.isConnected()) oSes.disconnect();
if (oSes.isOpen()) oSes.close();
}
}
}