/** * TNTConcept Easy Enterprise Management by Autentia Real Bussiness Solution S.L. * Copyright (C) 2007 Autentia Real Bussiness Solution S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.autentia.tnt.manager.billing; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.autentia.tnt.businessobject.Bill; import com.autentia.tnt.businessobject.BillState; import com.autentia.tnt.businessobject.CreditTitle; import com.autentia.tnt.businessobject.CreditTitleState; import com.autentia.tnt.dao.SortCriteria; import com.autentia.tnt.dao.hibernate.BillDAO; import com.autentia.tnt.dao.hibernate.CreditTitleDAO; import com.autentia.tnt.dao.search.BillSearch; import com.autentia.tnt.dao.search.CreditTitleSearch; import com.autentia.tnt.util.ConfigurationUtil; import com.autentia.tnt.util.SpringUtils; public class CreditTitleManager { /* CreditTitle - generated by stajanov (do not edit/delete) */ /** Logger */ private static final Log log = LogFactory.getLog(CreditTitleManager.class); /** CreditTitle DAO **/ private CreditTitleDAO creditTitleDAO; private BillDAO billDAO; /** * Get default CreditTitleManager as defined in Spring's configuration file. * @return the default singleton CreditTitleManager */ public static CreditTitleManager getDefault() { return (CreditTitleManager)SpringUtils.getSpringBean("managerCreditTitle"); } /** * Empty constructor needed by CGLIB (Spring AOP) */ protected CreditTitleManager() { } /** * Default constructor * @deprecated do not construct managers alone: use Spring's declared beans */ public CreditTitleManager( CreditTitleDAO creditTitleDAO, BillDAO billDAO ) { this.creditTitleDAO = creditTitleDAO; this.billDAO = billDAO; } /** * List creditTitles. * @param search search filter to apply * @param sort sorting criteria * @return the list of all creditTitles sorted by requested criterion */ public List<CreditTitle> getAllEntities(CreditTitleSearch search, SortCriteria sort){ return creditTitleDAO.search( search, sort ); } /** * Get creditTitle by primary key. * @return creditTitle selected by id. */ public CreditTitle getEntityById(int id){ return creditTitleDAO.getById(id); } /** * Insert creditTitle. */ public void insertEntity(CreditTitle creditTitle) { creditTitleDAO.insert(creditTitle); } /** * Update creditTitle. */ public void updateEntity(CreditTitle creditTitle) { //se recupera un listado de facturas correspondientes a los pagarés payBillIfRequired(creditTitle); creditTitleDAO.update(creditTitle); } private void payBillIfRequired(final CreditTitle creditTitle){ if(checkIfPayBillIfRequired(creditTitle)){ for(Bill bill : creditTitle.getBills()){ bill.setState(BillState.PAID); BillManager.getDefault().updateEntity(bill); } } } private boolean checkIfPayBillIfRequired(final CreditTitle creditTitle){ if(creditTitle.getState().equals(CreditTitleState.PAID)){ if (ConfigurationUtil.getDefault().getPayBillsWhenCreditTitleIsPaid()){ return true; } } return false; } /** * Delete creditTitle. */ public void deleteEntity(CreditTitle creditTitle) { creditTitleDAO.delete(creditTitle); } /* CreditTitle - generated by stajanov (do not edit/delete) */ /** * Get a list of bills between start and end dates * @param search * @param sort * @param start * @param end * @return */ public List<CreditTitle> getAllEntities(CreditTitleSearch search, SortCriteria sort, Date start, Date end){ List<CreditTitle> res = creditTitleDAO.search( search, sort ); List<CreditTitle> list = new ArrayList<CreditTitle>(); Calendar calendar = Calendar.getInstance(); // Recorremos la lista de CreditTitle for ( CreditTitle item : res ) { if (item.getIssueDate() != null) { // Metemos en el calendar la fecha del item calendar.setTime( item.getIssueDate() ); // Si la fecha está dentro del rango de fechas seleccionado se añade a la lista con la fecha calculada del próximo pago if ( (calendar.getTimeInMillis() >= start.getTime()) && (calendar.getTimeInMillis() <= end.getTime()) ) { // Añadimos a la lista list.add( item); } } } return list; } }