/** * 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.contacts; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.faces.component.UIComponent; import javax.faces.component.UIData; import javax.faces.component.html.HtmlDataTable; 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 com.autentia.tnt.bean.BaseBean; import com.autentia.tnt.bean.NavigationResults; import com.autentia.tnt.bean.billing.BillBean; import com.autentia.tnt.businessobject.Bill; import com.autentia.tnt.businessobject.Contact; import com.autentia.tnt.businessobject.Interaction; import com.autentia.tnt.businessobject.Offer; import com.autentia.tnt.businessobject.OfferCost; import com.autentia.tnt.businessobject.OfferPotential; import com.autentia.tnt.businessobject.OfferRejectReason; import com.autentia.tnt.businessobject.OfferRole; import com.autentia.tnt.businessobject.OfferState; import com.autentia.tnt.businessobject.Organization; import com.autentia.tnt.businessobject.User; import com.autentia.tnt.dao.SortCriteria; import com.autentia.tnt.dao.search.ContactSearch; import com.autentia.tnt.dao.search.OfferSearch; import com.autentia.tnt.manager.admin.UserManager; import com.autentia.tnt.manager.billing.BillManager; import com.autentia.tnt.manager.contacts.ContactManager; import com.autentia.tnt.manager.contacts.InteractionManager; import com.autentia.tnt.manager.contacts.OfferCostManager; import com.autentia.tnt.manager.contacts.OfferManager; import com.autentia.tnt.manager.contacts.OfferRejectReasonManager; import com.autentia.tnt.manager.contacts.OfferRoleManager; 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.IvaApplicator; import com.autentia.tnt.util.SpringUtils; public class OfferBean extends BaseBean { private static final long serialVersionUID = 14353454354355L; /** Logger */ /** Active search object */ private OfferSearch search = new OfferSearch(); /** Manager */ private static OfferManager manager = OfferManager.getDefault(); private static BillManager billManager = BillManager.getDefault(); /** Upload service */ private static final Uploader uploader = UploaderFactory.getInstance("offer"); /** Active Offer object */ private Offer offer; /** Default sort column */ private String sortColumn = "creationDate"; /** Default sort order */ private boolean sortAscending = false; /** Quick search letter for ABC pager control */ private Character letter; private String showSubreportRole = "NO"; private String showSubreportCost = "NO"; private static final Log log = LogFactory.getLog(OfferBean.class); public OfferBean () { search.setOfferState(OfferState.OPEN); } /** * List offers. Order depends on Faces parameter sort. * * @return the list of all offers sorted by requested criterion */ public List<Offer> getAll() { return manager.getAllEntities(search, new SortCriteria(sortColumn, sortAscending)); } // Getters to list possible values of related entities /** * Get the list of all users * * @return the list of all users */ public List<SelectItem> getUsers() { List<User> refs = UserManager.getDefault().getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (User ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all contacts * * @return the list of all contacts */ public List<SelectItem> getContacts() { List<Contact> refs = ContactManager.getDefault().getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (Contact ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all interactionss * * @return the list of all interactionss */ public List<SelectItem> getInteractionss() { List<Interaction> refs = InteractionManager.getDefault().getAllEntities(null, new SortCriteria("creationDate")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (Interaction ref : refs) { ret.add(new SelectItem(ref, ref.getDescription())); } return ret; } /** * Get the list of all roless * * @return the list of all roless */ public List<SelectItem> getRoless() { List<OfferRole> refs = OfferRoleManager.getDefault().getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (OfferRole ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all costss * * @return the list of all costss */ public List<SelectItem> getCostss() { List<OfferCost> refs = OfferCostManager.getDefault().getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (OfferCost ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } // Getters to list possible values of enum fields public String getOfferStateFormatted() { if (this.getOfferState() != null) { return FacesUtils.formatMessage("OfferState." + this.getOfferState().name()); } else { return ""; } } /** * Get the list of all OfferState values * * @return the list of all OfferState values */ public List<SelectItem> getOfferStates() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); OfferState[] vals = OfferState.values(); for (OfferState val : vals) { ret.add(new SelectItem(val, FacesUtils.formatMessage("OfferState." + val.name()))); } return ret; } public String getOfferPotentialFormatted() { if (this.getOfferPotential() != null) { return FacesUtils.formatMessage("OfferPotential." + this.getOfferPotential().name()); } else { return ""; } } /** * Get the list of all OfferPotential values * * @return the list of all OfferPotential values */ public List<SelectItem> getOfferPotentials() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); OfferPotential[] vals = OfferPotential.values(); for (OfferPotential val : vals) { ret.add(new SelectItem(val, FacesUtils.formatMessage("OfferPotential." + val.name()))); } return ret; } // Methods to create/remove instances of one-to-many entities (slave // entities) /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String createRoles() { OfferRole item = new OfferRole(); item.setOffer(offer); IvaApplicator.applyIvaToTaxableObject(offer.getCreationDate(), item); if (offer.getRoles() == null) { offer.setRoles(new HashSet()); } offer.getRoles().add(item); return null; } /** * Delete selected instance of the one-to-many field * * @return forward to the same page */ public String deleteRoles() { UIData table = (UIData)FacesUtils.getComponent("offer:roles"); offer.getRoles().remove(table.getRowData()); return null; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String createCosts() { OfferCost item = new OfferCost(); item.setOffer(offer); IvaApplicator.applyIvaToTaxableObject(offer.getCreationDate(), item); if (offer.getCosts() == null) { offer.setCosts(new HashSet()); } offer.getCosts().add(item); return null; } /** * Delete selected instance of the one-to-many field * * @return forward to the same page */ public String deleteCosts() { UIData table = (UIData)FacesUtils.getComponent("offer:costs"); offer.getCosts().remove(table.getRowData()); return null; } /** * Whether or not create button is available for user * * @return true if user can create objects of type Offer */ public boolean isCreateAvailable() { return SpringUtils.isRolePermissionGranted(Permission.Entity_Create(Offer.class)); } /** * Whether or not edit button is available for user * * @return true if user can edit current object */ public boolean isEditAvailable() { return SpringUtils.isAclPermissionGranted(offer, BasePermission.WRITE); } /** * Whether or not delete button is available for user * * @return true if user can delete current object */ public boolean isDeleteAvailable() { return (offer.getId() != null) && SpringUtils.isAclPermissionGranted(offer, BasePermission.DELETE); } public boolean isSavedEntity() { return offer.getId() != null; } /** * Reset search criteria * * @return forward to LIST page */ public String reset() { search.reset(); return list(); } /** * Go to create page * * @return forward to CREATE page */ public String create() { offer = new Offer(); offer.setUser(SpringUtils.getPrincipal().getUser()); offer.setCreationDate(new Date()); return NavigationResults.CREATE; } /** * Go to detail page * * @return forward to DETAIL page */ public String detail() { showSubreportRole = "NO"; showSubreportCost = "NO"; Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID)); offer = manager.getEntityById(id); return SpringUtils.isAclPermissionGranted(offer, BasePermission.WRITE) ? NavigationResults.EDIT : NavigationResults.DETAIL; } /** * Save bean and stay on it * * @return forward to list page */ public String save() { doBeforeSave(); final Set<Interaction> interactionsWithProject = new HashSet<Interaction>(); if (offer != null && offer.getInteractions() != null) { for (Interaction interaction: offer.getInteractions()) { if (interaction.getProject() != null) { interactionsWithProject.add(interaction); } } } if(offer!=null){ offer.setInteractions(interactionsWithProject); if (offer.getId() == null) { manager.insertEntity(offer); } else { manager.updateEntity(offer); } } // nos mantenemos en la pantalla de edición de ofertas return null; } /** * Delete bean and go back to beans list * * @return forward to LIST page */ public String delete() { manager.deleteEntity(offer); offer = 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 isOfferSelected() { return offer != 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 OfferSearch getSearch() { return search; } 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 getSearchTitle() { return search.getTitle(); } public void setSearchTitle(String val) { if (search.isTitleSet()) { search.setTitle(val); } } public boolean isSearchTitleValid() { return search.isTitleSet(); } public void setSearchTitleValid(boolean val) { if (val) { search.setTitle(search.getTitle()); } else { search.unsetTitle(); } } public String getSearchDescription() { return search.getDescription(); } public void setSearchDescription(String val) { if (search.isDescriptionSet()) { search.setDescription(val); } } public boolean isSearchDescriptionValid() { return search.isDescriptionSet(); } public void setSearchDescriptionValid(boolean val) { if (val) { search.setDescription(search.getDescription()); } else { search.unsetDescription(); } } public String getSearchObservations() { return search.getObservations(); } public void setSearchObservations(String val) { if (search.isObservationsSet()) { search.setObservations(val); } } public boolean isSearchObservationsValid() { return search.isObservationsSet(); } public void setSearchObservationsValid(boolean val) { if (val) { search.setObservations(search.getObservations()); } else { search.unsetObservations(); } } 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 getSearchStartValidityDate() { return search.getStartValidityDate(); } public void setSearchStartValidityDate(Date val) { if (val != null) { search.setStartValidityDate(val); } else { search.unsetStartValidityDate(); } } public boolean isSearchStartValidityDateValid() { return search.isStartValidityDateSet(); } public void setSearchStartValidityDateValid(boolean val) { if (val) { search.setStartValidityDate(search.getStartValidityDate()); } else { search.unsetStartValidityDate(); } } public Date getSearchEndValidityDate() { return search.getEndValidityDate(); } public void setSearchEndValidityDate(Date val) { if (val != null) { search.setEndValidityDate(val); } else { search.unsetEndValidityDate(); } } public boolean isSearchEndValidityDateValid() { return search.isEndValidityDateSet(); } public void setSearchEndValidityDateValid(boolean val) { if (val) { search.setEndValidityDate(search.getEndValidityDate()); } else { search.unsetEndValidityDate(); } } public Date getSearchStartMaturityDate() { return search.getStartMaturityDate(); } public void setSearchStartMaturityDate(Date val) { if (val != null) { search.setStartMaturityDate(val); } else { search.unsetStartMaturityDate(); } } public boolean isSearchStartMaturityDateValid() { return search.isStartMaturityDateSet(); } public void setSearchStartMaturityDateValid(boolean val) { if (val) { search.setStartMaturityDate(search.getStartMaturityDate()); } else { search.unsetStartMaturityDate(); } } public Date getSearchEndMaturityDate() { return search.getEndMaturityDate(); } public void setSearchEndMaturityDate(Date val) { if (val != null) { search.setEndMaturityDate(val); } else { search.unsetEndMaturityDate(); } } public boolean isSearchEndMaturityDateValid() { return search.isEndMaturityDateSet(); } public void setSearchEndMaturityDateValid(boolean val) { if (val) { search.setEndMaturityDate(search.getEndMaturityDate()); } else { search.unsetEndMaturityDate(); } } public OfferState getSearchOfferState() { return search.getOfferState(); } public void setSearchOfferState(OfferState val) { if (search.isOfferStateSet()) { search.setOfferState(val); } } public boolean isSearchOfferStateValid() { return search.isOfferStateSet(); } public void setSearchOfferStateValid(boolean val) { if (val) { search.setOfferState(search.getOfferState()); } else { search.unsetOfferState(); } } public OfferPotential getSearchOfferPotential() { return search.getOfferPotential(); } public void setSearchOfferPotential(OfferPotential val) { if (search.isOfferPotentialSet()) { search.setOfferPotential(val); } } public boolean isSearchOfferPotentialValid() { return search.isOfferPotentialSet(); } public void setSearchOfferPotentialValid(boolean val) { if (val) { search.setOfferPotential(search.getOfferPotential()); } else { search.unsetOfferPotential(); } } public BigDecimal getSearchTaxBase() { return search.getTaxBase(); } public void setSearchTaxBase(BigDecimal val) { if (search.isTaxBaseSet()) { search.setTaxBase(val); } } public BigDecimal getSearchTotalRoles() { return search.getTotalRoles(); } public void setSearchTotalRoles(BigDecimal val) { if (search.isTotalRolesSet()) { search.setTotalRoles(val); } } public boolean isSearchTotalRolesValid() { return search.isTotalRolesSet(); } public void setSearchTotalRolesValid(boolean val) { if (val) { search.setTotalRoles(search.getTotalRoles()); } else { search.unsetTotalRoles(); } } public BigDecimal getSearchTotalCosts() { return search.getTotalCosts(); } public void setSearchTotalCosts(BigDecimal val) { if (search.isTotalCostsSet()) { search.setTotalCosts(val); } } public boolean isSearchTotalCostsValid() { return search.isTotalCostsSet(); } public void setSearchTotalCostsValid(boolean val) { if (val) { search.setTotalCosts(search.getTotalCosts()); } else { search.unsetTotalCosts(); } } public BigDecimal getSearchTotal() { return search.getTotal(); } public void setSearchTotal(BigDecimal val) { if (search.isTotalSet()) { search.setTotal(val); } } public boolean isSearchTotalValid() { return search.isTotalSet(); } public void setSearchTotalValid(boolean val) { if (val) { search.setTotal(search.getTotal()); } else { search.unsetTotal(); } } public Integer getSearchOwnerId() { return search.getOwnerId(); } public void setSearchOwnerId(Integer val) { if (search.isOwnerIdSet()) { search.setOwnerId(val); } } public boolean isSearchOwnerIdValid() { return search.isOwnerIdSet(); } public void setSearchOwnerIdValid(boolean val) { if (val) { search.setOwnerId(search.getOwnerId()); } else { search.unsetOwnerId(); } } public Integer getSearchDepartmentId() { return search.getDepartmentId(); } public void setSearchDepartmentId(Integer val) { if (search.isDepartmentIdSet()) { search.setDepartmentId(val); } } public boolean isSearchDepartmentIdValid() { return search.isDepartmentIdSet(); } public void setSearchDepartmentIdValid(boolean val) { if (val) { search.setDepartmentId(search.getDepartmentId()); } else { search.unsetDepartmentId(); } } public Date getSearchStartInsertDate() { return search.getStartInsertDate(); } public void setSearchStartInsertDate(Date val) { if (val != null) { search.setStartInsertDate(val); } else { search.unsetStartInsertDate(); } } public boolean isSearchStartInsertDateValid() { return search.isStartInsertDateSet(); } public void setSearchStartInsertDateValid(boolean val) { if (val) { search.setStartInsertDate(search.getStartInsertDate()); } else { search.unsetStartInsertDate(); } } public Date getSearchEndInsertDate() { return search.getEndInsertDate(); } public void setSearchEndInsertDate(Date val) { if (val != null) { search.setEndInsertDate(val); } else { search.unsetEndInsertDate(); } } public boolean isSearchEndInsertDateValid() { return search.isEndInsertDateSet(); } public void setSearchEndInsertDateValid(boolean val) { if (val) { search.setEndInsertDate(search.getEndInsertDate()); } else { search.unsetEndInsertDate(); } } public Date getSearchStartUpdateDate() { return search.getStartUpdateDate(); } public void setSearchStartUpdateDate(Date val) { if (val != null) { search.setStartUpdateDate(val); } else { search.unsetStartUpdateDate(); } } public boolean isSearchStartUpdateDateValid() { return search.isStartUpdateDateSet(); } public void setSearchStartUpdateDateValid(boolean val) { if (val) { search.setStartUpdateDate(search.getStartUpdateDate()); } else { search.unsetStartUpdateDate(); } } public Date getSearchEndUpdateDate() { return search.getEndUpdateDate(); } public void setSearchEndUpdateDate(Date val) { if (val != null) { search.setEndUpdateDate(val); } else { search.unsetEndUpdateDate(); } } public boolean isSearchEndUpdateDateValid() { return search.isEndUpdateDateSet(); } public void setSearchEndUpdateDateValid(boolean val) { if (val) { search.setEndUpdateDate(search.getEndUpdateDate()); } else { search.unsetEndUpdateDate(); } } public User getSearchUser() { return search.getUser(); } public void setSearchUser(User val) { if (search.isUserSet()) { search.setUser(val); } } public boolean isSearchUserValid() { return search.isUserSet(); } public void setSearchUserValid(boolean val) { if (val) { search.setUser(search.getUser()); } else { search.unsetUser(); } } public Organization getSearchOrganization() { return search.getOrganization(); } public void setSearchOrganization(Organization val) { if (search.isOrganizationSet()) { search.setOrganization(val); } } public boolean isSearchOrganizationValid() { return search.isOrganizationSet(); } public void setSearchOrganizationValid(boolean val) { if (val) { search.setOrganization(search.getOrganization()); } else { search.unsetOrganization(); } } 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(); } } public OfferRejectReason getSearchOfferRejectReason() { return search.getOfferRejectReason(); } public void setSearchOfferRejectReason(OfferRejectReason val) { if (search.isOfferRejectReasonSet()) { search.setOfferRejectReason(val); } } public boolean isSearchOfferRejectReasonValid() { return search.isOfferRejectReasonSet(); } public void setSearchOfferRejectReasonValid(boolean val) { if (val) { search.setOfferRejectReason(search.getOfferRejectReason()); } else { search.unsetOfferRejectReason(); } } public List<Interaction> getSearchInteractions() { return search.getInteractions(); } public void setSearchInteractions(List<Interaction> val) { if (search.isInteractionsSet()) { search.setInteractions(val); } } public boolean isSearchInteractionsValid() { return search.isInteractionsSet(); } public void setSearchInteractionsValid(boolean val) { if (val) { search.setInteractions(search.getInteractions()); } else { search.unsetInteractions(); } } public List<OfferRole> getSearchRoles() { return search.getRoles(); } public void setSearchRoles(List<OfferRole> val) { if (search.isRolesSet()) { search.setRoles(val); } } public boolean isSearchRolesValid() { return search.isRolesSet(); } public void setSearchRolesValid(boolean val) { if (val) { search.setRoles(search.getRoles()); } else { search.unsetRoles(); } } public List<OfferCost> getSearchCosts() { return search.getCosts(); } public void setSearchCosts(List<OfferCost> val) { if (search.isCostsSet()) { search.setCosts(val); } } public boolean isSearchCostsValid() { return search.isCostsSet(); } public void setSearchCostsValid(boolean val) { if (val) { search.setCosts(search.getCosts()); } else { search.unsetCosts(); } } /** * Handle an ABC pager letter click: filter objects by specified starting letter */ public void letterClicked() { if (letter != null) { UIComponent comp = FacesUtils.getComponent("offers:list"); HtmlDataTable tabla = (HtmlDataTable)comp; tabla.setFirst(0); search.setTitle(letter + "%"); } else { search.unsetTitle(); } } public Character getLetter() { return letter; } public void setLetter(Character letter) { this.letter = letter; } // Getters and setters to handle uploads // Getters and setters to manipulate active Offer object public java.lang.Integer getId() { return offer.getId(); } public String getNumber() { return offer.getNumber(); } public void setNumber(String number) { offer.setNumber(number); } public String getTitle() { return offer.getTitle(); } public void setTitle(String title) { offer.setTitle(title); } public String getDescription() { return offer.getDescription(); } public void setDescription(String description) { offer.setDescription(description); } public String getObservations() { return offer.getObservations(); } public void setObservations(String observations) { offer.setObservations(observations); } public Date getCreationDate() { return offer.getCreationDate(); } public void setCreationDate(Date creationDate) { offer.setCreationDate(creationDate); } public Date getValidityDate() { return offer.getValidityDate(); } public void setValidityDate(Date validityDate) { offer.setValidityDate(validityDate); } public Date getMaturityDate() { return offer.getMaturityDate(); } public void setMaturityDate(Date maturityDate) { offer.setMaturityDate(maturityDate); } public OfferState getOfferState() { return offer.getOfferState(); } public void setOfferState(OfferState offerState) { offer.setOfferState(offerState); } public OfferPotential getOfferPotential() { return offer.getOfferPotential(); } public void setOfferPotential(OfferPotential offerPotential) { offer.setOfferPotential(offerPotential); } public BigDecimal getTaxBaseRoles() { return offer.getTaxBaseRoles(); } public BigDecimal getIvaRoles() { return offer.getIvaRoles(); } public boolean isShowIvaIntoReport() { return offer.isShowIvaIntoReport(); } public void setShowIvaIntoReport(boolean showIvaIntoReport) { this.offer.setShowIvaIntoReport(showIvaIntoReport); } public BigDecimal getTaxBaseCosts() { return offer.getTaxBaseCosts(); } public BigDecimal getIvaCosts() { return offer.getIvaCosts(); } public BigDecimal getTotalRoles() { return offer.getTotalRoles(); } public BigDecimal getTotalCosts() { return offer.getTotalCosts(); } public BigDecimal getTotal() { return offer.getTotal(); } public Integer getOwnerId() { return offer.getOwnerId(); } public void setOwnerId(Integer ownerId) { offer.setOwnerId(ownerId); } public Integer getDepartmentId() { return offer.getDepartmentId(); } public void setDepartmentId(Integer departmentId) { offer.setDepartmentId(departmentId); } public Date getInsertDate() { return offer.getInsertDate(); } public void setInsertDate(Date insertDate) { offer.setInsertDate(insertDate); } public Date getUpdateDate() { return offer.getUpdateDate(); } public void setUpdateDate(Date updateDate) { offer.setUpdateDate(updateDate); } public User getUser() { return offer.getUser(); } public void setUser(User user) { offer.setUser(user); } public Organization getOrganization() { if (offer.getOrganization() == null) { offer.setOrganization(OrganizationManager.getDefault().getMyOrganization()); } return offer.getOrganization(); } public void setOrganization(Organization organization) { offer.setOrganization(organization); } public Contact getContact() { return offer.getContact(); } public void setContact(Contact contact) { offer.setContact(contact); } public OfferRejectReason getOfferRejectReason() { return offer.getOfferRejectReason(); } public void setOfferRejectReason(OfferRejectReason offerRejectReason) { offer.setOfferRejectReason(offerRejectReason); } public Set<Interaction> getInteractions() { return offer.getInteractions(); } public void setInteractions(Set<Interaction> interactions) { offer.setInteractions(interactions); } public Set<OfferRole> getRoles() { return offer.getRoles(); } public void setRoles(Set<OfferRole> roles) { offer.setRoles(roles); } public Set<OfferCost> getCosts() { return offer.getCosts(); } public void setCosts(Set<OfferCost> costs) { offer.setCosts(costs); } /* Offer - generated by stajanov (do not edit/delete) */ /** * Get the list of all organizations * * @return the list of all organizations */ public List<SelectItem> getOrganizations() { List<Organization> refs = OrganizationManager.getDefault().getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (Organization ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } ret.add(0, new SelectItem("")); return ret; } /** Selected organization * */ public List<SelectItem> getContactsBySelectedOrganization() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); ContactSearch cs = new ContactSearch(); cs.setOrganization(getOrganization()); 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 void onSelectedOrganizationChanged(ValueChangeEvent event) { setOrganization((Organization)event.getNewValue()); InteractionBean ib = (InteractionBean)FacesUtils.getBean("interactionBean"); ib.setSelectedOrganization(getOrganization()); FacesUtils.renderResponse(); } /** * Get the list of all offerRejectReasons * * @return the list of all offerRejectReasons */ public List<SelectItem> getOfferRejectReasons() { List<OfferRejectReason> refs = OfferRejectReasonManager.getDefault().getAllEntities(null, new SortCriteria("title")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (OfferRejectReason ref : refs) { ret.add(new SelectItem(ref, ref.getTitle())); } // Añadiendo el campo vacio ret.add(0, new SelectItem("")); return ret; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String createInteractions() { Interaction item = new Interaction(); item.setOffer(offer); if (item.getUser() == null) { item.setUser(SpringUtils.getPrincipal().getUser()); } item.setCreationDate(new Date()); InteractionBean iB = (InteractionBean)FacesUtils.getBean("interactionBean"); iB.setInteractionFromOffer(item); iB.setSelectedOrganization(OrganizationManager.getDefault().getMyOrganization()); if (offer.getInteractions() == null) { offer.setInteractions(new HashSet()); } offer.getInteractions().add(item); return NavigationResults.OFFER_CREATE_INTERACTION; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String editInteractions() { UIData table = (UIData)FacesUtils.getComponent("offer:interactions"); InteractionBean iB = (InteractionBean)FacesUtils.getBean("interactionBean"); Interaction interactionSelectedInOfferEdit = (Interaction)table.getRowData(); if (interactionSelectedInOfferEdit.getId() != null) { Interaction interaction = InteractionManager.getDefault().getEntityById(interactionSelectedInOfferEdit.getId()); iB.setInteractionFromOffer(interaction); iB.setSelectedOrganization(interaction.getProject().getClient()); } else { iB.setInteractionFromOffer(interactionSelectedInOfferEdit); } return NavigationResults.OFFER_CREATE_INTERACTION; } /** * Delete selected instance of the one-to-many field * * @return forward to the same page */ public String deleteInteractions() { UIData table = (UIData)FacesUtils.getComponent("offer:interactions"); offer.getInteractions().remove(table.getRowData()); Integer idActual = offer.getId(); save(); offer = OfferManager.getDefault().getEntityById(idActual); return null; } public boolean getPuedoCrearProyecto() { return offer.getId() != null; } public boolean getPuedoImprimirOferta() { if (offer.getRoles() != null && !offer.getRoles().isEmpty()) showSubreportRole = "YES"; // se comprueba que haya costes y que al menos uno sea facturable if (offer.getCosts() != null) { if (!offer.getCosts().isEmpty()) { for (OfferCost offerCost : offer.getCosts()) { if (offerCost.isBillable()) showSubreportCost = "YES"; } } } return offer.getId() != null; } private Integer idSelectedOrganization = 0; public Integer getIdSelectedOrganization() { idSelectedOrganization = ConfigurationUtil.getDefault().getIdOurCompany(); return idSelectedOrganization; } public void setIdSelectedOrganization(Integer idOrganization) { idSelectedOrganization = idOrganization; } public boolean isInteractionsAvailable() { return (offer.getId() != null); } public String getShowSubreportCost() { return showSubreportCost; } public String getShowSubreportRole() { return showSubreportRole; } public String convertFromOfferToBill () { final Bill bill = billManager.convertFromOfferToBill(offer); final BillBean billBean = (BillBean) FacesUtils.getBean("billBean"); billBean.setBill(bill); return "editBill"; } public String duplicateOffer () { offer = manager.duplicateOffer(offer); FacesUtils.clearDomRoot(); return null; } }