diff --git a/crov-prase-controller/src/main/java/com/arrebol/taxiservicios/controller/admin/ExpenseController.java b/crov-prase-controller/src/main/java/com/arrebol/taxiservicios/controller/admin/ExpenseController.java index b25bff9..d8e0845 100644 --- a/crov-prase-controller/src/main/java/com/arrebol/taxiservicios/controller/admin/ExpenseController.java +++ b/crov-prase-controller/src/main/java/com/arrebol/taxiservicios/controller/admin/ExpenseController.java @@ -24,6 +24,7 @@ import com.arrebol.taxiservicios.model.stocktaking.ServiceOrderHasProduct; import java.io.Serializable; import java.time.LocalDate; import java.time.ZoneId; +import java.util.Calendar; import java.util.Date; import java.util.List; import javax.persistence.criteria.CriteriaBuilder; @@ -45,897 +46,907 @@ import org.hibernate.Transaction; */ public class ExpenseController extends ConnectionManager implements Serializable { - private static final String EMPTY = ""; + private static final String EMPTY = ""; - @Deprecated - public List fillExpenseDatatable() { + @Deprecated + public List fillExpenseDatatable() { - Transaction transaction = null; - List result = null; + Transaction transaction = null; + List result = null; - try { - logger.info("Searching all expenses.."); - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); + try { + logger.info("Searching all expenses.."); + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaQuery criteria = builder.createQuery(Expense.class); - Root root = criteria.from(Expense.class); + CriteriaQuery criteria = builder.createQuery(Expense.class); + Root root = criteria.from(Expense.class); - Path idPath = root.get("id"); - Path folioPath = root.get("folio"); - Path paymentPath = root.get("payment"); - Path paymentDatePath = root.get("paymentDate"); - Path descriptionPath = root.get("description"); - Path typePath = root.get("type"); - Path statusPath = root.get("status"); - Path taxiPath = root.get("taxi"); + Path idPath = root.get("id"); + Path folioPath = root.get("folio"); + Path paymentPath = root.get("payment"); + Path paymentDatePath = root.get("paymentDate"); + Path descriptionPath = root.get("description"); + Path typePath = root.get("type"); + Path statusPath = root.get("status"); + Path taxiPath = root.get("taxi"); - criteria.select( - builder.construct(Expense.class, idPath, folioPath, paymentPath, paymentDatePath, - descriptionPath, typePath, statusPath, taxiPath - )); + criteria.select( + builder.construct(Expense.class, idPath, folioPath, paymentPath, paymentDatePath, + descriptionPath, typePath, statusPath, taxiPath + )); - criteria.orderBy( - builder.asc(root.get("createdOn")) - ); + criteria.orderBy( + builder.asc(root.get("createdOn")) + ); - result = session.createQuery(criteria).getResultList(); + result = session.createQuery(criteria).getResultList(); + transaction.commit(); + logger.info("Total of expenses found for ComboBox: " + (null == result ? -1 : result.size())); + } catch (HibernateException e) { + logger.error("Can not load list of expenses for ComboBox ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method fillExpenseDatatable of Expense", e); + rollback(transaction); + } + + return result; + } + + /** + * Use a left join, query = select * from EXPENSE exp left join TAXI tax on + * exp.TAXI_ID = tax.ID left join PERSON per on exp.DRIVER_ID = per.ID order + * by exp.CREATED_ON; + * + * @return List of all expense. + */ + public List fillExpenseDatatableLeftJoin() { + logger.info("Searching all expenses.."); + + List result = null; + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + String query = "SELECT exp FROM Expense exp " + + "LEFT JOIN Taxi tax ON exp.taxi = tax.id " + + "LEFT JOIN Person per ON exp.driver = per.id " + + "WHERE exp.type NOT IN ('INICIO')" + + "ORDER BY exp.createdOn DESC"; + + result = session.createQuery(query).getResultList(); + + transaction.commit(); + logger.info("Total of expenses found for ComboBox: " + (null == result ? -1 : result.size())); + } catch (HibernateException e) { + logger.error("Can not load list of expenses for ComboBox ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method fillExpenseDatatable of Expense", e); + rollback(transaction); + } + + return result; + } + + public List fillExpenseDataTableBetweenDates(Date starDate, Date endDate, Location location) { + logger.info("fillExpenseDataTableBetweenDates"); + + List results = null; + Transaction transaction = null; + + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery query = builder.createQuery(Expense.class); + Root root = query.from(Expense.class); + + LocalDate localStartDate = starDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate localEndDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + + Predicate searchType = builder.notEqual(root.get("type"), ExpenseType.INICIO); + Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn").as(LocalDate.class), localStartDate); + Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn").as(LocalDate.class), localEndDate); + Predicate locationPredicate = builder.equal(root.get("location"), location); + + query.where(builder.and( + searchType, startDatePredicate, endDatePredicate, locationPredicate + )); + query.orderBy(builder.asc(root.get("createdOn"))); + + results = session.createQuery(query).getResultList(); + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } + + return results; + } + + public List fillExpenseDataTablePendingDeposit(Location location) { + logger.info("fillExpenseDataTablePendingDeposit"); + + List results = null; + Transaction transaction = null; + + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery query = builder.createQuery(Expense.class); + Root root = query.from(Expense.class); + + Predicate searchType = builder.notEqual(root.get("type"), ExpenseType.INICIO); + Predicate pending = builder.equal(root.get("depositStatus"), ExpenseStatusType.PENDING); + Predicate bankCardNotNull = builder.isNotNull(root.get("bankCard")); + + Predicate locationPredicate = builder.equal(root.get("location"), location); + + query.where(builder.and( + searchType, locationPredicate, pending, bankCardNotNull + )); + query.orderBy(builder.asc(root.get("createdOn"))); + + results = session.createQuery(query).getResultList(); + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } + + return results; + } + + public boolean autorizarExpense(String expenseId, User user) { + logger.info("autorizar"); + + boolean success = false; + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + CriteriaBuilder builder = session.getCriteriaBuilder(); + CriteriaUpdate update = builder.createCriteriaUpdate(Expense.class); + Root rootUpdate = update.from(Expense.class); + + update.set("depositStatus", ExpenseStatusType.AUTHORIZED); + update.set("lastUpdatedBy", user); + update.set("lastUpdatedOn", new Date()); + update.where(builder.equal(rootUpdate.get("id"), expenseId)); + + int total = session.createQuery(update).executeUpdate(); + + if (1 == total) { transaction.commit(); - logger.info("Total of expenses found for ComboBox: " + (null == result ? -1 : result.size())); - } catch (HibernateException e) { - logger.error("Can not load list of expenses for ComboBox ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method fillExpenseDatatable of Expense", e); - rollback(transaction); - } - - return result; - } - - /** - * Use a left join, query = select * from EXPENSE exp left join TAXI tax on - * exp.TAXI_ID = tax.ID left join PERSON per on exp.DRIVER_ID = per.ID order - * by exp.CREATED_ON; - * - * @return List of all expense. - */ - public List fillExpenseDatatableLeftJoin() { - logger.info("Searching all expenses.."); - - List result = null; - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - String query = "SELECT exp FROM Expense exp " - + "LEFT JOIN Taxi tax ON exp.taxi = tax.id " - + "LEFT JOIN Person per ON exp.driver = per.id " - + "WHERE exp.type NOT IN ('INICIO')" - + "ORDER BY exp.createdOn DESC"; - - result = session.createQuery(query).getResultList(); - - transaction.commit(); - logger.info("Total of expenses found for ComboBox: " + (null == result ? -1 : result.size())); - } catch (HibernateException e) { - logger.error("Can not load list of expenses for ComboBox ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method fillExpenseDatatable of Expense", e); - rollback(transaction); - } - - return result; - } - - public List fillExpenseDataTableBetweenDates(Date starDate, Date endDate, Location location) { - logger.info("fillExpenseDataTableBetweenDates"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery query = builder.createQuery(Expense.class); - Root root = query.from(Expense.class); - - - LocalDate localStartDate = starDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - LocalDate localEndDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - - Predicate searchType = builder.notEqual(root.get("type"), ExpenseType.INICIO); - Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn").as(LocalDate.class), localStartDate); - Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn").as(LocalDate.class), localEndDate); - Predicate locationPredicate = builder.equal(root.get("location"), location); - - query.where(builder.and( - searchType, startDatePredicate, endDatePredicate, locationPredicate - )); - query.orderBy(builder.asc(root.get("createdOn"))); - - results = session.createQuery(query).getResultList(); - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - public List fillExpenseDataTablePendingDeposit(Location location) { - logger.info("fillExpenseDataTablePendingDeposit"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery query = builder.createQuery(Expense.class); - Root root = query.from(Expense.class); - - - Predicate searchType = builder.notEqual(root.get("type"), ExpenseType.INICIO); - Predicate pending = builder.equal(root.get("depositStatus"), ExpenseStatusType.PENDING); - Predicate bankCardNotNull = builder.isNotNull(root.get("bankCard")); - - Predicate locationPredicate = builder.equal(root.get("location"), location); - - query.where(builder.and( - searchType, locationPredicate, pending,bankCardNotNull - )); - query.orderBy(builder.asc(root.get("createdOn"))); - - results = session.createQuery(query).getResultList(); - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - public boolean autorizarExpense(String expenseId, User user) { - logger.info("autorizar"); - - boolean success = false; - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaUpdate update = builder.createCriteriaUpdate(Expense.class); - Root rootUpdate = update.from(Expense.class); - - update.set("depositStatus", ExpenseStatusType.AUTHORIZED); - update.set("lastUpdatedBy", user); - update.set("lastUpdatedOn", new Date()); - update.where(builder.equal(rootUpdate.get("id"), expenseId)); - - int total = session.createQuery(update).executeUpdate(); - - if (1 == total) { - transaction.commit(); - success = true; - logger.info("Sale " + expenseId + " updated"); - } else { - transaction.rollback(); - logger.error("Error Sale updated total: " + total); - } - } catch (HibernateException e) { - logger.error("Sale can not be updated ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method autorizar() ", e); - rollback(transaction); - } - return success; - } - public List fillExpenseDataTableBetweenDatesAbono(Date starDate, Date endDate, String location) { - logger.info("fillExpenseDataTableBetweenDates"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery query = builder.createQuery(Expense.class); - Root root = query.from(Expense.class); - - - Predicate searchType = builder.equal(root.get("type"), ExpenseType.ABONO_FINANCIAMIENTO); - Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); - Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); - Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); - - query.where(builder.and( - searchType, startDatePredicate, endDatePredicate, locationPredicate - )); - query.orderBy(builder.asc(root.get("createdOn"))); - - results = session.createQuery(query).getResultList(); - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - public List fillExpenseDataTableBetweenDatesIngresosCajaChica(Date starDate, Date endDate, String location) { - logger.info("fillExpenseDataTableBetweenDates"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery query = builder.createQuery(Expense.class); - Root root = query.from(Expense.class); - - - - Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"),ExpenseIncomeType.EARNING); - Predicate predicateAffects = builder.equal(root.get("idExpenseType").get("activePaymentCustomer"),BasicType.DISABLED); - Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.SMALL),builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); - Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); - Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); - Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); - - query.where(builder.and( - predicateBox,predicateType,predicateAffects, startDatePredicate, endDatePredicate, locationPredicate - )); - query.orderBy(builder.asc(root.get("createdOn"))); - - results = session.createQuery(query).getResultList(); - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - public List fillExpenseDataTableBetweenDatesIngresosGeneral(Date starDate, Date endDate, String location) { - logger.info("fillExpenseDataTableBetweenDates"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery query = builder.createQuery(Expense.class); - Root root = query.from(Expense.class); - - - Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"),ExpenseIncomeType.EARNING); - Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.GENERAL),builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); - Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); - Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); - Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); - - query.where(builder.and( - predicateBox,predicateType, startDatePredicate, endDatePredicate, locationPredicate - )); - query.orderBy(builder.asc(root.get("createdOn"))); - - results = session.createQuery(query).getResultList(); - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - public List fillExpenseDataTableBetweenDatesEgresosCajaChica(Date starDate, Date endDate, String location) { - logger.info("fillExpenseDataTableBetweenDates"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery query = builder.createQuery(Expense.class); - Root root = query.from(Expense.class); - - - - Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"),ExpenseIncomeType.EXPENSE); - Predicate predicateInversion = builder.equal(root.get("idExpenseType").get("expenseCatalogType"),ExpenseCatalogType.EXPENSE); - Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.SMALL),builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); - Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); - Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); - Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); - - query.where(builder.and( - predicateBox,predicateType,predicateInversion, startDatePredicate, endDatePredicate, locationPredicate - )); - query.orderBy(builder.asc(root.get("createdOn"))); - - results = session.createQuery(query).getResultList(); - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - public List fillExpenseDataTableBetweenDatesEgresosCajaChicaInversion(Date starDate, Date endDate, String location) { - logger.info("fillExpenseDataTableBetweenDates"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery query = builder.createQuery(Expense.class); - Root root = query.from(Expense.class); - - - - Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"),ExpenseIncomeType.EXPENSE); - Predicate predicateInversion = builder.equal(root.get("idExpenseType").get("expenseCatalogType"),ExpenseCatalogType.INVESTMENT); - Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.SMALL),builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); - Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); - Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); - Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); - - query.where(builder.and( - predicateBox,predicateType,predicateInversion, startDatePredicate, endDatePredicate, locationPredicate - )); - query.orderBy(builder.asc(root.get("createdOn"))); - - results = session.createQuery(query).getResultList(); - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - public List fillExpenseDataTableBetweenDatesEgresosGeneral(Date starDate, Date endDate, String location) { - logger.info("fillExpenseDataTableBetweenDates"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery query = builder.createQuery(Expense.class); - Root root = query.from(Expense.class); - - - Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"),ExpenseIncomeType.EXPENSE); - Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.GENERAL),builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); - Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); - Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); - Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); - - query.where(builder.and( - predicateBox,predicateType, startDatePredicate, endDatePredicate, locationPredicate - )); - query.orderBy(builder.asc(root.get("createdOn"))); - - results = session.createQuery(query).getResultList(); - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - public List fillExpenseIniciosDataTableBetweenDates(Date starDate, Date endDate, Location location) { - logger.info("fillExpenseDataTableBetweenDates"); - - List results = null; - Transaction transaction = null; - - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - results = session.createQuery("SELECT exp FROM Expense exp " - + "LEFT JOIN Taxi tax ON exp.taxi = tax.id " - + "LEFT JOIN Person per ON exp.driver = per.id " - + "WHERE exp.type IN ('INICIO') AND " - + "(DATE(exp.createdOn) BETWEEN DATE(:starDate) AND DATE(:endDate)) AND " - + "exp.location.id = :location ORDER BY exp.createdOn DESC") - .setParameter("starDate", starDate) - .setParameter("endDate", endDate) - .setParameter("location", location.getId()) - .getResultList(); - - transaction.commit(); - logger.info("Total of Expense founds in auto complete search " + results.size()); - } catch (HibernateException e) { - rollback(transaction); - logger.error("Can not load auto complete list of Expense", e); - } catch (Exception e) { - rollback(transaction); - logger.error("Method fillExpenseDataTableBetweenDates", e); - } - - return results; - } - - /** - * - * @return - */ - public List fillExpenseInicios(String idLocation) { - logger.info("Searching all inicios expenses.."); - - List result = null; - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - String query = "SELECT exp FROM Expense exp WHERE exp.type = 'INICIO' AND exp.location.id = '"+idLocation+"' ORDER BY exp.createdOn DESC"; - - result = session.createQuery(query).getResultList(); - - transaction.commit(); - logger.info("Total of expenses inicios found for ComboBox: " + (null == result ? -1 : result.size())); - } catch (HibernateException e) { - logger.error("Can not load list of expensesinicios for ComboBox ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method fillExpenseInicios of Expense", e); - rollback(transaction); - } - - return result; - } - - public List findAllSystemUser() { - logger.info("Searching all findAllSystemUser.."); - - List result = null; - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - String query = "SELECT usr FROM User usr " - + " WHERE " - + " usr.userStatusType = 'ENABLED' " - + " AND usr.active = true " - + " ORDER BY usr.createdOn DESC"; - - result = session.createQuery(query, User.class).getResultList(); - - transaction.commit(); - logger.info("Total of find All System User found for ComboBox: " + (null == result ? -1 : result.size())); - } catch (HibernateException e) { - logger.error("Can not load list of find All System User for ComboBox ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method findAllSystemUser of Expense", e); - rollback(transaction); - } - - return result; - } - - public List findAllSystemUserByLocation(Location location) { - logger.info("Searching all findAllSystemUser.."); - - List result = null; - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - String query = "SELECT usr FROM User usr " - + " WHERE " - + " usr.userStatusType = 'ENABLED' " - + " AND usr.active = true AND usr.location.id = '"+location.getId()+"' " - + " ORDER BY usr.createdOn DESC"; - - result = session.createQuery(query, User.class).getResultList(); - - transaction.commit(); - logger.info("Total of find All System User found for ComboBox: " + (null == result ? -1 : result.size())); - } catch (HibernateException e) { - logger.error("Can not load list of find All System User for ComboBox ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method findAllSystemUser of Expense", e); - rollback(transaction); - } - - return result; - } - - public List fillTaxisComboBox() { - - Transaction transaction = null; - List result = null; - - try { - logger.info("Searching all taxis to select.."); - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - - CriteriaQuery criteria = builder.createQuery(Taxi.class); - Root root = criteria.from(Taxi.class); - - Path idPath = root.get("id"); - Path economicNumberPath = root.get("economicNumber"); - - criteria.select( - builder.construct(Taxi.class, idPath, economicNumberPath - )); - - criteria.where(builder.equal(root.get("active"), Boolean.TRUE)); - - criteria.orderBy( - builder.asc(root.get("economicNumber")) - ); - - result = session.createQuery(criteria).getResultList(); - transaction.commit(); - logger.info("Total of taxis found for ComboBox: " + (null == result ? -1 : result.size())); - } catch (HibernateException e) { - logger.error("Can not load list of taxis for ComboBox ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method fillTaxisComboBox of Expense", e); - rollback(transaction); - } - - return result; - } - - public boolean addExpense(Expense expense, String userId, String taxiId) { - logger.info("addExpense"); - logger.info("taxiId " + taxiId); - - Person idDriver = null; - - if (null != taxiId) { - idDriver = getDriverByTaxi(taxiId); - } - - boolean success = false; - - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - expense.setCreatedBy(new User(userId, "")); - - if (null != idDriver) { - expense.setDriver(idDriver); - } - - if(null != taxiId) { - expense.setTaxi(new Taxi(taxiId)); - } - session.save(expense); - logger.info("Expense saved " + expense.getId()); - transaction.commit(); - success = true; - } catch (HibernateException e) { - logger.error("Expense can not be added ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method addExpense() ", e); - rollback(transaction); - } - return success; - } + logger.info("Sale " + expenseId + " updated"); + } else { + transaction.rollback(); + logger.error("Error Sale updated total: " + total); + } + } catch (HibernateException e) { + logger.error("Sale can not be updated ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method autorizar() ", e); + rollback(transaction); + } + return success; + } - public Person getDriverByTaxi(String taxiId) { + public List fillExpenseDataTableBetweenDatesAbono(Date starDate, Date endDate, String location) { + logger.info("fillExpenseDataTableBetweenDates"); - Transaction transaction = null; - Person result = null; + List results = null; + Transaction transaction = null; - try { - logger.info("Searching driver by taxi.."); - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaQuery criteria = builder.createQuery(Taxi.class); - Root root = criteria.from(Taxi.class); + CriteriaQuery query = builder.createQuery(Expense.class); + Root root = query.from(Expense.class); - Path idPath = root.get("id"); - Path economicNumberPath = root.get("economicNumber"); - Path driverPath = root.get("driver"); + Predicate searchType = builder.equal(root.get("type"), ExpenseType.ABONO_FINANCIAMIENTO); + Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); + Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); + Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); - criteria.select( - builder.construct(Taxi.class, idPath, economicNumberPath, driverPath - )); + query.where(builder.and( + searchType, startDatePredicate, endDatePredicate, locationPredicate + )); + query.orderBy(builder.asc(root.get("createdOn"))); - criteria.where(builder.equal(root.get("id"), taxiId)); + results = session.createQuery(query).getResultList(); + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } - result = session.createQuery(criteria).uniqueResult().getDriver(); + return results; + } + + public List fillExpenseDataTableBetweenDatesIngresosCajaChica(Date starDate, Date endDate, String location) { + logger.info("fillExpenseDataTableBetweenDates"); + + List results = null; + Transaction transaction = null; + + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery query = builder.createQuery(Expense.class); + Root root = query.from(Expense.class); + + Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"), ExpenseIncomeType.EARNING); + Predicate predicateAffects = builder.equal(root.get("idExpenseType").get("activePaymentCustomer"), BasicType.DISABLED); + Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.SMALL), builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); + Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); + Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); + Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); + + query.where(builder.and( + predicateBox, predicateType, predicateAffects, startDatePredicate, endDatePredicate, locationPredicate + )); + query.orderBy(builder.asc(root.get("createdOn"))); + + results = session.createQuery(query).getResultList(); + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } + + return results; + } + + public List fillExpenseDataTableBetweenDatesIngresosGeneral(Date starDate, Date endDate, String location) { + logger.info("fillExpenseDataTableBetweenDates"); + + List results = null; + Transaction transaction = null; + + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery query = builder.createQuery(Expense.class); + Root root = query.from(Expense.class); + + Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"), ExpenseIncomeType.EARNING); + Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.GENERAL), builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); + Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); + Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); + Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); + + query.where(builder.and( + predicateBox, predicateType, startDatePredicate, endDatePredicate, locationPredicate + )); + query.orderBy(builder.asc(root.get("createdOn"))); + + results = session.createQuery(query).getResultList(); + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } + + return results; + } + + public List fillExpenseDataTableBetweenDatesEgresosCajaChica(Date starDate, Date endDate, String location) { + logger.info("fillExpenseDataTableBetweenDates"); + + List results = null; + Transaction transaction = null; + + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery query = builder.createQuery(Expense.class); + Root root = query.from(Expense.class); + + Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"), ExpenseIncomeType.EXPENSE); + Predicate predicateInversion = builder.equal(root.get("idExpenseType").get("expenseCatalogType"), ExpenseCatalogType.EXPENSE); + Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.SMALL), builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); + Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); + Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); + Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); + + query.where(builder.and( + predicateBox, predicateType, predicateInversion, startDatePredicate, endDatePredicate, locationPredicate + )); + query.orderBy(builder.asc(root.get("createdOn"))); + + results = session.createQuery(query).getResultList(); + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } + + return results; + } + + public List fillExpenseDataTableBetweenDatesEgresosCajaChicaInversion(Date starDate, Date endDate, String location) { + logger.info("fillExpenseDataTableBetweenDates"); + + List results = null; + Transaction transaction = null; + + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery query = builder.createQuery(Expense.class); + Root root = query.from(Expense.class); + + Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"), ExpenseIncomeType.EXPENSE); + Predicate predicateInversion = builder.equal(root.get("idExpenseType").get("expenseCatalogType"), ExpenseCatalogType.INVESTMENT); + Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.SMALL), builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); + Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); + Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); + Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); + + query.where(builder.and( + predicateBox, predicateType, predicateInversion, startDatePredicate, endDatePredicate, locationPredicate + )); + query.orderBy(builder.asc(root.get("createdOn"))); + + results = session.createQuery(query).getResultList(); + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } + + return results; + } + + public List fillExpenseDataTableBetweenDatesEgresosGeneral(Date starDate, Date endDate, String location) { + logger.info("fillExpenseDataTableBetweenDates"); + + List results = null; + Transaction transaction = null; + + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery query = builder.createQuery(Expense.class); + Root root = query.from(Expense.class); + + Predicate predicateType = builder.equal(root.get("idExpenseType").get("expenseIncomeCatalogType"), ExpenseIncomeType.EXPENSE); + Predicate predicateBox = builder.or(builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.GENERAL), builder.equal(root.get("idExpenseType").get("activeBox"), BoxType.BOTH)); + Predicate startDatePredicate = builder.greaterThanOrEqualTo(root.get("createdOn"), starDate); + Predicate endDatePredicate = builder.lessThanOrEqualTo(root.get("createdOn"), endDate); + Predicate locationPredicate = builder.equal(root.get("location").get("id"), location); + + query.where(builder.and( + predicateBox, predicateType, startDatePredicate, endDatePredicate, locationPredicate + )); + query.orderBy(builder.asc(root.get("createdOn"))); + + results = session.createQuery(query).getResultList(); + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } + + return results; + } + + public List fillExpenseIniciosDataTableBetweenDates(Date starDate, Date endDate, Location location) { + logger.info("fillExpenseDataTableBetweenDates"); + + List results = null; + Transaction transaction = null; + + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + results = session.createQuery("SELECT exp FROM Expense exp " + + "LEFT JOIN Taxi tax ON exp.taxi = tax.id " + + "LEFT JOIN Person per ON exp.driver = per.id " + + "WHERE exp.type IN ('INICIO') AND " + + "(DATE(exp.createdOn) BETWEEN DATE(:starDate) AND DATE(:endDate)) AND " + + "exp.location.id = :location ORDER BY exp.createdOn DESC") + .setParameter("starDate", starDate) + .setParameter("endDate", endDate) + .setParameter("location", location.getId()) + .getResultList(); + + transaction.commit(); + logger.info("Total of Expense founds in auto complete search " + results.size()); + } catch (HibernateException e) { + rollback(transaction); + logger.error("Can not load auto complete list of Expense", e); + } catch (Exception e) { + rollback(transaction); + logger.error("Method fillExpenseDataTableBetweenDates", e); + } + + return results; + } + + /** + * + * @return + */ + public List fillExpenseInicios(String idLocation) { + logger.info("Searching all inicios expenses.."); + + List result = null; + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + String query = "SELECT exp FROM Expense exp WHERE exp.type = 'INICIO' AND exp.location.id = '" + idLocation + "' ORDER BY exp.createdOn DESC"; + + result = session.createQuery(query).getResultList(); + + transaction.commit(); + logger.info("Total of expenses inicios found for ComboBox: " + (null == result ? -1 : result.size())); + } catch (HibernateException e) { + logger.error("Can not load list of expensesinicios for ComboBox ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method fillExpenseInicios of Expense", e); + rollback(transaction); + } + + return result; + } + + public List findAllSystemUser() { + logger.info("Searching all findAllSystemUser.."); + + List result = null; + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + String query = "SELECT usr FROM User usr " + + " WHERE " + + " usr.userStatusType = 'ENABLED' " + + " AND usr.active = true " + + " ORDER BY usr.createdOn DESC"; + + result = session.createQuery(query, User.class).getResultList(); + + transaction.commit(); + logger.info("Total of find All System User found for ComboBox: " + (null == result ? -1 : result.size())); + } catch (HibernateException e) { + logger.error("Can not load list of find All System User for ComboBox ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method findAllSystemUser of Expense", e); + rollback(transaction); + } + + return result; + } + + public List findAllSystemUserByLocation(Location location) { + logger.info("Searching all findAllSystemUser.."); + + List result = null; + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + String query = "SELECT usr FROM User usr " + + " WHERE " + + " usr.userStatusType = 'ENABLED' " + + " AND usr.active = true AND usr.location.id = '" + location.getId() + "' " + + " ORDER BY usr.createdOn DESC"; + + result = session.createQuery(query, User.class).getResultList(); + + transaction.commit(); + logger.info("Total of find All System User found for ComboBox: " + (null == result ? -1 : result.size())); + } catch (HibernateException e) { + logger.error("Can not load list of find All System User for ComboBox ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method findAllSystemUser of Expense", e); + rollback(transaction); + } + + return result; + } + + public List fillTaxisComboBox() { + + Transaction transaction = null; + List result = null; + + try { + logger.info("Searching all taxis to select.."); + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery criteria = builder.createQuery(Taxi.class); + Root root = criteria.from(Taxi.class); + + Path idPath = root.get("id"); + Path economicNumberPath = root.get("economicNumber"); + + criteria.select( + builder.construct(Taxi.class, idPath, economicNumberPath + )); + + criteria.where(builder.equal(root.get("active"), Boolean.TRUE)); + + criteria.orderBy( + builder.asc(root.get("economicNumber")) + ); + + result = session.createQuery(criteria).getResultList(); + transaction.commit(); + logger.info("Total of taxis found for ComboBox: " + (null == result ? -1 : result.size())); + } catch (HibernateException e) { + logger.error("Can not load list of taxis for ComboBox ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method fillTaxisComboBox of Expense", e); + rollback(transaction); + } + + return result; + } + + public boolean addExpense(Expense expense, String userId, String taxiId) { + logger.info("addExpense"); + logger.info("taxiId " + taxiId); + + Person idDriver = null; + + if (null != taxiId) { + idDriver = getDriverByTaxi(taxiId); + } + + boolean success = false; + + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + expense.setCreatedBy(new User(userId, "")); + + if (null != idDriver) { + expense.setDriver(idDriver); + } + + if (null != taxiId) { + expense.setTaxi(new Taxi(taxiId)); + } + session.save(expense); + logger.info("Expense saved " + expense.getId()); + transaction.commit(); + + success = true; + } catch (HibernateException e) { + logger.error("Expense can not be added ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method addExpense() ", e); + rollback(transaction); + } + return success; + } + + public Person getDriverByTaxi(String taxiId) { + + Transaction transaction = null; + Person result = null; + + try { + logger.info("Searching driver by taxi.."); + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + + CriteriaQuery criteria = builder.createQuery(Taxi.class); + Root root = criteria.from(Taxi.class); + + Path idPath = root.get("id"); + Path economicNumberPath = root.get("economicNumber"); + Path driverPath = root.get("driver"); + + criteria.select( + builder.construct(Taxi.class, idPath, economicNumberPath, driverPath + )); + + criteria.where(builder.equal(root.get("id"), taxiId)); + + result = session.createQuery(criteria).uniqueResult().getDriver(); + transaction.commit(); + logger.info("Taxi found"); + } catch (HibernateException e) { + logger.error("Can not load the taxi by driver ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method getTaxiByDriver of Sale", e); + rollback(transaction); + } + + return result; + } + + public void updateAdeudoTaxi(Taxi taxi) { + logger.info("deleteById"); + + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + CriteriaBuilder builder = session.getCriteriaBuilder(); + + builder = session.getCriteriaBuilder(); + CriteriaUpdate update = builder.createCriteriaUpdate(Taxi.class); + Root root = update.from(Taxi.class); + + update.set("adeudo", taxi.getAdeudo()); + + update.where(builder.equal(root.get("id"), taxi.getId())); + + session.createQuery(update).executeUpdate(); + + transaction.commit(); + + logger.info("Adeudo actualizado"); + + } catch (HibernateException e) { + logger.error("PaymentCliente can not be deleted ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method deleteSanctionById() ", e); + rollback(transaction); + } + + } + + public void returnServiceOrder(Expense expense, User user) { + logger.info("deleteById"); + + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + CriteriaBuilder builder = session.getCriteriaBuilder(); + + builder = session.getCriteriaBuilder(); + CriteriaUpdate update = builder.createCriteriaUpdate(ServiceOrder.class); + Root root = update.from(ServiceOrder.class); + + update.set("serviceOrderType", ServiceOrderType.FINISHED); + update.set("payUser", null); + update.set("payDate", null); + update.set("lastUpdatedBy", user); + update.set("lastUpdatedOn", new Date()); + + update.where(builder.equal(root.get("id"), expense.getServiceOrder().getId())); + + session.createQuery(update).executeUpdate(); + + transaction.commit(); + + logger.info("ServiceOrder actualizado"); + + } catch (HibernateException e) { + logger.error("Service Order can not be deleted ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("returnServiceOrder ", e); + rollback(transaction); + } + + } + + public void returnServiceOrderHasProduct(Expense expense, User user) { + logger.info("deleteById"); + + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + + CriteriaBuilder builder = session.getCriteriaBuilder(); + + builder = session.getCriteriaBuilder(); + CriteriaUpdate update = builder.createCriteriaUpdate(ServiceOrderHasProduct.class); + Root root = update.from(ServiceOrderHasProduct.class); + + update.set("cobrado", BasicType.DISABLED); + + update.where(builder.equal(root.get("serviceOrder").get("id"), expense.getServiceOrder().getId())); + + update.set("lastUpdatedBy", user); + update.set("lastUpdatedOn", new Date()); + + session.createQuery(update).executeUpdate(); + + transaction.commit(); + + logger.info("ServiceOrder actualizado"); + + } catch (HibernateException e) { + logger.error("Service Order can not be deleted ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("returnServiceOrder ", e); + rollback(transaction); + } + + } + + public boolean deleteExpenseById(String expenseId) { + logger.info("deleteExpenseById"); + + boolean success = false; + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + CriteriaBuilder builder = session.getCriteriaBuilder(); + CriteriaDelete delete = builder.createCriteriaDelete(Expense.class); + Root root = delete.from(Expense.class); + + delete.where(builder.equal(root.get("id"), expenseId)); + + int total = session.createQuery(delete).executeUpdate(); + + if (1 == total) { transaction.commit(); - logger.info("Taxi found"); - } catch (HibernateException e) { - logger.error("Can not load the taxi by driver ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method getTaxiByDriver of Sale", e); - rollback(transaction); - } + success = true; + logger.info("Expense " + expenseId + " deleted"); + } else { + transaction.rollback(); + logger.error("Error Expense deleted total: " + total); + } + } catch (HibernateException e) { + logger.error("Expense can not be deleted ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method deleteExpenseById() ", e); + rollback(transaction); + } + return success; + } - return result; - } - - public void updateAdeudoTaxi(Taxi taxi) { - logger.info("deleteById"); + public boolean disabledExpense(Expense expense, User user) { + logger.info("disabledExpense"); + boolean success = false; + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); + expense.setStatus(ExpenseStatusType.DISABLED); + expense.setLastUpdatedBy(user); + expense.setLastUpdatedOn(correcciónDeHr(new Date(), -7)); + session.update(expense); + transaction.commit(); + success = true; + } catch (HibernateException e) { + logger.error("Can not disabled expense", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method disabledExpense()", e); + rollback(transaction); + } + return success; + } - - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); + public boolean autorizarExpenseById(String expenseId) { + logger.info("autorizarExpenseById"); - CriteriaBuilder builder = session.getCriteriaBuilder(); + boolean success = false; + Transaction transaction = null; + try { + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); + transaction = session.beginTransaction(); - builder = session.getCriteriaBuilder(); - CriteriaUpdate update = builder.createCriteriaUpdate(Taxi.class); - Root root = update.from(Taxi.class); + CriteriaBuilder builder = session.getCriteriaBuilder(); - update.set("adeudo",taxi.getAdeudo()); - - update.where(builder.equal(root.get("id"), taxi.getId())); + builder = session.getCriteriaBuilder(); + CriteriaUpdate update = builder.createCriteriaUpdate(Expense.class); + Root rootUpdate = update.from(Expense.class); - session.createQuery(update).executeUpdate(); + update.set("status", ExpenseStatusType.AUTHORIZED); + update.where(builder.equal(rootUpdate.get("id"), expenseId)); - - transaction.commit(); - - - logger.info("Adeudo actualizado"); - - } catch (HibernateException e) { - logger.error("PaymentCliente can not be deleted ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method deleteSanctionById() ", e); - rollback(transaction); - } - - } - - - public void returnServiceOrder(Expense expense, User user) { - logger.info("deleteById"); + int total = session.createQuery(update).executeUpdate(); - - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); + if (1 == total) { + transaction.commit(); + success = true; + logger.info("Expense " + expenseId + " autorizhed"); + } else { + transaction.rollback(); + logger.error("Error Expense autorizhed total: " + total); + } + } catch (HibernateException e) { + logger.error("Expense can not be autorizhed ", e); + rollback(transaction); + } catch (Exception e) { + logger.error("Method autorizarExpenseById() ", e); + rollback(transaction); + } + return success; + } - CriteriaBuilder builder = session.getCriteriaBuilder(); + private Date correcciónDeHr(Date fecha, int horas) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(fecha); + calendar.add(Calendar.HOUR_OF_DAY, horas); + Date nuevaFecha = calendar.getTime(); + return nuevaFecha; + } - builder = session.getCriteriaBuilder(); - CriteriaUpdate update = builder.createCriteriaUpdate(ServiceOrder.class); - Root root = update.from(ServiceOrder.class); + private static final long serialVersionUID = -4436342523608482137L; - update.set("serviceOrderType",ServiceOrderType.FINISHED); - update.set("payUser",null); - update.set("payDate",null); - update.set("lastUpdatedBy", user); - update.set("lastUpdatedOn", new Date()); - - update.where(builder.equal(root.get("id"), expense.getServiceOrder().getId())); + final Logger logger = LogManager.getLogger(ExpenseController.class); - session.createQuery(update).executeUpdate(); - - - transaction.commit(); - - - logger.info("ServiceOrder actualizado"); - - } catch (HibernateException e) { - logger.error("Service Order can not be deleted ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("returnServiceOrder ", e); - rollback(transaction); - } - - } - - public void returnServiceOrderHasProduct(Expense expense, User user) { - logger.info("deleteById"); - - - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - CriteriaBuilder builder = session.getCriteriaBuilder(); - - builder = session.getCriteriaBuilder(); - CriteriaUpdate update = builder.createCriteriaUpdate(ServiceOrderHasProduct.class); - Root root = update.from(ServiceOrderHasProduct.class); - - update.set("cobrado",BasicType.DISABLED); - - - update.where(builder.equal(root.get("serviceOrder").get("id"), expense.getServiceOrder().getId())); - - update.set("lastUpdatedBy", user); - update.set("lastUpdatedOn", new Date()); - - session.createQuery(update).executeUpdate(); - - - transaction.commit(); - - - logger.info("ServiceOrder actualizado"); - - } catch (HibernateException e) { - logger.error("Service Order can not be deleted ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("returnServiceOrder ", e); - rollback(transaction); - } - - } - - public boolean deleteExpenseById(String expenseId) { - logger.info("deleteExpenseById"); - - boolean success = false; - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaDelete delete = builder.createCriteriaDelete(Expense.class); - Root root = delete.from(Expense.class); - - delete.where(builder.equal(root.get("id"), expenseId)); - - int total = session.createQuery(delete).executeUpdate(); - - if (1 == total) { - transaction.commit(); - success = true; - logger.info("Expense " + expenseId + " deleted"); - } else { - transaction.rollback(); - logger.error("Error Expense deleted total: " + total); - } - } catch (HibernateException e) { - logger.error("Expense can not be deleted ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method deleteExpenseById() ", e); - rollback(transaction); - } - return success; - } - - public boolean autorizarExpenseById(String expenseId) { - logger.info("autorizarExpenseById"); - - boolean success = false; - Transaction transaction = null; - try { - Session session = HibernateUtil.getSessionFactory().getCurrentSession(); - transaction = session.beginTransaction(); - - CriteriaBuilder builder = session.getCriteriaBuilder(); - - builder = session.getCriteriaBuilder(); - CriteriaUpdate update = builder.createCriteriaUpdate(Expense.class); - Root rootUpdate = update.from(Expense.class); - - update.set("status", ExpenseStatusType.AUTHORIZED); - update.where(builder.equal(rootUpdate.get("id"), expenseId)); - - int total = session.createQuery(update).executeUpdate(); - - if (1 == total) { - transaction.commit(); - success = true; - logger.info("Expense " + expenseId + " autorizhed"); - } else { - transaction.rollback(); - logger.error("Error Expense autorizhed total: " + total); - } - } catch (HibernateException e) { - logger.error("Expense can not be autorizhed ", e); - rollback(transaction); - } catch (Exception e) { - logger.error("Method autorizarExpenseById() ", e); - rollback(transaction); - } - return success; - } - - private static final long serialVersionUID = -4436342523608482137L; - - final Logger logger = LogManager.getLogger(ExpenseController.class); - - public ExpenseController() { - } + public ExpenseController() { + } } diff --git a/crov-prase-model/src/main/java/com/arrebol/taxiservicios/model/enums/ExpenseStatusType.java b/crov-prase-model/src/main/java/com/arrebol/taxiservicios/model/enums/ExpenseStatusType.java index 7022391..7043cce 100644 --- a/crov-prase-model/src/main/java/com/arrebol/taxiservicios/model/enums/ExpenseStatusType.java +++ b/crov-prase-model/src/main/java/com/arrebol/taxiservicios/model/enums/ExpenseStatusType.java @@ -5,26 +5,31 @@ package com.arrebol.taxiservicios.model.enums; * @author Picasso */ public enum ExpenseStatusType { - PENDING("Pendiente") { - @Override - public String toString() { - return "PENDING"; - } - }, AUTHORIZED("Autorizado") { - @Override - public String toString() { - return "AUTHORIZED"; - } - }; + PENDING("Pendiente") { + @Override + public String toString() { + return "PENDING"; + } + }, AUTHORIZED("Autorizado") { + @Override + public String toString() { + return "AUTHORIZED"; + } + }, DISABLED("Deshabilitada") { + @Override + public String toString() { + return "DISABLED"; + } + }; - private final String status; + private final String status; - private ExpenseStatusType(String status) { - this.status = status; - } + private ExpenseStatusType(String status) { + this.status = status; + } - public String getStatus() { - return status; - } + public String getStatus() { + return status; + } } diff --git a/crov-prase-web/src/main/java/com/arrebol/taxiservicios/beans/admin/AddClosingDayBean.java b/crov-prase-web/src/main/java/com/arrebol/taxiservicios/beans/admin/AddClosingDayBean.java index 68b8ac0..b782670 100644 --- a/crov-prase-web/src/main/java/com/arrebol/taxiservicios/beans/admin/AddClosingDayBean.java +++ b/crov-prase-web/src/main/java/com/arrebol/taxiservicios/beans/admin/AddClosingDayBean.java @@ -672,7 +672,14 @@ public class AddClosingDayBean extends TaxiGenericBean implements Serializable { private final String sub_query_to_find_previously_closing_day = "(SELECT DATE(cd.created_on) FROM closing_day cd WHERE DATE(cd.created_on) <= CURDATE() AND cd.user_id = :userID AND cd.active_status = 'ENEBLED' order by cd.created_on DESC LIMIT 1)"; private final String query_total_inicio_expenses = "SELECT IF(ISNULL(SUM(payment)),0, SUM(payment)) AS total_expenses FROM expense LEFT JOIN expense_income_catalog ON expense.id_expense_type = expense_income_catalog.id WHERE DATE(expense.created_on) > " + sub_query_to_find_previously_closing_day + " AND expense_status_type = 'AUTHORIZED' AND expense.created_by = :userID AND (expense_type IN ('INICIO','ABONO_FINANCIAMIENTO','PAGO_ORDEN_SERVICIO') OR (expense_income_catalog.type = 'EARNING')) AND id_bank_card is null"; - private final String query_total_expenses = "SELECT IF(ISNULL(SUM(payment)),0, SUM(payment)) AS total_expenses FROM expense INNER JOIN expense_income_catalog ON expense.id_expense_type = expense_income_catalog.id WHERE DATE(expense.created_on)> " + sub_query_to_find_previously_closing_day + " AND expense_status_type = 'AUTHORIZED' AND expense.created_by = :userID AND expense_income_catalog.type = 'EXPENSE' AND id_bank_card is null"; + private final String query_total_expenses = "SELECT IF(ISNULL(SUM(payment)),0, SUM(payment)) AS total_expenses " + + "FROM expense " + + "INNER JOIN expense_income_catalog ON expense.id_expense_type = expense_income_catalog.id " + + "WHERE DATE(expense.created_on)> " + sub_query_to_find_previously_closing_day + " " + + "AND expense_status_type = 'AUTHORIZED' " + + "AND expense.created_by = :userID " + + "AND expense_income_catalog.type = 'EXPENSE' " + + "AND id_bank_card is null"; private final String query_total_transfer_send = "SELECT IF(ISNULL(SUM(amount_to_transfer)),0, SUM(amount_to_transfer)) AS total_transfer_send FROM transfer_car_driver WHERE DATE(created_on) > " + sub_query_to_find_previously_closing_day + " AND action_status = 'APPROVED' AND active_status = 'ENEBLED' AND id_user_transmitter = :userID"; private final String query_total_transfer_receiver = "SELECT IF(ISNULL(SUM(amount_to_transfer)),0, SUM(amount_to_transfer)) AS total_transfer_receiver FROM transfer_car_driver WHERE DATE(created_on) > " + sub_query_to_find_previously_closing_day + " AND action_status = 'APPROVED' AND active_status = 'ENEBLED' AND id_user_receiver = :userID"; diff --git a/crov-prase-web/src/main/java/com/arrebol/taxiservicios/beans/admin/expense/ManagerExpense.java b/crov-prase-web/src/main/java/com/arrebol/taxiservicios/beans/admin/expense/ManagerExpense.java index bad3da2..bc60537 100644 --- a/crov-prase-web/src/main/java/com/arrebol/taxiservicios/beans/admin/expense/ManagerExpense.java +++ b/crov-prase-web/src/main/java/com/arrebol/taxiservicios/beans/admin/expense/ManagerExpense.java @@ -8,6 +8,7 @@ package com.arrebol.taxiservicios.beans.admin.expense; import com.arrebol.taxiservicios.beans.Datatable; import com.arrebol.taxiservicios.beans.TaxiGenericBean; import com.arrebol.taxiservicios.controller.admin.BitacoraController; +import com.arrebol.taxiservicios.controller.admin.ClosingDayServiceImpl; import com.arrebol.taxiservicios.controller.admin.ExpenseController; import com.arrebol.taxiservicios.controller.admin.GenericValidationController; import com.arrebol.taxiservicios.controller.admin.TaxiController; @@ -50,550 +51,615 @@ import org.primefaces.event.RowEditEvent; @ViewScoped public class ManagerExpense extends TaxiGenericBean implements Serializable, Datatable { - public void fillExpenseDataTableBetweenDates() { - try { - if (getStartDate().after(getEndDate())) { - showMessage(FacesMessage.SEVERITY_ERROR, getBundlePropertyFile().getString("generic.start.date"), getBundlePropertyFile().getString("generic.end.date.error")); - } else { - setExpense(getController().fillExpenseDataTableBetweenDates(getStartDate(), getEndDate(), getLoggedUser().getLocation())); - } - } catch (Exception e) { - logger.error("", e); - } - } - - public void fillExpenseIniciosDataTableBetweenDates() { - try { - if (getStartDate().after(getEndDate())) { - showMessage(FacesMessage.SEVERITY_ERROR, getBundlePropertyFile().getString("generic.start.date"), getBundlePropertyFile().getString("generic.end.date.error")); - } else { - setExpenseInicios(getController().fillExpenseIniciosDataTableBetweenDates(getStartDate(), getEndDate(), getLoggedUser().getLocation())); - } - } catch (Exception e) { - logger.error("", e); - } - } - - @Override - public void editRow(RowEditEvent event) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - @Override - public void onRowCancel(RowEditEvent event) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - @Override - public void onRowReorder(ReorderEvent event) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - @Override - public void addRow() { - logger.info("add Expense"); - try { - if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Error", - "No se puede hacer ninguna acción si existe un corte del día"); - return; - } - if (getGenericController().existStableGeneralBoxByCurdate(getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Dia cerrado", - "No se pueden eliminar más registros porque ya existe un cuadre de caja chica del día"); - return; - } - getAddExpense().setId(UUID.randomUUID().toString()); - getAddExpense().setType(ExpenseType.DISABLED); - getAddExpense().setAmountMenudeo(0D); - getAddExpense().setIdExpenseType(new ExpenseIncomeCatalog(getExpenseIncomeId())); - getAddExpense().setLocation(getLoggedUser().getLocation()); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.HOUR, -6); - getAddExpense().setCreatedOn(calendar.getTime()); - getAddExpense().setPaymentDate(calendar.getTime()); - - getAddExpense().setLocationSend(getLoggedUser().getLocation()); - getAddExpense().setCommercialInvoiceStatus(BasicType.DISABLED); - getAddExpense().setPaid(BasicType.ENEBLED); - getAddExpense().setFinance(BasicType.ENEBLED); - getAddExpense().setStatus(ExpenseStatusType.AUTHORIZED); - - if (isDeposit()) { - getAddExpense().setDepositStatus(ExpenseStatusType.PENDING); - getAddExpense().setBankCard(new BankCard(getBankCardId())); - - }else{ - getAddExpense().setDepositStatus(ExpenseStatusType.AUTHORIZED); - } - - - boolean success = getController().addExpense( - getAddExpense(), - getLoggedUser().getId(), - null); - - if (success) { - - expense.clear(); - expense = getController().fillExpenseDatatableLeftJoin(); - addExpense = new Expense(); - - showMessage(FacesMessage.SEVERITY_INFO, - getBundlePropertyFile().getString("expense.add.title"), - getBundlePropertyFile().getString("expense.add.success.desc")); - } else { - logger.error("Expense " + getAddExpense() + " was not saved"); - showMessage(FacesMessage.SEVERITY_ERROR, - getBundlePropertyFile().getString("expense.add.title"), - getBundlePropertyFile().getString("expense.add.fail.desc")); - } - } catch (Exception e) { - logger.error("addExpense: " + e); - showMessage(FacesMessage.SEVERITY_FATAL, - getBundlePropertyFile().getString("expense.add.title"), - getBundlePropertyFile().getString("expense.add.exception.desc")); - } - } - - public void addInicioRow() { - logger.info("add Inicio Expense"); - try { - if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Error", - "No se puede hacer ninguna acción si existe un corte del día"); - return; - } - if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Dia cerrado", - "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); - return; - } - if (getGenericController().existStableGeneralBoxByCurdate(getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Dia cerrado", - "No se puede hacer ninguna acción porque ya existe un cuadre de caja general del día"); - return; - } - getAddInicioExpense().setId(UUID.randomUUID().toString()); - getAddInicioExpense().setType(ExpenseType.INICIO); - getAddInicioExpense().setFolio(""); - getAddInicioExpense().setAmountMenudeo(0D); - getAddInicioExpense().setStatus(ExpenseStatusType.AUTHORIZED); - getAddInicioExpense().setDepositStatus(ExpenseStatusType.AUTHORIZED); - getAddInicioExpense().setLastUpdatedBy(getLoggedUser()); - getAddInicioExpense().setLocation(getLoggedUser().getLocation()); - - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.HOUR, -6); - getAddInicioExpense().setCreatedOn(calendar.getTime()); - - getAddInicioExpense().setLocationSend(new Location(getLoggedUser().getLocation().getId())); - getAddInicioExpense().setPaid(BasicType.ENEBLED); - getAddInicioExpense().setFinance(BasicType.DISABLED); - getAddInicioExpense().setCommercialInvoiceStatus(BasicType.DISABLED); - - boolean success = getController().addExpense( - getAddInicioExpense(), - getUserInicioId(), - null); - - if (success) { - - expense.clear(); - setExpenseInicios(getController().fillExpenseInicios(getLoggedUser().getLocation().getId())); - setAddInicioExpense(new Expense()); - - showMessage(FacesMessage.SEVERITY_INFO, - getBundlePropertyFile().getString("expense.inicio.title"), - getBundlePropertyFile().getString("expense.inicio.success.desc")); - } else { - logger.error("Expense inicio" + getAddInicioExpense() + " was not saved"); - showMessage(FacesMessage.SEVERITY_ERROR, - getBundlePropertyFile().getString("expense.inicio.title"), - getBundlePropertyFile().getString("expense.inicio.fail.desc")); - } - - } catch (Exception e) { - logger.error("addExpense: " + e); - showMessage(FacesMessage.SEVERITY_FATAL, - getBundlePropertyFile().getString("expense.inicio.title"), - getBundlePropertyFile().getString("expense.inicio.exception.desc")); - } - } - - @Override - public void deleteRow() { - logger.info("deleteRow in Expense"); - try { - - if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Error", - "No se puede hacer ninguna acción si existe un corte del día"); - return; - } - if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Dia cerrado", - "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); - return; - } - - if (getSelectedExpense().getType().equals(ExpenseType.ABONO_FINANCIAMIENTO)) { - Taxi taxi = getSelectedExpense().getTaxi(); - taxi.setAdeudo((float) (taxi.getAdeudo() + getSelectedExpense().getPayment())); - getController().updateAdeudoTaxi(taxi); - - } - - if (getSelectedExpense().getType().equals(ExpenseType.PAGO_ORDEN_SERVICIO)) { - - getController().returnServiceOrder(getSelectedExpense(), getLoggedUser()); - getController().returnServiceOrderHasProduct(getSelectedExpense(), getLoggedUser()); - - } - - boolean success = getController().deleteExpenseById(getSelectedExpense().getId()); - - if (success) { - if (null == getCommentsBitacora() || getCommentsBitacora().trim().equals("")) { - setCommentsBitacora("El usuario " + getLoggedUser().getUserName() + " no agrego comentarios a la hora de borrar el Ingreso/Egreso"); - } - - String actionBitacora = "Eliminar Ingreso/Egreso"; - String descBitacora = "Se eliminó el Ingreso/Egreso, con el folio " + getSelectedExpense().getFolio() - + ", costo " + currencyFormatNumber(getSelectedExpense().getPayment()) - + ", tipo " + getSelectedExpense().getType().getType() - + ", estatus " + getSelectedExpense().getStatus().getStatus() - + " y fecha " + getSelectedExpense().getPaymentDate(); - - getBitacoraController().saveNewRecordInBitacora(createNewRecordInBitacora(UUID.randomUUID().toString(), actionBitacora, getCommentsBitacora(), descBitacora), - getLoggedUser().getLocation().getId()); - getExpense().remove(getSelectedExpense()); - - setSelectedExpense(null); - setCommentsBitacora(""); - - showMessage(FacesMessage.SEVERITY_INFO, - getBundlePropertyFile().getString("expense.delete.title"), - getBundlePropertyFile().getString("expense.delete.success.desc")); - } else { - logger.error("Expense " + getSelectedExpense() + "was not deleted"); - showMessage(FacesMessage.SEVERITY_ERROR, - getBundlePropertyFile().getString("expense.delete.title"), - getBundlePropertyFile().getString("expense.delete.fail.desc")); - } - - } catch (Exception e) { - logger.error("deleteRow: " + e); - - showMessage(FacesMessage.SEVERITY_FATAL, - getBundlePropertyFile().getString("expense.delete.title"), - getBundlePropertyFile().getString("expense.delete.exception.desc")); - } - } - - public void autorizarPendingExpense() { - logger.info("autorizarPendingExpense"); - - try { - - if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Error", - "No se puede hacer ninguna acción si existe un corte del día"); - return; - } - if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Dia cerrado", - "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); - return; - } - boolean success = getController().autorizarExpense(getSelectedExpense().getId(), getLoggedUser()); - - if (success) { - - BankCardKardex bankCardKardexObj = new BankCardKardex(); - - bankCardKardexObj.setBankCard(getSelectedExpense().getBankCard()); - bankCardKardexObj.setAmount(getSelectedExpense().getPayment()); - bankCardKardexObj.setAmountBefore(getSelectedExpense().getBankCard().getBalance()); - - if (getSelectedExpense().getIdExpenseType().getExpenseIncomeCatalogType().equals(ExpenseIncomeType.EARNING)) { - - bankCardKardexObj.setAmountAfter(bankCardKardexObj.getAmountBefore() + bankCardKardexObj.getAmount()); - bankCardKardexObj.setKardexType(BankCardKardexType.INCOME); - bankCardKardexObj.setDescription("Pago por gasto del tipo " + getSelectedExpense().getIdExpenseType().getName()); - - } else if (getSelectedExpense().getIdExpenseType().getExpenseIncomeCatalogType().equals(ExpenseIncomeType.EXPENSE)) { - - bankCardKardexObj.setAmountAfter(bankCardKardexObj.getAmountBefore() - bankCardKardexObj.getAmount()); - bankCardKardexObj.setKardexType(BankCardKardexType.EXPENSE); - bankCardKardexObj.setDescription("Cobro por gasto del tipo " + getSelectedExpense().getIdExpenseType().getName()); - - } - - bankCardKardexObj.setLocation(getSelectedExpense().getLocation()); - - BankCardKardexController bankCardKardexCtrl = new BankCardKardexController(); - bankCardKardexCtrl.save(bankCardKardexObj, getLoggedUser().getId()); - - BankCard bankCard = getSelectedExpense().getBankCard(); - - bankCard.setBalance(bankCardKardexObj.getAmountAfter()); - - BankCardController bankCardCtrl = new BankCardController(); - - bankCardCtrl.save(bankCard, getLoggedUser().getId()); - - setSelectedExpense(null); - - showMessage(FacesMessage.SEVERITY_INFO, - "Autorizar", - "Se autorizó correctamente"); - setExpensePending(getController().fillExpenseDataTablePendingDeposit(getLoggedUser().getLocation())); - } else { - logger.error("Sale " + getSelectedExpense() + "was not changed to no print"); - showMessage(FacesMessage.SEVERITY_ERROR, - "Autorizar", - "No se pudo autorizar"); - } - - } catch (Exception e) { - logger.error("autorizar: " + e); - - showMessage(FacesMessage.SEVERITY_FATAL, - getBundlePropertyFile().getString("sale.noprint.title"), - getBundlePropertyFile().getString("sale.noprint.exception.desc")); - } - - } - - public void autorizarRow() { - logger.info("autorizarRow in Expense"); - try { - - boolean success = getController().autorizarExpenseById(getSelectedExpense().getId()); - - if (success) { - expense.clear(); - expense = getController().fillExpenseDatatableLeftJoin(); - setSelectedExpense(null); - - showMessage(FacesMessage.SEVERITY_INFO, - getBundlePropertyFile().getString("expense.autorizar.title"), - getBundlePropertyFile().getString("expense.autorizar.success.desc")); - } else { - logger.error("Expense " + getSelectedExpense() + "was not autorizhed"); - showMessage(FacesMessage.SEVERITY_ERROR, - getBundlePropertyFile().getString("expense.autorizar.title"), - getBundlePropertyFile().getString("expense.autorizar.fail.desc")); - } - - } catch (Exception e) { - logger.error("autorizarRow: " + e); - - showMessage(FacesMessage.SEVERITY_FATAL, - getBundlePropertyFile().getString("expense.autorizar.title"), - getBundlePropertyFile().getString("expense.autorizar.exception.desc")); - } - } - - public void autorizarInicioRow() { - logger.info("autorizarInicioRow in Expense"); - try { - - boolean success = getController().autorizarExpenseById(getSelectedExpenseInicio().getId()); - - if (success) { - getExpenseInicios().clear(); - setExpenseInicios(getController().fillExpenseDatatableLeftJoin()); - setSelectedExpenseInicio(null); - - showMessage(FacesMessage.SEVERITY_INFO, - getBundlePropertyFile().getString("expense.autorizar.title"), - getBundlePropertyFile().getString("expense.autorizar.success.desc")); - } else { - logger.error("Expense " + getSelectedExpenseInicio() + "was not autorizhed"); - showMessage(FacesMessage.SEVERITY_ERROR, - getBundlePropertyFile().getString("expense.autorizar.title"), - getBundlePropertyFile().getString("expense.autorizar.fail.desc")); - } - - } catch (Exception e) { - logger.error("autorizarInicioRow: " + e); - - showMessage(FacesMessage.SEVERITY_FATAL, - getBundlePropertyFile().getString("expense.autorizar.title"), - getBundlePropertyFile().getString("expense.autorizar.exception.desc")); - } - } - - public void deleteInicioRow() { - logger.info("deleteInicioRow in Expense"); - try { - - if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Error", - "No se puede hacer ninguna acción si existe un corte del día"); - return; - } - if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Dia cerrado", - "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); - return; - } - if (getGenericController().existStableGeneralBoxByCurdate(getLoggedUser())) { - showMessage(FacesMessage.SEVERITY_WARN, - "Dia cerrado", - "No se puede hacer ninguna acción porque ya existe un cuadre de caja general del día"); - return; - } - boolean success = getController().deleteExpenseById(getSelectedExpenseInicio().getId()); - - if (success) { - if (null == getCommentsBitacora() || getCommentsBitacora().trim().equals("")) { - setCommentsBitacora("El usuario " + getLoggedUser().getUserName() + " no agrego comentarios a la hora de borrar el inicio"); - } - - String actionBitacora = "Eliminar Inicio"; - String descBitacora = "Se eliminó el Inicio con el mondo de " + currencyFormatNumber(getSelectedExpenseInicio().getPayment()) - + ", tipo " + getSelectedExpenseInicio().getType().getType() - + ", estatus " + getSelectedExpenseInicio().getStatus().getStatus() - + ", creado por " + getSelectedExpenseInicio().getCreatedBy().getPerson().getFirstName() - + " " + getSelectedExpenseInicio().getCreatedBy().getPerson().getLastName() - + " " + (null == getSelectedExpenseInicio().getCreatedBy().getPerson().getMiddleName() ? "" : getSelectedExpenseInicio().getCreatedBy().getPerson().getMiddleName()) - + " y fecha " + getSelectedExpenseInicio().getPaymentDate(); - - getBitacoraController().saveNewRecordInBitacora(createNewRecordInBitacora(UUID.randomUUID().toString(), actionBitacora, getCommentsBitacora(), descBitacora), - getLoggedUser().getLocation().getId()); - getExpenseInicios().remove(getSelectedExpenseInicio()); - - setSelectedExpenseInicio(null); - setCommentsBitacora(""); - - showMessage(FacesMessage.SEVERITY_INFO, - getBundlePropertyFile().getString("expense.inicio.title"), - getBundlePropertyFile().getString("expense.inicio.delete.success.desc")); - } else { - logger.error("Expense " + getSelectedExpenseInicio() + "was not deleted"); - showMessage(FacesMessage.SEVERITY_ERROR, - getBundlePropertyFile().getString("expense.inicio.title"), - getBundlePropertyFile().getString("expense.inicio.delete.fail.desc")); - } - - } catch (Exception e) { - logger.error("deleteInicioRow: " + e); - - showMessage(FacesMessage.SEVERITY_FATAL, - getBundlePropertyFile().getString("expense.inicio.title"), - getBundlePropertyFile().getString("expense.inicio.delete.exception.desc")); - } - } - - public ExpenseController getController() { - return controller; - } - - public void setController(ExpenseController controller) { - this.controller = controller; - } - - public List getExpense() { - return expense; - } - - public void setExpense(List expense) { - this.expense = expense; - } - - public String getTaxiId() { - return taxiId; - } - - public void setTaxiId(String taxiId) { - this.taxiId = taxiId; - } - - public Expense getSelectedExpense() { - return selectedExpense; - } - - public void setSelectedExpense(Expense selectedExpense) { - this.selectedExpense = selectedExpense; - } - - public List getTaxis() { - return getController().fillTaxisComboBox(); - } - - public Expense getAddExpense() { - return addExpense; - } - - public void setAddExpense(Expense addExpense) { - this.addExpense = addExpense; - } - - public String getTipo() { - return tipo; - } - - public void setTipo(String tipo) { - this.tipo = tipo; - } - - public GenericValidationController getGenericController() { - return genericController; - } - - public void setGenericController(GenericValidationController genericController) { - this.genericController = genericController; - } - - @PostConstruct - public void init() { - logger.info("init expense"); - try { - loadBundlePropertyFile(); - initOneWeekBeforeToCurrdate(); - setAddExpense(new Expense()); - setAddInicioExpense(new Expense()); - setController(new ExpenseController()); - setLocationController(new LocationController()); - setBankCardController(new BankCardController()); - setGenericController(new GenericValidationController()); - setTaxiController(new TaxiController()); - //setExpense(getController().fillExpenseDatatableLeftJoin()); + public void fillExpenseDataTableBetweenDates() { + try { + if (getStartDate().after(getEndDate())) { + showMessage(FacesMessage.SEVERITY_ERROR, getBundlePropertyFile().getString("generic.start.date"), getBundlePropertyFile().getString("generic.end.date.error")); + } else { setExpense(getController().fillExpenseDataTableBetweenDates(getStartDate(), getEndDate(), getLoggedUser().getLocation())); - setExpensePending(getController().fillExpenseDataTablePendingDeposit(getLoggedUser().getLocation())); - //setExpenseInicios(getController().fillExpenseInicios(getLoggedUser().getLocation().getId())); - setExpenseInicios(getController().fillExpenseIniciosDataTableBetweenDates(getStartDate(), getEndDate(), getLoggedUser().getLocation())); - setUsersInicio(getController().findAllSystemUserByLocation(getLoggedUser().getLocation())); - setBitacoraController(new BitacoraController()); - setLastStableGeneralBox(getGenericController().lastStableGeneralBoxByDate(getLoggedUser())); - setHayCuadre(getGenericController().existStableGeneralBoxByCurdate(getLoggedUser())); - setLastStableSmallBox(getGenericController().lastStableSmallBoxByDate(getLoggedUser())); - setHayCuadreSmall(getGenericController().existStableSmallBoxByCurdate(getLoggedUser())); - setLocations(getLocationController().fillLocationDatatable()); - setExpenseIncomeCatalogController(new ExpenseIncomeCatalogController()); - setExpenseIncomeCatalog(getExpenseIncomeCatalogController().findExpenseIncomeCatalogSmallBox()); - setBankCards(getBankCardController().findAllBankCardsByLocation(getLoggedUser().getLocation().getId())); - setDeposit(false); - } catch (Exception e) { - logger.error("init expense", e); - } - } + } + } catch (Exception e) { + logger.error("", e); + } + } - /* public void totalizador(){ + public void fillExpenseIniciosDataTableBetweenDates() { + try { + if (getStartDate().after(getEndDate())) { + showMessage(FacesMessage.SEVERITY_ERROR, getBundlePropertyFile().getString("generic.start.date"), getBundlePropertyFile().getString("generic.end.date.error")); + } else { + setExpenseInicios(getController().fillExpenseIniciosDataTableBetweenDates(getStartDate(), getEndDate(), getLoggedUser().getLocation())); + } + } catch (Exception e) { + logger.error("", e); + } + } + + @Override + public void editRow(RowEditEvent event) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void onRowCancel(RowEditEvent event) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void onRowReorder(ReorderEvent event) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void addRow() { + logger.info("add Expense"); + try { + if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Error", + "No se puede hacer ninguna acción si existe un corte del día"); + return; + } + if (getGenericController().existStableGeneralBoxByCurdate(getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Dia cerrado", + "No se pueden eliminar más registros porque ya existe un cuadre de caja chica del día"); + return; + } + getAddExpense().setId(UUID.randomUUID().toString()); + getAddExpense().setType(ExpenseType.DISABLED); + getAddExpense().setAmountMenudeo(0D); + getAddExpense().setIdExpenseType(new ExpenseIncomeCatalog(getExpenseIncomeId())); + getAddExpense().setLocation(getLoggedUser().getLocation()); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.HOUR, -6); + getAddExpense().setCreatedOn(calendar.getTime()); + getAddExpense().setPaymentDate(calendar.getTime()); + + getAddExpense().setLocationSend(getLoggedUser().getLocation()); + getAddExpense().setCommercialInvoiceStatus(BasicType.DISABLED); + getAddExpense().setPaid(BasicType.ENEBLED); + getAddExpense().setFinance(BasicType.ENEBLED); + getAddExpense().setStatus(ExpenseStatusType.AUTHORIZED); + + if (isDeposit()) { + getAddExpense().setDepositStatus(ExpenseStatusType.PENDING); + getAddExpense().setBankCard(new BankCard(getBankCardId())); + + } else { + getAddExpense().setDepositStatus(ExpenseStatusType.AUTHORIZED); + } + + boolean success = getController().addExpense( + getAddExpense(), + getLoggedUser().getId(), + null); + + if (success) { + + expense.clear(); + expense = getController().fillExpenseDatatableLeftJoin(); + addExpense = new Expense(); + + showMessage(FacesMessage.SEVERITY_INFO, + getBundlePropertyFile().getString("expense.add.title"), + getBundlePropertyFile().getString("expense.add.success.desc")); + } else { + logger.error("Expense " + getAddExpense() + " was not saved"); + showMessage(FacesMessage.SEVERITY_ERROR, + getBundlePropertyFile().getString("expense.add.title"), + getBundlePropertyFile().getString("expense.add.fail.desc")); + } + } catch (Exception e) { + logger.error("addExpense: " + e); + showMessage(FacesMessage.SEVERITY_FATAL, + getBundlePropertyFile().getString("expense.add.title"), + getBundlePropertyFile().getString("expense.add.exception.desc")); + } + } + + public void addInicioRow() { + logger.info("add Inicio Expense"); + try { + if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Error", + "No se puede hacer ninguna acción si existe un corte del día"); + return; + } + if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Dia cerrado", + "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); + return; + } + if (getGenericController().existStableGeneralBoxByCurdate(getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Dia cerrado", + "No se puede hacer ninguna acción porque ya existe un cuadre de caja general del día"); + return; + } + getAddInicioExpense().setId(UUID.randomUUID().toString()); + getAddInicioExpense().setType(ExpenseType.INICIO); + getAddInicioExpense().setFolio(""); + getAddInicioExpense().setAmountMenudeo(0D); + getAddInicioExpense().setStatus(ExpenseStatusType.AUTHORIZED); + getAddInicioExpense().setDepositStatus(ExpenseStatusType.AUTHORIZED); + getAddInicioExpense().setLastUpdatedBy(getLoggedUser()); + getAddInicioExpense().setLocation(getLoggedUser().getLocation()); + + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.HOUR, -6); + getAddInicioExpense().setCreatedOn(calendar.getTime()); + + getAddInicioExpense().setLocationSend(new Location(getLoggedUser().getLocation().getId())); + getAddInicioExpense().setPaid(BasicType.ENEBLED); + getAddInicioExpense().setFinance(BasicType.DISABLED); + getAddInicioExpense().setCommercialInvoiceStatus(BasicType.DISABLED); + + boolean success = getController().addExpense( + getAddInicioExpense(), + getUserInicioId(), + null); + + if (success) { + + expense.clear(); + setExpenseInicios(getController().fillExpenseInicios(getLoggedUser().getLocation().getId())); + setAddInicioExpense(new Expense()); + + showMessage(FacesMessage.SEVERITY_INFO, + getBundlePropertyFile().getString("expense.inicio.title"), + getBundlePropertyFile().getString("expense.inicio.success.desc")); + } else { + logger.error("Expense inicio" + getAddInicioExpense() + " was not saved"); + showMessage(FacesMessage.SEVERITY_ERROR, + getBundlePropertyFile().getString("expense.inicio.title"), + getBundlePropertyFile().getString("expense.inicio.fail.desc")); + } + + } catch (Exception e) { + logger.error("addExpense: " + e); + showMessage(FacesMessage.SEVERITY_FATAL, + getBundlePropertyFile().getString("expense.inicio.title"), + getBundlePropertyFile().getString("expense.inicio.exception.desc")); + } + } + + @Override + public void deleteRow() { + logger.info("deleteRow in Expense"); + try { + + if (new ClosingDayServiceImpl().existClosingDayByCreatedOn(correcciónDeHr(new Date(), -7), getSelectedExpense().getCreatedBy())) { + showMessage(FacesMessage.SEVERITY_WARN, "Error", "El usuario al que afectará la eliminación ya realizó su corte del día"); + return; + } + + if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Dia cerrado", + "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); + return; + } + + if (getSelectedExpense().getType().equals(ExpenseType.ABONO_FINANCIAMIENTO)) { + Taxi taxi = getSelectedExpense().getTaxi(); + taxi.setAdeudo((float) (taxi.getAdeudo() + getSelectedExpense().getPayment())); + getController().updateAdeudoTaxi(taxi); + + } + + if (getSelectedExpense().getType().equals(ExpenseType.PAGO_ORDEN_SERVICIO)) { + + getController().returnServiceOrder(getSelectedExpense(), getLoggedUser()); + getController().returnServiceOrderHasProduct(getSelectedExpense(), getLoggedUser()); + + } + + boolean success = getController().deleteExpenseById(getSelectedExpense().getId()); + + if (success) { + if (null == getCommentsBitacora() || getCommentsBitacora().trim().equals("")) { + setCommentsBitacora("El usuario " + getLoggedUser().getUserName() + " no agrego comentarios a la hora de borrar el Ingreso/Egreso"); + } + + String actionBitacora = "Eliminar Ingreso/Egreso"; + String descBitacora = "Se eliminó el Ingreso/Egreso, con el folio " + getSelectedExpense().getFolio() + + ", costo " + currencyFormatNumber(getSelectedExpense().getPayment()) + + ", tipo " + getSelectedExpense().getType().getType() + + ", estatus " + getSelectedExpense().getStatus().getStatus() + + " y fecha " + getSelectedExpense().getPaymentDate(); + + getBitacoraController().saveNewRecordInBitacora(createNewRecordInBitacora(UUID.randomUUID().toString(), actionBitacora, getCommentsBitacora(), descBitacora), + getLoggedUser().getLocation().getId()); + getExpense().remove(getSelectedExpense()); + + setSelectedExpense(null); + setCommentsBitacora(""); + + showMessage(FacesMessage.SEVERITY_INFO, + getBundlePropertyFile().getString("expense.delete.title"), + getBundlePropertyFile().getString("expense.delete.success.desc")); + } else { + logger.error("Expense " + getSelectedExpense() + "was not deleted"); + showMessage(FacesMessage.SEVERITY_ERROR, + getBundlePropertyFile().getString("expense.delete.title"), + getBundlePropertyFile().getString("expense.delete.fail.desc")); + } + + } catch (Exception e) { + logger.error("deleteRow: " + e); + + showMessage(FacesMessage.SEVERITY_FATAL, + getBundlePropertyFile().getString("expense.delete.title"), + getBundlePropertyFile().getString("expense.delete.exception.desc")); + } + } + + public void disableRow() { + logger.info("disableRow in Expense"); + try { + if (new ClosingDayServiceImpl().existClosingDayByCreatedOn(correcciónDeHr(new Date(), -7), getSelectedExpense().getCreatedBy())) { + showMessage(FacesMessage.SEVERITY_WARN, "Error", "El usuario al que afectará la devolución ya realizó su corte del día"); + return; + } + if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Dia cerrado", + "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); + return; + } + if (getSelectedExpense().getType().equals(ExpenseType.ABONO_FINANCIAMIENTO)) { + Taxi taxi = getSelectedExpense().getTaxi(); + taxi.setAdeudo((float) (taxi.getAdeudo() + getSelectedExpense().getPayment())); + getController().updateAdeudoTaxi(taxi); + } + if (getSelectedExpense().getType().equals(ExpenseType.PAGO_ORDEN_SERVICIO)) { + getController().returnServiceOrder(getSelectedExpense(), getLoggedUser()); + getController().returnServiceOrderHasProduct(getSelectedExpense(), getLoggedUser()); + } + boolean success = getController().disabledExpense(getSelectedExpense(), getLoggedUser()); + if (success) { + if (null == getCommentsBitacora() || getCommentsBitacora().trim().equals("")) { + setCommentsBitacora("El usuario " + getLoggedUser().getUserName() + " no agrego comentarios a la hora de deshabilitar el Ingreso/Egreso"); + } + String actionBitacora = "Deshabilitar Ingreso/Egreso"; + String descBitacora = "Se deshabilito el Ingreso/Egreso, con el folio " + getSelectedExpense().getFolio() + + ", costo " + currencyFormatNumber(getSelectedExpense().getPayment()) + + ", tipo " + getSelectedExpense().getType().getType() + + ", estatus " + getSelectedExpense().getStatus().getStatus() + + " y fecha " + getSelectedExpense().getPaymentDate(); + getBitacoraController().saveNewRecordInBitacora(createNewRecordInBitacora(UUID.randomUUID().toString(), actionBitacora, getCommentsBitacora(), descBitacora), getLoggedUser().getLocation().getId()); + fillExpenseDataTableBetweenDates(); + setSelectedExpense(null); + setCommentsBitacora(""); + showMessage(FacesMessage.SEVERITY_INFO, getBundlePropertyFile().getString("expense.disable.title"), getBundlePropertyFile().getString("expense.disable.success.desc")); + } else { + logger.error("Expense " + getSelectedExpense() + "was not disabled"); + showMessage(FacesMessage.SEVERITY_ERROR, getBundlePropertyFile().getString("expense.disable.title"), getBundlePropertyFile().getString("expense.disable.fail.desc")); + } + } catch (Exception e) { + logger.error("disableRow: " + e); + showMessage(FacesMessage.SEVERITY_FATAL, getBundlePropertyFile().getString("expense.disable.title"), getBundlePropertyFile().getString("expense.disable.exception.desc")); + } + } + + public void autorizarPendingExpense() { + logger.info("autorizarPendingExpense"); + + try { + + if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Error", + "No se puede hacer ninguna acción si existe un corte del día"); + return; + } + if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Dia cerrado", + "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); + return; + } + boolean success = getController().autorizarExpense(getSelectedExpense().getId(), getLoggedUser()); + + if (success) { + + BankCardKardex bankCardKardexObj = new BankCardKardex(); + + bankCardKardexObj.setBankCard(getSelectedExpense().getBankCard()); + bankCardKardexObj.setAmount(getSelectedExpense().getPayment()); + bankCardKardexObj.setAmountBefore(getSelectedExpense().getBankCard().getBalance()); + + if (getSelectedExpense().getIdExpenseType().getExpenseIncomeCatalogType().equals(ExpenseIncomeType.EARNING)) { + + bankCardKardexObj.setAmountAfter(bankCardKardexObj.getAmountBefore() + bankCardKardexObj.getAmount()); + bankCardKardexObj.setKardexType(BankCardKardexType.INCOME); + bankCardKardexObj.setDescription("Pago por gasto del tipo " + getSelectedExpense().getIdExpenseType().getName()); + + } else if (getSelectedExpense().getIdExpenseType().getExpenseIncomeCatalogType().equals(ExpenseIncomeType.EXPENSE)) { + + bankCardKardexObj.setAmountAfter(bankCardKardexObj.getAmountBefore() - bankCardKardexObj.getAmount()); + bankCardKardexObj.setKardexType(BankCardKardexType.EXPENSE); + bankCardKardexObj.setDescription("Cobro por gasto del tipo " + getSelectedExpense().getIdExpenseType().getName()); + + } + + bankCardKardexObj.setLocation(getSelectedExpense().getLocation()); + + BankCardKardexController bankCardKardexCtrl = new BankCardKardexController(); + bankCardKardexCtrl.save(bankCardKardexObj, getLoggedUser().getId()); + + BankCard bankCard = getSelectedExpense().getBankCard(); + + bankCard.setBalance(bankCardKardexObj.getAmountAfter()); + + BankCardController bankCardCtrl = new BankCardController(); + + bankCardCtrl.save(bankCard, getLoggedUser().getId()); + + setSelectedExpense(null); + + showMessage(FacesMessage.SEVERITY_INFO, + "Autorizar", + "Se autorizó correctamente"); + setExpensePending(getController().fillExpenseDataTablePendingDeposit(getLoggedUser().getLocation())); + } else { + logger.error("Sale " + getSelectedExpense() + "was not changed to no print"); + showMessage(FacesMessage.SEVERITY_ERROR, + "Autorizar", + "No se pudo autorizar"); + } + + } catch (Exception e) { + logger.error("autorizar: " + e); + + showMessage(FacesMessage.SEVERITY_FATAL, + getBundlePropertyFile().getString("sale.noprint.title"), + getBundlePropertyFile().getString("sale.noprint.exception.desc")); + } + + } + + public void autorizarRow() { + logger.info("autorizarRow in Expense"); + try { + + boolean success = getController().autorizarExpenseById(getSelectedExpense().getId()); + + if (success) { + expense.clear(); + expense = getController().fillExpenseDatatableLeftJoin(); + setSelectedExpense(null); + + showMessage(FacesMessage.SEVERITY_INFO, + getBundlePropertyFile().getString("expense.autorizar.title"), + getBundlePropertyFile().getString("expense.autorizar.success.desc")); + } else { + logger.error("Expense " + getSelectedExpense() + "was not autorizhed"); + showMessage(FacesMessage.SEVERITY_ERROR, + getBundlePropertyFile().getString("expense.autorizar.title"), + getBundlePropertyFile().getString("expense.autorizar.fail.desc")); + } + + } catch (Exception e) { + logger.error("autorizarRow: " + e); + + showMessage(FacesMessage.SEVERITY_FATAL, + getBundlePropertyFile().getString("expense.autorizar.title"), + getBundlePropertyFile().getString("expense.autorizar.exception.desc")); + } + } + + public void autorizarInicioRow() { + logger.info("autorizarInicioRow in Expense"); + try { + + boolean success = getController().autorizarExpenseById(getSelectedExpenseInicio().getId()); + + if (success) { + getExpenseInicios().clear(); + setExpenseInicios(getController().fillExpenseDatatableLeftJoin()); + setSelectedExpenseInicio(null); + + showMessage(FacesMessage.SEVERITY_INFO, + getBundlePropertyFile().getString("expense.autorizar.title"), + getBundlePropertyFile().getString("expense.autorizar.success.desc")); + } else { + logger.error("Expense " + getSelectedExpenseInicio() + "was not autorizhed"); + showMessage(FacesMessage.SEVERITY_ERROR, + getBundlePropertyFile().getString("expense.autorizar.title"), + getBundlePropertyFile().getString("expense.autorizar.fail.desc")); + } + + } catch (Exception e) { + logger.error("autorizarInicioRow: " + e); + + showMessage(FacesMessage.SEVERITY_FATAL, + getBundlePropertyFile().getString("expense.autorizar.title"), + getBundlePropertyFile().getString("expense.autorizar.exception.desc")); + } + } + + public void deleteInicioRow() { + logger.info("deleteInicioRow in Expense"); + try { + + if (getGenericController().existClosingDayByCreatedOn(new Date(), getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Error", + "No se puede hacer ninguna acción si existe un corte del día"); + return; + } + if (getGenericController().existStableSmallBoxByCurdate(getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Dia cerrado", + "No se puede hacer ninguna acción porque ya existe un cuadre de caja chica del día"); + return; + } + if (getGenericController().existStableGeneralBoxByCurdate(getLoggedUser())) { + showMessage(FacesMessage.SEVERITY_WARN, + "Dia cerrado", + "No se puede hacer ninguna acción porque ya existe un cuadre de caja general del día"); + return; + } + boolean success = getController().deleteExpenseById(getSelectedExpenseInicio().getId()); + + if (success) { + if (null == getCommentsBitacora() || getCommentsBitacora().trim().equals("")) { + setCommentsBitacora("El usuario " + getLoggedUser().getUserName() + " no agrego comentarios a la hora de borrar el inicio"); + } + + String actionBitacora = "Eliminar Inicio"; + String descBitacora = "Se eliminó el Inicio con el mondo de " + currencyFormatNumber(getSelectedExpenseInicio().getPayment()) + + ", tipo " + getSelectedExpenseInicio().getType().getType() + + ", estatus " + getSelectedExpenseInicio().getStatus().getStatus() + + ", creado por " + getSelectedExpenseInicio().getCreatedBy().getPerson().getFirstName() + + " " + getSelectedExpenseInicio().getCreatedBy().getPerson().getLastName() + + " " + (null == getSelectedExpenseInicio().getCreatedBy().getPerson().getMiddleName() ? "" : getSelectedExpenseInicio().getCreatedBy().getPerson().getMiddleName()) + + " y fecha " + getSelectedExpenseInicio().getPaymentDate(); + + getBitacoraController().saveNewRecordInBitacora(createNewRecordInBitacora(UUID.randomUUID().toString(), actionBitacora, getCommentsBitacora(), descBitacora), + getLoggedUser().getLocation().getId()); + getExpenseInicios().remove(getSelectedExpenseInicio()); + + setSelectedExpenseInicio(null); + setCommentsBitacora(""); + + showMessage(FacesMessage.SEVERITY_INFO, + getBundlePropertyFile().getString("expense.inicio.title"), + getBundlePropertyFile().getString("expense.inicio.delete.success.desc")); + } else { + logger.error("Expense " + getSelectedExpenseInicio() + "was not deleted"); + showMessage(FacesMessage.SEVERITY_ERROR, + getBundlePropertyFile().getString("expense.inicio.title"), + getBundlePropertyFile().getString("expense.inicio.delete.fail.desc")); + } + + } catch (Exception e) { + logger.error("deleteInicioRow: " + e); + + showMessage(FacesMessage.SEVERITY_FATAL, + getBundlePropertyFile().getString("expense.inicio.title"), + getBundlePropertyFile().getString("expense.inicio.delete.exception.desc")); + } + } + + public String validarColorPagoPoliza(String estatus) { + switch (estatus) { + case "DISABLED": + return "bgGray"; + case "PENDING": + return "datatableRowLittle"; + default: + return "bgWhite"; + } + } + + private Date correcciónDeHr(Date fecha, int horas) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(fecha); + calendar.add(Calendar.HOUR_OF_DAY, horas); + Date nuevaFecha = calendar.getTime(); + return nuevaFecha; + } + + public ExpenseController getController() { + return controller; + } + + public void setController(ExpenseController controller) { + this.controller = controller; + } + + public List getExpense() { + return expense; + } + + public void setExpense(List expense) { + this.expense = expense; + } + + public String getTaxiId() { + return taxiId; + } + + public void setTaxiId(String taxiId) { + this.taxiId = taxiId; + } + + public Expense getSelectedExpense() { + return selectedExpense; + } + + public void setSelectedExpense(Expense selectedExpense) { + this.selectedExpense = selectedExpense; + } + + public List getTaxis() { + return getController().fillTaxisComboBox(); + } + + public Expense getAddExpense() { + return addExpense; + } + + public void setAddExpense(Expense addExpense) { + this.addExpense = addExpense; + } + + public String getTipo() { + return tipo; + } + + public void setTipo(String tipo) { + this.tipo = tipo; + } + + public GenericValidationController getGenericController() { + return genericController; + } + + public void setGenericController(GenericValidationController genericController) { + this.genericController = genericController; + } + + @PostConstruct + public void init() { + logger.info("init expense"); + try { + loadBundlePropertyFile(); + initOneWeekBeforeToCurrdate(); + setAddExpense(new Expense()); + setAddInicioExpense(new Expense()); + setController(new ExpenseController()); + setLocationController(new LocationController()); + setBankCardController(new BankCardController()); + setGenericController(new GenericValidationController()); + setTaxiController(new TaxiController()); + //setExpense(getController().fillExpenseDatatableLeftJoin()); + setExpense(getController().fillExpenseDataTableBetweenDates(getStartDate(), getEndDate(), getLoggedUser().getLocation())); + setExpensePending(getController().fillExpenseDataTablePendingDeposit(getLoggedUser().getLocation())); + //setExpenseInicios(getController().fillExpenseInicios(getLoggedUser().getLocation().getId())); + setExpenseInicios(getController().fillExpenseIniciosDataTableBetweenDates(getStartDate(), getEndDate(), getLoggedUser().getLocation())); + setUsersInicio(getController().findAllSystemUserByLocation(getLoggedUser().getLocation())); + setBitacoraController(new BitacoraController()); + setLastStableGeneralBox(getGenericController().lastStableGeneralBoxByDate(getLoggedUser())); + setHayCuadre(getGenericController().existStableGeneralBoxByCurdate(getLoggedUser())); + setLastStableSmallBox(getGenericController().lastStableSmallBoxByDate(getLoggedUser())); + setHayCuadreSmall(getGenericController().existStableSmallBoxByCurdate(getLoggedUser())); + setLocations(getLocationController().fillLocationDatatable()); + setExpenseIncomeCatalogController(new ExpenseIncomeCatalogController()); + setExpenseIncomeCatalog(getExpenseIncomeCatalogController().findExpenseIncomeCatalogSmallBox()); + setBankCards(getBankCardController().findAllBankCardsByLocation(getLoggedUser().getLocation().getId())); + setDeposit(false); + } catch (Exception e) { + logger.error("init expense", e); + } + } + + /* public void totalizador(){ totalEgreso = 0D; totalIngreso = 0D; if(getExpense() != null && !getExpense().isEmpty()){ @@ -602,276 +668,276 @@ public class ManagerExpense extends TaxiGenericBean implements Serializable, Dat } } }*/ - private static final long serialVersionUID = 6305656544028190083L; + private static final long serialVersionUID = 6305656544028190083L; - final Logger logger = LogManager.getLogger(ManagerExpense.class); + final Logger logger = LogManager.getLogger(ManagerExpense.class); - private ExpenseController controller; - private GenericValidationController genericController; - private List expense; - private List expensePending; - private String taxiId; - private Expense selectedExpense; - private Expense addExpense; - private List expenseInicios; - private Expense selectedExpenseInicio; - private String tipo; - private String userInicioId; - private List usersInicio; - private Expense addInicioExpense; - private BitacoraController bitacoraController; - private String commentsBitacora; - private Date startDate; - private Date endDate; - private Date lastStableGeneralBox; - private boolean hayCuadre; - private Date lastStableSmallBox; - private boolean hayCuadreSmall; - private double totalIngreso; - private double totalEgreso; - private boolean deposit; - private String bankCardId; - private BankCardController bankCardController; - private List bankCards; + private ExpenseController controller; + private GenericValidationController genericController; + private List expense; + private List expensePending; + private String taxiId; + private Expense selectedExpense; + private Expense addExpense; + private List expenseInicios; + private Expense selectedExpenseInicio; + private String tipo; + private String userInicioId; + private List usersInicio; + private Expense addInicioExpense; + private BitacoraController bitacoraController; + private String commentsBitacora; + private Date startDate; + private Date endDate; + private Date lastStableGeneralBox; + private boolean hayCuadre; + private Date lastStableSmallBox; + private boolean hayCuadreSmall; + private double totalIngreso; + private double totalEgreso; + private boolean deposit; + private String bankCardId; + private BankCardController bankCardController; + private List bankCards; - private List locations; - private String locationId; - private LocationController locationController; - private TaxiController taxiController; + private List locations; + private String locationId; + private LocationController locationController; + private TaxiController taxiController; - private ExpenseIncomeCatalogController expenseIncomeCatalogController; + private ExpenseIncomeCatalogController expenseIncomeCatalogController; - private String expenseIncomeId; - private List expenseIncomeCatalog; + private String expenseIncomeId; + private List expenseIncomeCatalog; - public BankCardController getBankCardController() { - return bankCardController; - } + public BankCardController getBankCardController() { + return bankCardController; + } - public void setBankCardController(BankCardController bankCardController) { - this.bankCardController = bankCardController; - } + public void setBankCardController(BankCardController bankCardController) { + this.bankCardController = bankCardController; + } - public List getBankCards() { - return bankCards; - } + public List getBankCards() { + return bankCards; + } - public void setBankCards(List bankCards) { - this.bankCards = bankCards; - } + public void setBankCards(List bankCards) { + this.bankCards = bankCards; + } - public List getLocations() { - return locations; - } + public List getLocations() { + return locations; + } - public void setLocations(List locations) { - this.locations = locations; - } + public void setLocations(List locations) { + this.locations = locations; + } - public String getLocationId() { - return locationId; - } + public String getLocationId() { + return locationId; + } - public void setLocationId(String locationId) { - this.locationId = locationId; - } + public void setLocationId(String locationId) { + this.locationId = locationId; + } - public LocationController getLocationController() { - return locationController; - } + public LocationController getLocationController() { + return locationController; + } - public void setLocationController(LocationController locationController) { - this.locationController = locationController; - } + public void setLocationController(LocationController locationController) { + this.locationController = locationController; + } - public double getTotalIngreso() { - return totalIngreso; - } + public double getTotalIngreso() { + return totalIngreso; + } - public void setTotalIngreso(double totalIngreso) { - this.totalIngreso = totalIngreso; - } + public void setTotalIngreso(double totalIngreso) { + this.totalIngreso = totalIngreso; + } - public double getTotalEgreso() { - return totalEgreso; - } + public double getTotalEgreso() { + return totalEgreso; + } - public void setTotalEgreso(double totalEgreso) { - this.totalEgreso = totalEgreso; - } + public void setTotalEgreso(double totalEgreso) { + this.totalEgreso = totalEgreso; + } - private void initOneWeekBeforeToCurrdate() { - try { - Calendar start = Calendar.getInstance(); + private void initOneWeekBeforeToCurrdate() { + try { + Calendar start = Calendar.getInstance(); - start.set(Calendar.WEEK_OF_YEAR, start.get(Calendar.WEEK_OF_YEAR) - 1); - start.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + start.set(Calendar.WEEK_OF_YEAR, start.get(Calendar.WEEK_OF_YEAR) - 1); + start.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); - setStartDate(start.getTime()); - setEndDate(DateWrapper.getTodayMXTime()); - } catch (Exception e) { + setStartDate(start.getTime()); + setEndDate(DateWrapper.getTodayMXTime()); + } catch (Exception e) { - } - } + } + } - public TaxiController getTaxiController() { - return taxiController; - } + public TaxiController getTaxiController() { + return taxiController; + } - public void setTaxiController(TaxiController taxiController) { - this.taxiController = taxiController; - } + public void setTaxiController(TaxiController taxiController) { + this.taxiController = taxiController; + } - public Date getLastStableGeneralBox() { - return lastStableGeneralBox; - } + public Date getLastStableGeneralBox() { + return lastStableGeneralBox; + } - public void setLastStableGeneralBox(Date lastStableGeneralBox) { - this.lastStableGeneralBox = lastStableGeneralBox; - } + public void setLastStableGeneralBox(Date lastStableGeneralBox) { + this.lastStableGeneralBox = lastStableGeneralBox; + } - public boolean isHayCuadre() { - return hayCuadre; - } + public boolean isHayCuadre() { + return hayCuadre; + } - public void setHayCuadre(boolean hayCuadre) { - this.hayCuadre = hayCuadre; - } + public void setHayCuadre(boolean hayCuadre) { + this.hayCuadre = hayCuadre; + } - public List getExpenseInicios() { - return expenseInicios; - } + public List getExpenseInicios() { + return expenseInicios; + } - public void setExpenseInicios(List expenseInicios) { - this.expenseInicios = expenseInicios; - } + public void setExpenseInicios(List expenseInicios) { + this.expenseInicios = expenseInicios; + } - public Expense getSelectedExpenseInicio() { - return selectedExpenseInicio; - } + public Expense getSelectedExpenseInicio() { + return selectedExpenseInicio; + } - public Date getLastStableSmallBox() { - return lastStableSmallBox; - } + public Date getLastStableSmallBox() { + return lastStableSmallBox; + } - public void setLastStableSmallBox(Date lastStableSmallBox) { - this.lastStableSmallBox = lastStableSmallBox; - } + public void setLastStableSmallBox(Date lastStableSmallBox) { + this.lastStableSmallBox = lastStableSmallBox; + } - public boolean isHayCuadreSmall() { - return hayCuadreSmall; - } + public boolean isHayCuadreSmall() { + return hayCuadreSmall; + } - public void setHayCuadreSmall(boolean hayCuadreSmall) { - this.hayCuadreSmall = hayCuadreSmall; - } + public void setHayCuadreSmall(boolean hayCuadreSmall) { + this.hayCuadreSmall = hayCuadreSmall; + } - public void setSelectedExpenseInicio(Expense selectedExpenseInicio) { - this.selectedExpenseInicio = selectedExpenseInicio; - } + public void setSelectedExpenseInicio(Expense selectedExpenseInicio) { + this.selectedExpenseInicio = selectedExpenseInicio; + } - public String getUserInicioId() { - return userInicioId; - } + public String getUserInicioId() { + return userInicioId; + } - public void setUserInicioId(String userInicioId) { - this.userInicioId = userInicioId; - } + public void setUserInicioId(String userInicioId) { + this.userInicioId = userInicioId; + } - public List getUsersInicio() { - return usersInicio; - } + public List getUsersInicio() { + return usersInicio; + } - public void setUsersInicio(List usersInicio) { - this.usersInicio = usersInicio; - } + public void setUsersInicio(List usersInicio) { + this.usersInicio = usersInicio; + } - public Expense getAddInicioExpense() { - return addInicioExpense; - } + public Expense getAddInicioExpense() { + return addInicioExpense; + } - public void setAddInicioExpense(Expense addInicioExpense) { - this.addInicioExpense = addInicioExpense; - } + public void setAddInicioExpense(Expense addInicioExpense) { + this.addInicioExpense = addInicioExpense; + } - public BitacoraController getBitacoraController() { - return bitacoraController; - } + public BitacoraController getBitacoraController() { + return bitacoraController; + } - public void setBitacoraController(BitacoraController bitacoraController) { - this.bitacoraController = bitacoraController; - } + public void setBitacoraController(BitacoraController bitacoraController) { + this.bitacoraController = bitacoraController; + } - public String getCommentsBitacora() { - return commentsBitacora; - } + public String getCommentsBitacora() { + return commentsBitacora; + } - public void setCommentsBitacora(String commentsBitacora) { - this.commentsBitacora = commentsBitacora; - } + public void setCommentsBitacora(String commentsBitacora) { + this.commentsBitacora = commentsBitacora; + } - public Date getStartDate() { - return startDate; - } + public Date getStartDate() { + return startDate; + } - public void setStartDate(Date startDate) { - this.startDate = startDate; - } + public void setStartDate(Date startDate) { + this.startDate = startDate; + } - public Date getEndDate() { - return endDate; - } + public Date getEndDate() { + return endDate; + } - public void setEndDate(Date endDate) { - this.endDate = endDate; - } + public void setEndDate(Date endDate) { + this.endDate = endDate; + } - public ExpenseIncomeCatalogController getExpenseIncomeCatalogController() { - return expenseIncomeCatalogController; - } + public ExpenseIncomeCatalogController getExpenseIncomeCatalogController() { + return expenseIncomeCatalogController; + } - public void setExpenseIncomeCatalogController(ExpenseIncomeCatalogController expenseIncomeCatalogController) { - this.expenseIncomeCatalogController = expenseIncomeCatalogController; - } + public void setExpenseIncomeCatalogController(ExpenseIncomeCatalogController expenseIncomeCatalogController) { + this.expenseIncomeCatalogController = expenseIncomeCatalogController; + } - public String getExpenseIncomeId() { - return expenseIncomeId; - } + public String getExpenseIncomeId() { + return expenseIncomeId; + } - public void setExpenseIncomeId(String expenseIncomeId) { - this.expenseIncomeId = expenseIncomeId; - } + public void setExpenseIncomeId(String expenseIncomeId) { + this.expenseIncomeId = expenseIncomeId; + } - public List getExpenseIncomeCatalog() { - return expenseIncomeCatalog; - } + public List getExpenseIncomeCatalog() { + return expenseIncomeCatalog; + } - public void setExpenseIncomeCatalog(List expenseIncomeCatalog) { - this.expenseIncomeCatalog = expenseIncomeCatalog; - } + public void setExpenseIncomeCatalog(List expenseIncomeCatalog) { + this.expenseIncomeCatalog = expenseIncomeCatalog; + } - public boolean isDeposit() { - return deposit; - } + public boolean isDeposit() { + return deposit; + } - public void setDeposit(boolean deposit) { - this.deposit = deposit; - } + public void setDeposit(boolean deposit) { + this.deposit = deposit; + } - public String getBankCardId() { - return bankCardId; - } + public String getBankCardId() { + return bankCardId; + } - public void setBankCardId(String bankCardId) { - this.bankCardId = bankCardId; - } + public void setBankCardId(String bankCardId) { + this.bankCardId = bankCardId; + } - public List getExpensePending() { - return expensePending; - } + public List getExpensePending() { + return expensePending; + } - public void setExpensePending(List expensePending) { - this.expensePending = expensePending; - } + public void setExpensePending(List expensePending) { + this.expensePending = expensePending; + } } diff --git a/crov-prase-web/src/main/resources/com/arrebol/taxiservicios/i18n/taxi_background.properties b/crov-prase-web/src/main/resources/com/arrebol/taxiservicios/i18n/taxi_background.properties index 494f009..768759f 100644 --- a/crov-prase-web/src/main/resources/com/arrebol/taxiservicios/i18n/taxi_background.properties +++ b/crov-prase-web/src/main/resources/com/arrebol/taxiservicios/i18n/taxi_background.properties @@ -273,6 +273,12 @@ expense.delete.title=Eliminaci\u00f3n de gasto expense.delete.success.desc=Se elimin\u00f3 el gasto correctamente. expense.delete.fail.desc=No se pudo eliminar el gasto. expense.delete.exception.desc=Ocurrio un error al eliminar el gasto. + +expense.disable.title=Deshabilitar de gasto +expense.disable.success.desc=Se deshabilito el gasto correctamente. +expense.disable.fail.desc=No se pudo deshabilitar el gasto. +expense.disable.exception.desc=Ocurrio un error al deshabilitar el gasto. + expense.autorizar.title=Autorizar gasto expense.autorizar.success.desc=Se autoriz\u00f3 el gasto correctamente. expense.autorizar.fail.desc=No se pudo autorizar el gasto. diff --git a/crov-prase-web/src/main/webapp/app/admin/sale/expenseInvoice.xhtml b/crov-prase-web/src/main/webapp/app/admin/sale/expenseInvoice.xhtml index 5bac37c..a4b1be9 100644 --- a/crov-prase-web/src/main/webapp/app/admin/sale/expenseInvoice.xhtml +++ b/crov-prase-web/src/main/webapp/app/admin/sale/expenseInvoice.xhtml @@ -10,6 +10,17 @@ + + #{i18n.project} - #{grant['admin.sale.name']} @@ -69,11 +80,11 @@ rowsPerPageTemplate="5,10,25,50,100" emptyMessage="#{i18n['menu.admin.expense.datatable.empty']}" rowKey="#{expense.id}" - rowStyleClass="#{expense.status eq 'PENDING' ? 'datatableRowLittle' : null}" selection="#{managerExpense.selectedExpense}" editable="true" selectionMode="single" paginator="true" rows="10" - paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"> + paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}" + rowStyleClass="#{managerExpense.validarColorPagoPoliza(expense.status)}">
@@ -82,7 +93,7 @@
- + + + + + + @@ -130,14 +146,31 @@ class="ui-button-icon-only red-btn" title="Eliminar" id="ctxMenuItem3" - rendered="#{loginBean.isUserInRole('admin.income.expenses.delete') and expense.getAction(managerExpense.lastStableSmallBox) and !managerExpense.hayCuadreSmall}" + rendered="#{loginBean.isUserInRole('admin.income.expenses.delete') and expense.getAction(managerExpense.lastStableSmallBox) + and !managerExpense.hayCuadreSmall + and expense.status eq 'AUTHORIZED'}" update="confirmForm:globalConfirmMsg" onclick="PF('deleteEventBitacoraIngresoEgreso').show();"> + + + + @@ -175,6 +208,35 @@ + + + +

+ + + + + + +

+
+ +
+
+
+ @@ -239,7 +301,7 @@

- +

@@ -248,7 +310,7 @@

- +