/** * 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.bean.billing; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; import java.util.Set; import javax.faces.component.UIComponent; import javax.faces.component.UIData; import javax.faces.component.html.HtmlDataTable; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import javax.faces.event.ValueChangeEvent; import javax.faces.model.SelectItem; import org.acegisecurity.acls.domain.BasePermission; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.myfaces.custom.fileupload.UploadedFile; import com.autentia.tnt.bean.BaseBean; import com.autentia.tnt.bean.NavigationResults; import com.autentia.tnt.bean.account.AccountEntryBean; import com.autentia.tnt.businessobject.Account; import com.autentia.tnt.businessobject.AccountEntry; import com.autentia.tnt.businessobject.Bill; import com.autentia.tnt.businessobject.BillBreakDown; import com.autentia.tnt.businessobject.BillPayment; import com.autentia.tnt.businessobject.BillPaymentMode; import com.autentia.tnt.businessobject.BillState; import com.autentia.tnt.businessobject.BillType; import com.autentia.tnt.businessobject.Contact; import com.autentia.tnt.businessobject.CreditTitle; import com.autentia.tnt.businessobject.Organization; import com.autentia.tnt.businessobject.Project; import com.autentia.tnt.dao.SortCriteria; import com.autentia.tnt.dao.search.BillSearch; import com.autentia.tnt.dao.search.ContactSearch; import com.autentia.tnt.manager.account.AccountEntryManager; import com.autentia.tnt.manager.account.AccountManager; import com.autentia.tnt.manager.admin.ProjectManager; import com.autentia.tnt.manager.billing.BillBreakDownManager; import com.autentia.tnt.manager.billing.BillManager; import com.autentia.tnt.manager.contacts.ContactManager; import com.autentia.tnt.manager.contacts.OrganizationManager; import com.autentia.tnt.manager.security.Permission; import com.autentia.tnt.upload.Uploader; import com.autentia.tnt.upload.UploaderFactory; import com.autentia.tnt.util.ConfigurationUtil; import com.autentia.tnt.util.FacesUtils; import com.autentia.tnt.util.FileUtil; import com.autentia.tnt.util.IvaApplicator; import com.autentia.tnt.util.SpringUtils; /** * UI bean for Bill objects. * * @author stajanov code generator */ public class BillBean extends BaseBean { private int year = Calendar.getInstance().get(Calendar.YEAR); private boolean CREATE_BILL_PAYMENT = true; private boolean DONT_CREATE_BILL_PAYMENT = false; private static int ALL_YEARS = 0; public int getYear() { return year; } public void setYear(int year) { this.year = year; } public static int getMaximumYears() { return ConfigurationUtil.getDefault().getAccountEntryMaximumYears(); } public List<SelectItem> getYears() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); FacesContext context = FacesContext.getCurrentInstance(); Locale locale = context.getViewRoot().getLocale(); ResourceBundle bundle = ResourceBundle.getBundle( "com.autentia.tnt.resources.messages", locale); Date fecha = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(fecha); int actual = cal.get(Calendar.YEAR); ret.add(new SelectItem(Integer.valueOf(actual), bundle .getString("bill.fiscalYear.now"))); ret.add(new SelectItem(Integer.valueOf(ALL_YEARS), bundle .getString("bill.fiscalYear.all"))); for (int i = 1; i < getMaximumYears(); i++) { ret.add(new SelectItem(Integer.valueOf(actual - i), "" + (actual - i))); } return ret; } public Organization getProvider() { return bill.getProvider(); } public void setProvider( Organization provider ) { bill.setProvider( provider ); } public Organization getSearchProvider(){ return search.getProvider(); } public void setSearchProvider( Organization val ){ if( search.isProviderSet() ) { search.setProvider( val ); } } public boolean isSearchProviderValid(){ return search.isProviderSet(); } public void setSearchProviderValid( boolean val ){ if( val ){ search.setProvider( search.getProvider() ); } else { search.unsetProvider(); } } /** * Get the list of all providers * @return the list of all providers */ public List<SelectItem> getProviders(){ List<Organization> refs = OrganizationManager.getDefault().getProvidersAndClients(); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for( Organization ref : refs ){ ret.add( new SelectItem( ref, ref.getName() ) ); } return ret; } public boolean getPuedoBuscarBitacore() { return (bill.getBillType() == BillType.ISSUED) && (bill.getId() != null); } public String searchInBitacore() { if (bill.getId() == null) return save(); return NavigationResults.BILL_SEARCH_IN_BITACORE; } public List<SelectItem> getAccounts() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Account> refs = AccountManager.getDefault().getAllEntities(null,new SortCriteria("name")); for (Account ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } BillType selectedType = BillType.ISSUED; private CreditTitle creditTitle = new CreditTitle(); public CreditTitle getCreditTitle() { return creditTitle; } public void setCreditTitle(CreditTitle creditTitle) { this.creditTitle = creditTitle; } /** * Get the list of all BillType values * * @return the list of all BillType values */ public List<SelectItem> getBillTypes() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); BillType[] vals = BillType.values(); for (BillType val : vals) { ret.add(new SelectItem(val, FacesUtils.formatMessage("BillType." + val.name()))); } return ret; } public Contact getContact() { return bill.getContact(); } public void setContact(Contact contact) { bill.setContact(contact); } public BillType getBillType() { return bill.getBillType(); } public void setBillType(BillType billType) { bill.setBillType(billType); } public String getOrderNumber() { return bill.getOrderNumber(); } public void setOrderNumber(String orderNumber) { bill.setOrderNumber(orderNumber); } public Contact getSearchContact() { return search.getContact(); } public void setSearchContact(Contact val) { if (search.isContactSet()) { search.setContact(val); } } public boolean isSearchContactValid() { return search.isContactSet(); } public void setSearchContactValid(boolean val) { if (val) { search.setContact(search.getContact()); } else { search.unsetContact(); } } /** * Get the list of all contacts * * @return the list of all contacts */ public List<SelectItem> getContacts() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Contact> refs = ContactManager.getDefault().getAllEntities(null,new SortCriteria("name")); for (Contact ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public String getSearchOrderNumber() { return search.getOrderNumber(); } public void setSearchOrderNumber(String val) { if (search.isOrderNumberSet()) { search.setOrderNumber(val); } } public boolean isSearchOrderNumberValid() { return search.isOrderNumberSet(); } public void setSearchOrderNumberValid(boolean val) { if (val) { search.setOrderNumber(search.getOrderNumber()); } else { search.unsetOrderNumber(); } } /** Serial version field */ private static final long serialVersionUID = -1L; private BigDecimal totals; private BigDecimal totalsNoTaxes; private BigDecimal totalsTaxes; private BigDecimal totalsUnpaid; public BigDecimal getTotals() { return totals; } public void setTotals(BigDecimal total) { this.totals = total; } public BigDecimal getTotal() { return bill.getTotal(); } public BigDecimal getBillPaymentTotal() { return bill.getBillPaymentTotal(); } public BigDecimal getTotalNoTaxes() { return bill.getTotalNoTaxes(); } // reloads the page to update the total of the bill public String reloadTotal() { return null; } public BigDecimal getTotalsNoTaxes() { return totalsNoTaxes; } public void setTotalsNoTaxes(BigDecimal totalsNoTaxes) { this.totalsNoTaxes = totalsNoTaxes; } public BigDecimal getTotalsTaxes() { return totalsTaxes; } public void setTotalsTaxes(BigDecimal totalsTaxes) { this.totalsTaxes = totalsTaxes; } public BigDecimal getTotalsUnpaid() { return totalsUnpaid; } public void setTotalsUnpaid(BigDecimal totalsUnpaid) { this.totalsUnpaid = totalsUnpaid; } private void calcTotals(List<Bill> res) { BigDecimal totals = new BigDecimal(0); BigDecimal totalsNoTaxes = new BigDecimal(0); BigDecimal totalsUnpaid = new BigDecimal(0); for (Bill elem : res) { totals = totals.add(elem.getTotal()); totalsNoTaxes = totalsNoTaxes.add(elem.getTotalNoTaxes()); totalsUnpaid = totalsUnpaid.add(elem.getUnpaid()); } setTotals(totals); setTotalsNoTaxes(totalsNoTaxes); setTotalsTaxes(totals.subtract(totalsNoTaxes)); setTotalsUnpaid(totalsUnpaid); } /** Selected organization * */ private Organization selectedOrganization = null; private Integer idSelectedOrganization = 0; public Organization getSelectedOrganization() { if (bill != null && bill.getProject() != null) { selectedOrganization = bill.getProject().getClient(); return selectedOrganization; } if (selectedOrganization == null) { selectedOrganization = OrganizationManager.getDefault().getMyOrganization(); } return selectedOrganization; } public void setSelectedOrganization(Organization organization) { selectedOrganization = organization; if(bill!=null) { Project project = bill.getProject(); if (project != null) { project.setClient(organization); } } } public Integer getIdSelectedOrganization() { idSelectedOrganization = ConfigurationUtil.getDefault().getIdOurCompany(); return idSelectedOrganization; } public void setIdSelectedOrganization(Integer idOrganization) { idSelectedOrganization = idOrganization; } public List<SelectItem> getProjectsBySelectedOrganization() { List<Project> refs = ProjectManager.getDefault().getProjectsByOrganization(selectedOrganization); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); ret.add(new SelectItem(null, FacesUtils.getMessage("bill.allProjects"))); for (Object ref : refs) { Project proy = (Project) ref; String asterisco = proy.isFinished() ? "(*)" : ""; ret.add(new SelectItem(proy, proy.getName() + asterisco)); } return ret; } public List<SelectItem> getContactsBySelectedOrganization() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); ContactSearch cs = new ContactSearch(); cs.setOrganization(getSelectedOrganization()); List<Contact> refs = ContactManager.getDefault().getAllEntities(cs,new SortCriteria("name")); for (Contact ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } // Añadiendo el campo vacio ret.add(0, new SelectItem("")); return ret; } public List<SelectItem> getProjectsOpenBySelectedOrganization() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Project> refs = null; if(bill.getId()!=null){ refs = ProjectManager.getDefault().getProjectsByOrganization(selectedOrganization); }else{ refs = ProjectManager.getDefault().getOpenProjectsByOrganization(selectedOrganization); } for (Project proy : refs) { String asterisco = proy.isFinished() ? "(*)" : ""; ret.add(new SelectItem(proy, proy.getName() + asterisco)); } return ret; } public void onSelectedOrganizationChanged(ValueChangeEvent event) { setSelectedOrganization((Organization) event.getNewValue()); FacesUtils.renderResponse(); } public void onSelectedOrganizationSearchChanged(ValueChangeEvent event) { Organization now = (Organization) event.getNewValue(); if (now == null) return; setSearchProjectValid(true); setSelectedOrganization(now); FacesUtils.renderResponse(); } public void onEditSelected(ActionEvent event) { setSelectedOrganization(null); } /** * Get the list of all projects * * @return the list of all projects */ public List<SelectItem> getOpenprojects() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Project> refs = ProjectManager.getDefault().getAllEntities(null,new SortCriteria("name")); for (Project proy : refs) { ret.add(new SelectItem(proy, proy.getName())); } return ret; } public String unselect() { int idEntry = Integer.parseInt(FacesUtils .getRequestParameter("idEntry")); int id = bill.getId(); bill.getEntries().remove(AccountEntryManager.getDefault().getEntityById(idEntry)); save(); bill = manager.getEntityById(id); return NavigationResults.EDIT; } /** * Get the list of all categoriass * * @return the list of all categoriass */ public List<SelectItem> getEntriess() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<AccountEntry> refs = AccountEntryManager.getDefault().getAllEntities(null,new SortCriteria("concept")); for (AccountEntry ref : refs) { ret.add(new SelectItem(ref, ref.getConcept())); } return ret; } /** * Get the list of all projects * * @return the list of all projects */ public List<SelectItem> getProjects() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Project> refs = ProjectManager.getDefault().getAllEntities(null,new SortCriteria("name")); for (Project ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public Set<AccountEntry> getEntries() { return bill.getEntries(); } public void setEntries(Set<AccountEntry> entries) { bill.setEntries(entries); } public String searchEntries() { AccountEntryBean bean = (AccountEntryBean) FacesUtils .getBean("accountEntryBean"); bean.setBill(bill); setBill(bill); return NavigationResults.BILL_SEARCH_ENTRIES; } /** * Get the list of all organizations * * @return the list of all organizations */ public List<SelectItem> getOrganizations() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Organization> refs = OrganizationManager.getDefault().getAllEntities(null,new SortCriteria("name")); for (Organization ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /* bill - generated by stajanov (do not edit/delete) */ /** Logger */ private static final Log log = LogFactory.getLog(BillBean.class); /** Upload service */ private static final Uploader uploader = UploaderFactory .getInstance("bill"); /** Temporary file field */ private String oldFile; /** Uploaded file object */ private UploadedFile uploadFile; /** Active Bill object */ private Bill bill; /** Active search object */ private BillSearch search = new BillSearch(); /** Manager */ private static BillManager manager = BillManager.getDefault(); /** Quick search letter for ABC pager control */ private Character letter; /** Default sort column */ private String sortColumn = "creationDate"; /** Default sort order */ private boolean sortAscending = false; /** Handle an ABC pager letter click: filter objects by specified starting letter */ public void letterClicked() { if( letter!=null ){ UIComponent comp = FacesUtils.getComponent("bills:list"); HtmlDataTable tabla = (HtmlDataTable) comp; tabla.setFirst(0); search.setName( letter+"%" ); } else { search.unsetName(); } } public Character getLetter() { return letter; } public void setLetter( Character letter ) { this.letter = letter; } /** * List bills. Order depends on Faces parameter sort. * * @return the list of all bills sorted by requested criterion */ public List<Bill> getAll() { if( year==ALL_YEARS ){ search.unsetYear(); } else { search.setYear(year); } search.setBillType(getSelectedType()); search.unsetCreditTitle(); //Organización seleccionada en la búsqueda search.setProjects(manager.getProjectsByOrganization(selectedOrganization)); List<Bill> res = null; res = manager.getAllEntities(search, new SortCriteria(sortColumn, sortAscending)); calcTotals(res); return res; } // Getters to list possible values of related entities // Getters to list possible values of enum fields // Getters to list possible values of enum fields public String getPaymentModeFormatted() { return FacesUtils.formatMessage("BillPaymentMode." + this.getPaymentMode().name()); } /** * Get the list of all PaymentMode values * * @return the list of all PaymentMode values */ public List<SelectItem> getPaymentModes() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); BillPaymentMode[] vals = BillPaymentMode.values(); for (BillPaymentMode val : vals) { ret.add(new SelectItem(val, FacesUtils .formatMessage("BillPaymentMode." + val.name()))); } return ret; } public String getStateFormatted() { return FacesUtils.formatMessage("BillState." + this.getState().name()); } /** * Get the list of all State values * * @return the list of all State values */ public List<SelectItem> getStates() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); BillState[] vals = BillState.values(); for (BillState val : vals) { ret.add(new SelectItem(val, FacesUtils.formatMessage("BillState." + val.name()))); } return ret; } // Methods to create/remove instances of one-to-many entities (slave // entities) /** * Go to create page * * @return forward to CREATE page */ public String create() { bill = new Bill(); bill.setCreationDate(new Date()); bill.setStartBillDate(new Date()); bill.setEndBillDate(new Date()); bill.setBillType(getSelectedType()); selectedOrganization = null; return NavigationResults.CREATE; } /** * Go to edit page * * @return forward to EDIT page */ public String edit() { Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) ); bill = manager.getEntityById(id); return NavigationResults.EDIT; } public String returnToEdit() { BillManager.getDefault().calculateBillIsPaid(bill); return edit(); } public List<Bill> getAllMinusCreditTitle() { if( year==ALL_YEARS ){ search.unsetYear(); } else { search.setYear(year); } search.setCreditTitle(creditTitle); search.setBillType(selectedType); return manager.getAllMinusCreditTitle(search, new SortCriteria(sortColumn, sortAscending)); } /** * Save bean and stay on it * * @return forward to list page */ public String save() { if( bill.getId()==null ) { manager.insertEntity(bill); } else { manager.updateEntity(bill); } // Handle uploads for file field if (uploadFile != null) { try { uploader.replace(Integer.toString(bill.getId()), oldFile, uploadFile); } catch (IOException e) { log.error("save - exception uploading field file", e); FacesUtils.addErrorMessage("file", "error.fileTransfer", e.getMessage()); } } //FacesUtils.addInfoMessage("billType", "bill.saveBillOK"); return NavigationResults.EDIT; } /** * Delete bean and go back to beans list * * @return forward to LIST page */ public String delete() { manager.deleteEntity(bill); bill = null; return NavigationResults.LIST; } /** * Go back to beans list * * @return forward to LIST page */ public String list() { return NavigationResults.LIST; } /** * Go to search page * * @return forward to SEARCH page */ public String search() { return NavigationResults.SEARCH; } /** * Check if we have an active object. * * @return true is an object is selected */ public boolean isBillSelected() { return bill != null; } // Getters and setters to manipulate sorting public boolean isSortAscending() { return sortAscending; } public void setSortAscending(boolean sortAscending) { this.sortAscending = sortAscending; } public String getSortColumn() { return sortColumn; } public void setSortColumn(String sortColumn) { this.sortColumn = sortColumn; } // Getters and setters to handle search public Date getSearchStartCreationDate() { return search.getStartCreationDate(); } public void setSearchStartCreationDate(Date val) { if (val != null) { search.setStartCreationDate(val); } else { search.unsetStartCreationDate(); } } public boolean isSearchStartCreationDateValid() { return search.isStartCreationDateSet(); } public void setSearchStartCreationDateValid(boolean val) { if (val) { search.setStartCreationDate(search.getStartCreationDate()); } else { search.unsetStartCreationDate(); } } public Date getSearchEndCreationDate() { return search.getEndCreationDate(); } public void setSearchEndCreationDate(Date val) { if (val != null) { search.setEndCreationDate(val); } else { search.unsetEndCreationDate(); } } public boolean isSearchEndCreationDateValid() { return search.isEndCreationDateSet(); } public void setSearchEndCreationDateValid(boolean val) { if (val) { search.setEndCreationDate(search.getEndCreationDate()); } else { search.unsetEndCreationDate(); } } public Date getSearchStartExpiration() { return search.getStartExpiration(); } public void setSearchStartExpiration(Date val) { if (val != null) { search.setStartExpiration(val); } else { search.unsetStartExpiration(); } } public boolean isSearchStartExpirationValid() { return search.isStartExpirationSet(); } public void setSearchStartExpirationValid(boolean val) { if (val) { search.setStartExpiration(search.getStartExpiration()); } else { search.unsetStartExpiration(); } } public Date getSearchEndExpiration() { return search.getEndExpiration(); } public void setSearchEndExpiration(Date val) { if (val != null) { search.setEndExpiration(val); } else { search.unsetEndExpiration(); } } public boolean isSearchEndExpirationValid() { return search.isEndExpirationSet(); } public void setSearchEndExpirationValid(boolean val) { if (val) { search.setEndExpiration(search.getEndExpiration()); } else { search.unsetEndExpiration(); } } public BillPaymentMode getSearchPaymentMode() { return search.getPaymentMode(); } public void setSearchPaymentMode(BillPaymentMode val) { if (search.isPaymentModeSet()) { search.setPaymentMode(val); } } public boolean isSearchPaymentModeValid() { return search.isPaymentModeSet(); } public void setSearchPaymentModeValid(boolean val) { if (val) { search.setPaymentMode(search.getPaymentMode()); } else { search.unsetPaymentMode(); } } public BillState getSearchState() { return search.getState(); } public void setSearchState(BillState val) { if (search.isStateSet()) { search.setState(val); } } public boolean isSearchStateValid() { return search.isStateSet(); } public void setSearchStateValid(boolean val) { if (val) { search.setState(search.getState()); } else { search.unsetState(); } } public String getSearchNumber() { return search.getNumber(); } public void setSearchNumber(String val) { if (search.isNumberSet()) { search.setNumber(val); } } public boolean isSearchNumberValid() { return search.isNumberSet(); } public void setSearchNumberValid(boolean val) { if (val) { search.setNumber(search.getNumber()); } else { search.unsetNumber(); } } public String getSearchBookNumber() { return search.getBookNumber(); } public void setSearchBookNumber(String val) { if (search.isBookNumberSet()) { search.setBookNumber(val); } } public boolean isSearchBookNumberValid() { return search.isBookNumberSet(); } public void setSearchBookNumberValid(boolean val) { if (val) { search.setBookNumber(search.getBookNumber()); } else { search.unsetBookNumber(); } } public String getSearchName() { return search.getName(); } public void setSearchName(String val) { if (search.isNameSet()) { search.setName(val); } } public boolean isSearchNameValid() { return search.isNameSet(); } public void setSearchNameValid(boolean val) { if (val) { search.setName(search.getName()); } else { search.unsetName(); } } public String getSearchFile() { return search.getFile(); } public void setSearchFile(String val) { if (search.isFileSet()) { search.setFile(val); } } public boolean isSearchFileValid() { return search.isFileSet(); } public void setSearchFileValid(boolean val) { if (val) { search.setFile(search.getFile()); } else { search.unsetFile(); } } public String getSearchFileMime() { return search.getFileMime(); } public void setSearchFileMime(String val) { if (search.isFileMimeSet()) { search.setFileMime(val); } } public boolean isSearchFileMimeValid() { return search.isFileMimeSet(); } public void setSearchFileMimeValid(boolean val) { if (val) { search.setFileMime(search.getFileMime()); } else { search.unsetFileMime(); } } public Project getSearchProject() { return search.getProject(); } public void setSearchProject(Project val) { if (search.isProjectSet()) { search.setProject(val); } } public boolean isSearchProjectValid() { return search.isProjectSet(); } public void setSearchProjectValid(boolean val) { if (val) { search.setProject(search.getProject()); } else { search.unsetProject(); } } // Getters and setters to handle uploads public void setUploadFile(UploadedFile uploadFile) { if (uploadFile != null) { oldFile = bill.getFile(); this.uploadFile = uploadFile; setFile(FileUtil.getFileName(uploadFile.getName())); setFileMime(uploadFile.getContentType()); } } public UploadedFile getUploadFile() { return uploadFile; } // Getters and setters to manipulate active Bill object public java.lang.Integer getId() { return bill.getId(); } public Date getCreationDate() { return bill.getCreationDate(); } public void setCreationDate(Date creationDate) { bill.setCreationDate(creationDate); } public BillPaymentMode getPaymentMode() { return bill.getPaymentMode(); } public void setPaymentMode(BillPaymentMode paymentMode) { bill.setPaymentMode(paymentMode); } public BillState getState() { return bill.getState(); } public void setState(BillState state) { bill.setState(state); } public String getNumber() { return bill.getNumber(); } public void setNumber(String number) { bill.setNumber(number); } public String getBookNumber() { return bill.getBookNumber(); } public void setBookNumber(String bookNumber) { bill.setBookNumber(bookNumber); } public String getName() { return bill.getName(); } public void setName(String name) { bill.setName(name); } public String getFile() { return bill.getFile(); } public void setFile(String file) { bill.setFile(file); } public String getFileMime() { return bill.getFileMime(); } public void setFileMime(String fileMime) { bill.setFileMime(fileMime); } public String getObservations() { return bill.getObservations(); } public void setObservations(String observations) { bill.setObservations(observations); } public Project getProject() { return bill.getProject(); } public void setProject(Project project) { bill.setProject(project); } public Bill getBill() { return bill; } public void setBill(Bill bill) { this.bill = bill; } public BillSearch getSearch() { return search; } /* bill - generated by stajanov (do not edit/delete) */ /* * Create a new empty instance of the one-to-many field @return forward to * the same page */ public String createBreakDown() { BillBreakDown item = new BillBreakDown(); item.setBill(bill); IvaApplicator.applyIvaToTaxableObject(bill.getCreationDate(), item); item.setUnits(new BigDecimal(1)); if (bill.getBreakDown() == null) { bill.setBreakDown(new HashSet()); } bill.getBreakDown().add(item); return null; } public String createBillPayment() { final BillPayment item = new BillPayment(); item.setBill(bill); if (bill.getBillPayment() == null) { bill.setBillPayment(new HashSet()); } bill.getBillPayment().add(item); return null; } /** * Delete selected instance of the one-to-many field * * @return forward to the same page */ public String deleteBreakDown() { UIData table = (UIData) FacesUtils.getComponent("bill:breakDown"); bill.getBreakDown().remove(table.getRowData()); return null; } public String deleteBillPayment() { UIData table = (UIData) FacesUtils.getComponent("bill:payment"); bill.getBillPayment().remove(table.getRowData()); return null; } /** * Get the list of all breakDowns * * @return the list of all breakDowns */ public List<SelectItem> getBreakDowns() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<BillBreakDown> refs = BillBreakDownManager.getDefault().getAllEntities(null,new SortCriteria("concept")); for (BillBreakDown ref : refs) { ret.add(new SelectItem(ref, ref.getConcept())); } return ret; } List<BillBreakDown> bitacoreBreakDowns = null; public List<BillBreakDown> getAllBitacoreBreakDowns() { List<BillBreakDown> desgloses = manager.getAllBitacoreBreakDowns(getStartBillDate(),getEndBillDate(), getProject()); setBitacoreBreakDowns(desgloses); return desgloses; } public List<BillBreakDown> getSearchBreakDown() { return getSearch().getBreakDown(); } public void setSearchBreakDown(List<BillBreakDown> val) { if (search.isBreakDownSet()) { search.setBreakDown(val); } } public boolean isSearchBreakDownValid() { return search.isBreakDownSet(); } public void setSearchBreakDownValid(boolean val) { if (val) { search.setBreakDown(search.getBreakDown()); } else { search.unsetBreakDown(); } } public Set<BillBreakDown> getBreakDown() { return bill.getBreakDown(); } public void setBreakDown(Set<BillBreakDown> breakDown) { bill.setBreakDown(breakDown); } public Set<BillPayment> getBillPayment() { return bill.getBillPayment(); } public void setBillPayment(Set<BillPayment> breakDown) { bill.setBillPayment(breakDown); } public Date getSearchStartStartBillDate() { return search.getStartStartBillDate(); } public void setSearchStartStartBillDate(Date val) { if (val != null) { search.setStartStartBillDate(val); } else { search.unsetStartStartBillDate(); } } public boolean isSearchStartStartBillDateValid() { return search.isStartStartBillDateSet(); } public void setSearchStartStartBillDateValid(boolean val) { if (val) { search.setStartStartBillDate(search.getStartStartBillDate()); } else { search.unsetStartStartBillDate(); } } public Date getSearchEndStartBillDate() { return search.getEndStartBillDate(); } public void setSearchEndStartBillDate(Date val) { if (val != null) { search.setEndStartBillDate(val); } else { search.unsetEndStartBillDate(); } } public boolean isSearchEndStartBillDateValid() { return search.isEndStartBillDateSet(); } public void setSearchEndStartBillDateValid(boolean val) { if (val) { search.setEndStartBillDate(search.getEndStartBillDate()); } else { search.unsetEndStartBillDate(); } } public Date getSearchStartEndBillDate() { return search.getStartEndBillDate(); } public void setSearchStartEndBillDate(Date val) { if (val != null) { search.setStartEndBillDate(val); } else { search.unsetStartEndBillDate(); } } public boolean isSearchStartEndBillDateValid() { return search.isStartEndBillDateSet(); } public void setSearchStartEndBillDateValid(boolean val) { if (val) { search.setStartEndBillDate(search.getStartEndBillDate()); } else { search.unsetStartEndBillDate(); } } public Date getSearchEndEndBillDate() { return search.getEndEndBillDate(); } public void setSearchEndEndBillDate(Date val) { if (val != null) { search.setEndEndBillDate(val); } else { search.unsetEndEndBillDate(); } } public boolean isSearchEndEndBillDateValid() { return search.isEndEndBillDateSet(); } public void setSearchEndEndBillDateValid(boolean val) { if (val) { search.setEndEndBillDate(search.getEndEndBillDate()); } else { search.unsetEndEndBillDate(); } } public Date getStartBillDate() { return bill.getStartBillDate(); } public void setStartBillDate(Date startBillDate) { bill.setStartBillDate(startBillDate); } public Date getEndBillDate() { return bill.getEndBillDate(); } public void setEndBillDate(Date endBillDate) { bill.setEndBillDate(endBillDate); } public BillType getSelectedType() { return selectedType; } public void setSelectedType(BillType selectedType) { this.selectedType = selectedType; } public boolean getPuedoImprimir() { return (bill.getBillType() == BillType.ISSUED) && (bill.getId() != null); } public boolean getPuedoPintarProvider() { return (getSelectedType() == BillType.RECIEVED); } public boolean isReceivedBillType() { return (bill != null && (bill.getBillType() == BillType.RECIEVED)); } public Account getSelectedAccount() { return bill.getAccount(); } public void setSelectedAccount(Account selectedAccount) { bill.setAccount(selectedAccount); } public String importBitacore() { for (BillBreakDown bbd : getBitacoreBreakDowns()) { if (bbd.isSelected()) { BillBreakDown item = new BillBreakDown(); item.setConcept(bbd.getConcept()); item.setBill(bill); item.setIva(bbd.getIva()); item.setAmount(bbd.getAmount()); item.setUnits(bbd.getUnits()); if (bill.getBreakDown() == null) { bill.setBreakDown(new HashSet()); } bill.getBreakDown().add(item); } } return NavigationResults.IMPORT_BITACORE; } public List<BillBreakDown> getBitacoreBreakDowns() { return bitacoreBreakDowns; } public void setBitacoreBreakDowns(List<BillBreakDown> bitacoreBreakDowns) { this.bitacoreBreakDowns = bitacoreBreakDowns; } /** * Whether or not create button is available for user * @return true if user can create objects of type Bill */ public boolean isCreateAvailable() { return SpringUtils.isRolePermissionGranted(Permission.Entity_Create(Bill.class)); } /** * Whether or not edit button is available for user * @return true if user can edit current object */ public boolean isEditAvailable() { return SpringUtils.isAclPermissionGranted(bill,BasePermission.WRITE); } /** * Whether or not delete button is available for user * @return true if user can delete current object */ public boolean isDeleteAvailable() { return (bill.getId()!=null) && SpringUtils.isAclPermissionGranted(bill,BasePermission.DELETE); } /** * Go to detail page * @return forward to DETAIL page */ public String detail(){ Integer id = Integer.parseInt( FacesUtils.getRequestParameter(ROW_ID) ); bill = manager.getEntityById(id); return SpringUtils.isAclPermissionGranted( bill, BasePermission.WRITE ) ? NavigationResults.EDIT : NavigationResults.DETAIL; } /** * Reset search criteria * @return forward to LIST page */ public String reset(){ search.reset(); return list(); } public String select() { Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID)); bill = manager.getEntityById(id); CreditTitleBean bean = (CreditTitleBean) FacesUtils.getBean("creditTitleBean"); manager.insertBillInCreditTitle(bill, bean.getCreditTitle(), CREATE_BILL_PAYMENT); bean.getBills().add(bill); bean.save(); return NavigationResults.CREDIT_TITLE_SEARCH_BILLS; } public String selectWitoutBillPayment() { Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID)); bill = manager.getEntityById(id); CreditTitleBean bean = (CreditTitleBean) FacesUtils.getBean("creditTitleBean"); manager.insertBillInCreditTitle(bill, bean.getCreditTitle(), DONT_CREATE_BILL_PAYMENT); bean.getBills().add(bill); bean.save(); return NavigationResults.CREDIT_TITLE_SEARCH_BILLS; } public Date getExpiration() { if (bill != null && bill.getExpiration() != null) { final Calendar calendar = Calendar.getInstance(); calendar.setTime(bill.getExpiration()); calendar.add(Calendar.DATE, 1); return calendar.getTime(); } return null; } public void setExpiration(Date date) { // do nothing } /** * @return Devuelve la cantidad pendiente de ser pagada */ public BigDecimal getUnpaid(){ return bill.getUnpaid(); } }