/** * *************************************************************************** * Copyright (c) 2010 Qcadoo Limited * Project: Qcadoo MES * Version: 1.4 * * This file is part of Qcadoo. * * Qcadoo is free software; you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation; either version 3 of the License, * or (at your option) any later version. * * 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *************************************************************************** */ package com.qcadoo.mes.deliveries; import java.math.BigDecimal; import java.util.List; import java.util.Locale; import com.qcadoo.mes.deliveries.print.DeliveryProduct; import com.qcadoo.model.api.DataDefinition; import com.qcadoo.model.api.Entity; import com.qcadoo.view.api.ViewDefinitionState; import com.qcadoo.view.api.components.FieldComponent; public interface DeliveriesService { /** * Gets delivery * * @param deliveryId * * @return delivery */ Entity getDelivery(final Long deliveryId); /** * Gets ordered product * * @param deliveredProductId * * @return ordered product */ Entity getOrderedProduct(final Long deliveredProductId); /** * Gets delivered product * * @param deliveredProductId * * @return delivered product */ Entity getDeliveredProduct(final Long deliveredProductId); /** * Gets company product * * @param companyProductId * * @return company product */ Entity getCompanyProduct(final Long companyProductId); /** * Gets company products family * * @param companyProductsFamilyId * * @return company products family */ Entity getCompanyProductsFamily(final Long companyProductsFamilyId); /** * Gets list of columns for deliveries * * @return list of columns for deliveries */ List<Entity> getColumnsForDeliveries(); /** * Gets list of columns for orders * * @return list of columns for orders */ List<Entity> getColumnsForOrders(); /** * Gets delivery data definition * * @return delivery data definition */ DataDefinition getDeliveryDD(); /** * Gets ordered product data definition * * @return ordered product data definition */ DataDefinition getOrderedProductDD(); /** * Gets delivered product data definition * * @return delivered product data definition */ DataDefinition getDeliveredProductDD(); /** * Gets company product data definition * * @return company product data definition */ DataDefinition getCompanyProductDD(); /** * Gets company products family data definition * * @return company products family data definition */ DataDefinition getCompanyProductsFamilyDD(); /** * Gets column for deliveries data definition * * @return column for deliveries data definition */ DataDefinition getColumnForDeliveriesDD(); /** * Gets columns for orders data definition * * @return column for orders data definition */ DataDefinition getColumnForOrdersDD(); /** * Gets product for given delivery product * * @return deliveryProduct */ Entity getProduct(final DeliveryProduct deliveryProduct); /** * Gets description default value * * @return description */ String getDescriptionDefaultValue(); /** * Gets delivery address default value * * @return delivery adresss */ String getDeliveryAddressDefaultValue(); /** * Gets address from company * * @param company company * * @return adresss */ String generateAddressFromCompany(final Entity company); /** * Fills unit fields * * @param view view * @param productName product lookup reference name * @param referenceNames reference names to unit fields */ void fillUnitFields(final ViewDefinitionState view, final String productName, final List<String> referenceNames); /** * Fills unit fields * * @param view view * @param product product entity * @param referenceNames reference names to unit fields * @param additionalUnitNames */ void fillUnitFields(final ViewDefinitionState view, final Entity product, final List<String> referenceNames, final List<String> additionalUnitNames); /** * Fills unit fields * * @param view view * @param productName product lookup reference name * @param referenceNames reference names to unit fields * @param additionalUnitNames reference names to additional unit fields */ void fillUnitFields(final ViewDefinitionState view, final String productName, final List<String> referenceNames, final List<String> additionalUnitNames); /** * Fills currency fields * * @param view view * @param referenceNames reference names to unit fields * @param delivery entity need to get currency */ void fillCurrencyFields(final ViewDefinitionState view, final List<String> referenceNames); /** * Fills currency fields * * @param view view * @param referenceNames reference names to unit fields */ void fillCurrencyFieldsForDelivery(final ViewDefinitionState view, final List<String> referenceNames, final Entity delivery); /** * Gets currency for delivery * * @param delivery delivery entity * * @return selected or default currency */ String getCurrency(final Entity delivery); /** * Recalculate price form total price * * @param view view * @param quantityFieldReference quantity field reference */ void recalculatePriceFromTotalPrice(final ViewDefinitionState view, final String quantityFieldReference); /** * Recalculate price from price per unit * * @param view view * @param quantityFieldReference quantity field reference */ void recalculatePriceFromPricePerUnit(final ViewDefinitionState view, final String quantityFieldReference); /** * Recalculate price * * @param view view * @param quantityFieldReference quantity field reference */ void recalculatePrice(final ViewDefinitionState view, final String quantityFieldReference); /** * Gets big decimal from field * * @param fieldComponent field component * @param locale locale * * @return BigDecimal */ BigDecimal getBigDecimalFromField(final FieldComponent fieldComponent, final Locale locale); /** * Calculate price per unit * * @param entity entity * @param quantityFieldName quantity field name */ void calculatePricePerUnit(final Entity entity, final String quantityFieldName); /** * Filters currency column * * @param columns columnsForOrders, columnsForDeliveries * * @return list of filtered columns */ List<Entity> getColumnsWithFilteredCurrencies(final List<Entity> columns); /** * Disables show product button * * @param view */ void disableShowProductButton(final ViewDefinitionState view); }