try {
connect();
AtrilSession oSes = getSession();
Dms oDms = oSes.getDms();
CustomerAccount cacc = new CustomerAccount(oDms, getSessionAttribute("customer_account_docid"));
oSes.commit();
cacc.put("name_billing",getName());
cacc.put("cif_billing",getCif());
cacc.put("phone_billing",getPhone());
cacc.put("mail_billing",getMail());
cacc.put("address_billing",getAddress());
cacc.put("postcode_billing",getPostcode());
cacc.put("city_billing",getCity());
cacc.put("state_billing",getState());
cacc.put("country_billing",getCountry());
cacc.save(oSes);
oSes.commit();
order = cacc.createOrder(oSes);
order.put("user_id", getSessionAttribute("user_docid"));
order.put("credits_bought", selectedProduct.getCredits());
//order.save(oSes);
Log.out.info("Created order " + order.getString("order_id") + " for customer " + getSessionAttribute("customer_acount"));
order.put("promo_code",promo_code);
order.put("name",name);
order.put("cif",cif);
order.put("phone",phone);
order.put("mail",mail);
order.put("address",address);
order.put("city",city);
order.put("state",state);
order.put("country",country);
order.put("postcode",postcode);
order.put("cardnumber",cardnumber);
order.put("cardholder",cardholder);
order.put("expiration_month_card",expiration_month_card);
order.put("expiration_year_card",expiration_year_card);
order.put("cvv2",cvv2);
order.save(oSes);
commit();
OrderLine line = order.addLine(oSes, selectedProduct);
commit();
Log.out.info("Added order line for product " + selectedProduct.getString("product_name"));
order.put("base_price", line.getString("base_price"));
order.put("taxes", line.getString("taxes"));
order.put("taxespct", line.getString("taxespct"));
order.put("total_price", line.getString("subtotal_price"));
order.put("currency", line.getString("currency"));
if (selectedProduct.getPrice().compareTo(BigDecimal.ZERO)==0) {
order.put("status_number", Tpv.PAGADO);
Long oCreditsLeft = new Long(cacc.getBigDecimal("credits_left").longValue());
if (null == oCreditsLeft) {
oCreditsLeft = new Long(0l);
}
cacc.put("credits_left", new Long(oCreditsLeft.longValue() + selectedProduct.getCredits().longValue()));
cacc.save(oSes);
commit();
Log.out.info("Added " + selectedProduct.getCredits().toString() + " credits to customer " + getSessionAttribute("customer_acount"));
DAO.log(oSes, cacc.getDocument(), CustomerAccount.class, "UPDATE CREDITS", AtrilEvent.Level.INFO, cacc.getDocument().id() + ";" + cacc.get("credits_left"));
} else {
order.put("status_number",Tpv.PENDIENTE_PAGO);
}