/*
* @(#)CreateAcquisitionRequestItemActivityInformation.java
*
* Copyright 2010 Instituto Superior Tecnico
* Founding Authors: Luis Cruz, Nuno Ochoa, Paulo Abrantes
*
* https://fenix-ashes.ist.utl.pt/
*
* This file is part of the Expenditure Tracking Module.
*
* The Expenditure Tracking Module is free software: you can
* redistribute it and/or modify it under the terms of the GNU Lesser General
* Public License as published by the Free Software Foundation, either version
* 3 of the License, or (at your option) any later version.
*
* The Expenditure Tracking Module 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the Expenditure Tracking Module. If not, see <http://www.gnu.org/licenses/>.
*
*/
package pt.ist.expenditureTrackingSystem.domain.acquisitions.simplified.activities;
import java.math.BigDecimal;
import java.util.ResourceBundle;
import module.finance.util.Address;
import module.finance.util.Money;
import module.workflow.activities.ActivityInformation;
import module.workflow.activities.WorkflowActivity;
import module.workflow.domain.WorkflowProcess;
import org.fenixedu.commons.i18n.I18N;
import pt.ist.expenditureTrackingSystem.domain.acquisitions.AcquisitionItemClassification;
import pt.ist.expenditureTrackingSystem.domain.acquisitions.AcquisitionRequest;
import pt.ist.expenditureTrackingSystem.domain.acquisitions.CPVReference;
import pt.ist.expenditureTrackingSystem.domain.acquisitions.RegularAcquisitionProcess;
import pt.ist.expenditureTrackingSystem.domain.organization.DeliveryInfo;
import pt.ist.fenixWebFramework.rendererExtensions.util.IPresentableEnum;
/**
*
* @author João Neves
* @author Luis Cruz
* @author Paulo Abrantes
*
*/
public class CreateAcquisitionRequestItemActivityInformation extends ActivityInformation<RegularAcquisitionProcess> {
public static enum CreateItemSchemaType implements IPresentableEnum {
NEW_DELIVERY_INFO, EXISTING_DELIVERY_INFO;
@Override
public String getLocalizedName() {
try {
final ResourceBundle resourceBundle =
ResourceBundle.getBundle("resources.ExpenditureEnumerationResources", I18N.getLocale());
return resourceBundle.getString(CreateItemSchemaType.class.getSimpleName() + "." + name());
} catch (Exception ex) {
ex.printStackTrace();
throw new Error(ex);
}
}
}
public static final int DEFAULT_VAL_VALUE = 23;
private String description;
private Integer quantity;
private Money unitValue;
private BigDecimal vatValue = new BigDecimal(DEFAULT_VAL_VALUE);
private Money additionalCostValue;
private String proposalReference;
private AcquisitionRequest acquisitionRequest;
private String recipient;
private String phone;
private String email;
private Address address;
private DeliveryInfo deliveryInfo;
private AcquisitionItemClassification classification;
private CreateItemSchemaType createItemSchemaType;
private CPVReference cPVReference;
public CreateAcquisitionRequestItemActivityInformation(RegularAcquisitionProcess process,
WorkflowActivity<? extends WorkflowProcess, ? extends ActivityInformation> activity) {
super(process, activity);
setAcquisitionRequest(process.getAcquisitionRequest());
setDeliveryInfo(null);
setCPVReference(null);
if (process.getAcquisitionRequest().getRequester().getDeliveryInfosSet().isEmpty()) {
setCreateItemSchemaType(CreateItemSchemaType.NEW_DELIVERY_INFO);
} else {
setCreateItemSchemaType(CreateItemSchemaType.EXISTING_DELIVERY_INFO);
}
}
public void setAcquisitionRequest(final AcquisitionRequest acquisitionRequest) {
this.acquisitionRequest = acquisitionRequest;
}
public AcquisitionRequest getAcquisitionRequest() {
return acquisitionRequest;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public Money getAdditionalCostValue() {
return additionalCostValue;
}
public void setAdditionalCostValue(Money additionalCostValue) {
this.additionalCostValue = additionalCostValue;
}
public Money getUnitValue() {
return unitValue;
}
public void setUnitValue(Money unitValue) {
this.unitValue = unitValue;
}
public String getProposalReference() {
return proposalReference;
}
public void setProposalReference(String proposalReference) {
this.proposalReference = proposalReference;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public CreateItemSchemaType getCreateItemSchemaType() {
return createItemSchemaType;
}
public void setCreateItemSchemaType(CreateItemSchemaType createItemSchemaType) {
this.createItemSchemaType = createItemSchemaType;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
public DeliveryInfo getDeliveryInfo() {
return deliveryInfo;
}
public void setDeliveryInfo(DeliveryInfo deliveryInfo) {
this.deliveryInfo = deliveryInfo;
}
public BigDecimal getVatValue() {
return vatValue;
}
public void setVatValue(BigDecimal vatValue) {
this.vatValue = vatValue;
}
public CPVReference getCPVReference() {
return cPVReference;
}
public void setCPVReference(CPVReference reference) {
cPVReference = reference;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getPhone() {
return phone;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
public void setClassification(AcquisitionItemClassification classification) {
this.classification = classification;
}
public AcquisitionItemClassification getClassification() {
return classification;
}
@Override
public boolean hasAllneededInfo() {
return isForwardedFromInput() && getAcquisitionRequest() != null && getDescription() != null && getQuantity() != null
&& getUnitValue() != null && getProposalReference() != null && getCPVReference() != null
&& (getDeliveryInfo() != null || (getRecipient() != null && getAddress() != null));
}
}