Search in sources :

Example 1 with Group

use of de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.Group in project metasfresh-webui-api by metasfresh.

the class ProductLookupDescriptor method explodeRecordsWithStockQuantities.

private final LookupValuesList explodeRecordsWithStockQuantities(@NonNull final LookupValuesList productLookupValues, @NonNull final Date dateOrNull) {
    if (productLookupValues.isEmpty() || !isAvailableStockQueryActivatedInSysConfig()) {
        return productLookupValues;
    }
    final AvailableToPromiseQueryBuilder atpQueryBuilder = AvailableToPromiseQuery.builder();
    addStorageAttributeKeysToQueryBuilder(atpQueryBuilder);
    atpQueryBuilder.productIds(productLookupValues.getKeysAsInt());
    atpQueryBuilder.date(dateOrNull);
    // invoke the query
    final // 
    AvailableToPromiseResultForWebui availableStock = availableToPromiseAdapter.retrieveAvailableStock(atpQueryBuilder.build());
    final List<Group> availableStockGroups = availableStock.getGroups();
    // process the query's result into those explodedProductValues
    return createLookupValuesFromAvailableStockGroups(productLookupValues, availableStockGroups);
}
Also used : Group(de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.Group) AvailableToPromiseQueryBuilder(de.metas.material.dispo.commons.repository.AvailableToPromiseQuery.AvailableToPromiseQueryBuilder)

Example 2 with Group

use of de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.Group in project metasfresh-webui-api by metasfresh.

the class ProductLookupDescriptor method createLookupValuesFromAvailableStockGroups.

private LookupValuesList createLookupValuesFromAvailableStockGroups(@NonNull final LookupValuesList initialLookupValues, @NonNull final List<Group> availableStockGroups) {
    final boolean addOnlyPositiveATP = addOnlyPositiveATP();
    final List<LookupValue> explodedProductValues = new ArrayList<>();
    for (final Group availableStockGroup : availableStockGroups) {
        if (addOnlyPositiveATP && availableStockGroup.getQty().signum() <= 0) {
            continue;
        }
        final int productId = availableStockGroup.getProductId();
        final LookupValue productLookupValue = initialLookupValues.getById(productId);
        final ITranslatableString displayName = createDisplayName(productLookupValue.getDisplayNameTrl(), availableStockGroup);
        final ImmutableMap<String, Object> attributeMap = availableStockGroup.getLookupAttributesMap();
        final IntegerLookupValue integerLookupValue = IntegerLookupValue.builder().id(productId).displayName(displayName).attribute(ATTRIBUTE_ASI, attributeMap).build();
        explodedProductValues.add(integerLookupValue);
    }
    if (explodedProductValues.isEmpty()) {
        // fallback
        return initialLookupValues;
    }
    return LookupValuesList.fromCollection(explodedProductValues);
}
Also used : Group(de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.Group) ArrayList(java.util.ArrayList) ITranslatableString(de.metas.i18n.ITranslatableString) ITranslatableString(de.metas.i18n.ITranslatableString) NumberTranslatableString(de.metas.i18n.NumberTranslatableString) IntegerLookupValue(de.metas.ui.web.window.datatypes.LookupValue.IntegerLookupValue) IntegerLookupValue(de.metas.ui.web.window.datatypes.LookupValue.IntegerLookupValue) LookupValue(de.metas.ui.web.window.datatypes.LookupValue)

Example 3 with Group

use of de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.Group in project metasfresh-webui-api by metasfresh.

the class AvailableToPromiseAdapter method retrieveAvailableStock.

@NonNull
public AvailableToPromiseResultForWebui retrieveAvailableStock(@NonNull final AvailableToPromiseQuery query) {
    final // 
    de.metas.material.dispo.commons.repository.AvailableToPromiseResult commonsAvailableStock = stockRepository.retrieveAvailableStock(query);
    final AvailableToPromiseResultForWebuiBuilder clientResultBuilder = AvailableToPromiseResultForWebui.builder();
    final List<ResultGroup> commonsResultGroups = commonsAvailableStock.getResultGroups();
    for (final ResultGroup commonsResultGroup : commonsResultGroups) {
        final Group clientResultGroup = createClientResultGroup(commonsResultGroup);
        clientResultBuilder.group(clientResultGroup);
    }
    return clientResultBuilder.build();
}
Also used : ResultGroup(de.metas.material.dispo.commons.repository.AvailableToPromiseResult.ResultGroup) ResultGroup(de.metas.material.dispo.commons.repository.AvailableToPromiseResult.ResultGroup) Group(de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.Group) AvailableToPromiseResultForWebuiBuilder(de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.AvailableToPromiseResultForWebuiBuilder) NonNull(lombok.NonNull)

Aggregations

Group (de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.Group)3 ITranslatableString (de.metas.i18n.ITranslatableString)1 NumberTranslatableString (de.metas.i18n.NumberTranslatableString)1 AvailableToPromiseQueryBuilder (de.metas.material.dispo.commons.repository.AvailableToPromiseQuery.AvailableToPromiseQueryBuilder)1 ResultGroup (de.metas.material.dispo.commons.repository.AvailableToPromiseResult.ResultGroup)1 AvailableToPromiseResultForWebuiBuilder (de.metas.ui.web.material.adapter.AvailableToPromiseResultForWebui.AvailableToPromiseResultForWebuiBuilder)1 LookupValue (de.metas.ui.web.window.datatypes.LookupValue)1 IntegerLookupValue (de.metas.ui.web.window.datatypes.LookupValue.IntegerLookupValue)1 ArrayList (java.util.ArrayList)1 NonNull (lombok.NonNull)1