/**
* 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;
}
}