Search in sources :

Example 1 with I_M_PickingSlot

use of de.metas.picking.model.I_M_PickingSlot in project metasfresh-webui-api by metasfresh.

the class PickingHUsRepositoryTests method createPickingSlot.

private static final I_M_PickingSlot createPickingSlot(final boolean pickingRackSystem) {
    final I_M_PickingSlot pickingSlot = newInstance(I_M_PickingSlot.class);
    pickingSlot.setIsPickingRackSystem(pickingRackSystem);
    save(pickingSlot);
    return pickingSlot;
}
Also used : I_M_PickingSlot(de.metas.picking.model.I_M_PickingSlot)

Example 2 with I_M_PickingSlot

use of de.metas.picking.model.I_M_PickingSlot in project metasfresh-webui-api by metasfresh.

the class PickingSlotViewRepositoryTests method testRetrievePickingSlotRows_One_TU_with_CU.

@Test
public void testRetrievePickingSlotRows_One_TU_with_CU() {
    final I_M_ShipmentSchedule shipmentSchedule = newInstance(I_M_ShipmentSchedule.class);
    save(shipmentSchedule);
    final I_M_PickingSlot pickingSlot = newInstance(I_M_PickingSlot.class);
    save(pickingSlot);
    final boolean pickingSlotRowProcessed = false;
    final PickingSlotRepoQuery query = PickingSlotRepoQuery.of(shipmentSchedule.getM_ShipmentSchedule_ID());
    // set up a picked TU with a CU to be returned by the pickingHUsRepo.
    {
        final ListMultimap<Integer, PickedHUEditorRow> husIndexedByPickingSlotId = ImmutableListMultimap.of(pickingSlot.getM_PickingSlot_ID(), new PickedHUEditorRow(HUEditorRow.builder(WindowId.of(423)).setRowId(HUEditorRowId.ofTopLevelHU(100)).setType(HUEditorRowType.TU).setTopLevel(true).addIncludedRow(HUEditorRow.builder(WindowId.of(423)).setRowId(HUEditorRowId.ofHU(101, 100)).setType(HUEditorRowType.VHU).setTopLevel(false).build()).build(), pickingSlotRowProcessed));
        // @formatter:off return an empty list
        new Expectations() {

            {
                pickingHUsRepo.retrievePickedHUsIndexedByPickingSlotId(query);
                result = husIndexedByPickingSlotId;
            }
        };
    // @formatter:on
    }
    final PickingSlotViewRepository pickingSlotViewRepository = createPickingSllotViewRepository();
    final List<PickingSlotRow> rowsByShipmentScheduleId = pickingSlotViewRepository.retrievePickingSlotRows(query);
    assertThat(rowsByShipmentScheduleId.size(), is(1));
    final PickingSlotRow pickingSlotRow = rowsByShipmentScheduleId.get(0);
    assertThat(pickingSlotRow.isPickingSlotRow(), is(true));
    assertThat(pickingSlotRow.isPickedHURow(), is(false));
    assertThat(pickingSlotRow.isProcessed(), is(pickingSlotRowProcessed));
    assertThat(pickingSlotRow.getIncludedRows().size(), is(1));
    final PickingSlotRow tuRow = pickingSlotRow.getIncludedRows().get(0);
    assertThat(tuRow.isPickingSlotRow(), is(false));
    assertThat(tuRow.isPickedHURow(), is(true));
    assertThat(tuRow.getHuId(), is(100));
    assertThat(tuRow.getIncludedRows().size(), is(1));
    final PickingSlotRow whuRow = tuRow.getIncludedRows().get(0);
    assertThat(whuRow.isPickingSlotRow(), is(false));
    assertThat(whuRow.isPickedHURow(), is(true));
    assertThat(whuRow.getHuId(), is(101));
}
Also used : Expectations(mockit.Expectations) I_M_PickingSlot(de.metas.picking.model.I_M_PickingSlot) I_M_ShipmentSchedule(de.metas.handlingunits.model.I_M_ShipmentSchedule) PickedHUEditorRow(de.metas.ui.web.picking.pickingslot.PickingHURowsRepository.PickedHUEditorRow) ListMultimap(com.google.common.collect.ListMultimap) ImmutableListMultimap(com.google.common.collect.ImmutableListMultimap) Test(org.junit.Test)

Example 3 with I_M_PickingSlot

use of de.metas.picking.model.I_M_PickingSlot in project metasfresh-webui-api by metasfresh.

the class WEBUI_M_HU_Pick_ParametersFiller method getPickingSlotValues.

public LookupValuesList getPickingSlotValues(@NonNull final LookupDataSourceContext context) {
    if (shipmentScheduleId <= 0) {
        return LookupValuesList.EMPTY;
    }
    final IShipmentScheduleEffectiveBL shipmentScheduleEffectiveBL = Services.get(IShipmentScheduleEffectiveBL.class);
    final I_M_ShipmentSchedule shipmentSchedule = load(shipmentScheduleId, I_M_ShipmentSchedule.class);
    final PickingSlotQuery pickingSlotQuery = PickingSlotQuery.builder().availableForBPartnerId(shipmentScheduleEffectiveBL.getC_BP_Location_ID(shipmentSchedule)).availableForBPartnerLocationId(shipmentScheduleEffectiveBL.getC_BP_Location_ID(shipmentSchedule)).build();
    final List<I_M_PickingSlot> availablePickingSlots = Services.get(IPickingSlotDAO.class).retrievePickingSlots(pickingSlotQuery);
    return availablePickingSlots.stream().map(pickingSlot -> IntegerLookupValue.of(pickingSlot.getM_PickingSlot_ID(), createPickingSlotLabel(pickingSlot))).collect(LookupValuesList.collect());
}
Also used : IShipmentSchedulePA(de.metas.inoutcandidate.api.IShipmentSchedulePA) LookupDataSourceFactory(de.metas.ui.web.window.model.lookup.LookupDataSourceFactory) IntegerLookupValue(de.metas.ui.web.window.datatypes.LookupValue.IntegerLookupValue) I_M_ShipmentSchedule(de.metas.inoutcandidate.model.I_M_ShipmentSchedule) SqlLookupDescriptor(de.metas.ui.web.window.descriptor.sql.SqlLookupDescriptor) DB(org.compiere.util.DB) LookupDescriptor(de.metas.ui.web.window.descriptor.LookupDescriptor) InterfaceWrapperHelper(org.adempiere.model.InterfaceWrapperHelper) ImmutableList(com.google.common.collect.ImmutableList) DisplayType(org.compiere.util.DisplayType) I_M_PickingSlot(de.metas.picking.model.I_M_PickingSlot) IPickingSlotDAO(de.metas.picking.api.IPickingSlotDAO) LookupValuesList(de.metas.ui.web.window.datatypes.LookupValuesList) I_M_HU(de.metas.handlingunits.model.I_M_HU) IProcessDefaultParameter(de.metas.process.IProcessDefaultParameter) I_C_BPartner(org.compiere.model.I_C_BPartner) IShipmentScheduleEffectiveBL(de.metas.inoutcandidate.api.IShipmentScheduleEffectiveBL) LookupDataSource(de.metas.ui.web.window.model.lookup.LookupDataSource) LookupDataSourceContext(de.metas.ui.web.window.model.lookup.LookupDataSourceContext) NonNull(lombok.NonNull) IHUContextFactory(de.metas.handlingunits.IHUContextFactory) Services(org.adempiere.util.Services) List(java.util.List) Builder(lombok.Builder) AdempiereException(org.adempiere.exceptions.AdempiereException) IValidationRuleFactory(org.adempiere.ad.validationRule.IValidationRuleFactory) IProcessDefaultParametersProvider(de.metas.process.IProcessDefaultParametersProvider) InterfaceWrapperHelper.load(org.adempiere.model.InterfaceWrapperHelper.load) PickingSlotQuery(de.metas.picking.api.IPickingSlotDAO.PickingSlotQuery) IValidationRule(org.adempiere.ad.validationRule.IValidationRule) IHUProductStorage(de.metas.handlingunits.storage.IHUProductStorage) I_M_PickingSlot(de.metas.picking.model.I_M_PickingSlot) PickingSlotQuery(de.metas.picking.api.IPickingSlotDAO.PickingSlotQuery) IPickingSlotDAO(de.metas.picking.api.IPickingSlotDAO) IShipmentScheduleEffectiveBL(de.metas.inoutcandidate.api.IShipmentScheduleEffectiveBL) I_M_ShipmentSchedule(de.metas.inoutcandidate.model.I_M_ShipmentSchedule)

Example 4 with I_M_PickingSlot

use of de.metas.picking.model.I_M_PickingSlot in project metasfresh-webui-api by metasfresh.

the class PickingSlotViewRepositoryTests method testRetrievePickingSlotRows_No_HUs_show_PickingSlotsOnly.

/**
 * Verifies {@link PickingSlotViewRepository#retrieveRows(PickingSlotRepoQuery)}<br>
 * when there are no HUs (no picking candidates) assigned to a picking slot, but still the picking slot itself shall be shown.
 */
@Test
public void testRetrievePickingSlotRows_No_HUs_show_PickingSlotsOnly() {
    final I_M_ShipmentSchedule shipmentSchedule = newInstance(I_M_ShipmentSchedule.class);
    save(shipmentSchedule);
    final I_M_PickingSlot pickingSlot = newInstance(I_M_PickingSlot.class);
    pickingSlot.setIsPickingRackSystem(true);
    save(pickingSlot);
    final PickingSlotRepoQuery query = PickingSlotRepoQuery.of(shipmentSchedule.getM_ShipmentSchedule_ID());
    // @formatter:off return an empty list
    new Expectations() {

        {
            pickingHUsRepo.retrievePickedHUsIndexedByPickingSlotId(query);
            result = ImmutableListMultimap.of();
        }
    };
    // @formatter:on
    final NullLookupDataSource nullDS = NullLookupDataSource.instance;
    final PickingSlotViewRepository pickingSlotViewRepository = new PickingSlotViewRepository(pickingHUsRepo, () -> nullDS, () -> nullDS, () -> nullDS);
    final List<PickingSlotRow> pickingSlotRows = pickingSlotViewRepository.retrievePickingSlotRows(query);
    // even if there are no HUs, there shall still be a row for our picking slot.
    assertThat(pickingSlotRows.size(), is(1));
    final PickingSlotRow pickingSlotRow = pickingSlotRows.get(0);
    assertThat(pickingSlotRow.getType()).isEqualTo(PickingSlotRowType.forPickingSlotRow());
}
Also used : Expectations(mockit.Expectations) I_M_PickingSlot(de.metas.picking.model.I_M_PickingSlot) I_M_ShipmentSchedule(de.metas.handlingunits.model.I_M_ShipmentSchedule) NullLookupDataSource(de.metas.ui.web.window.model.lookup.NullLookupDataSource) Test(org.junit.Test)

Example 5 with I_M_PickingSlot

use of de.metas.picking.model.I_M_PickingSlot in project metasfresh-webui-api by metasfresh.

the class PickingSlotViewRepository method retrievePickingSlotsForShipmentSchedule.

/**
 * Retrieves the M_PickingSlots that are available for the given shipmentSchedules' partner and location.
 * Assumes that all shipment schedules have the same partner and location (needs to be made sure) before starting all this stuff
 *
 * @param shipmentSchedule
 * @return
 */
private static List<I_M_PickingSlot> retrievePickingSlotsForShipmentSchedule(@NonNull final PickingSlotRepoQuery repoQuery) {
    final I_M_ShipmentSchedule shipmentSchedule = loadOutOfTrx(repoQuery.getCurrentShipmentScheduleId(), I_M_ShipmentSchedule.class);
    final IShipmentScheduleEffectiveBL shipmentScheduleEffectiveBL = Services.get(IShipmentScheduleEffectiveBL.class);
    final PickingSlotQuery pickingSlotQuery = PickingSlotQuery.builder().availableForBPartnerId(shipmentScheduleEffectiveBL.getC_BPartner_ID(shipmentSchedule)).availableForBPartnerLocationId(shipmentScheduleEffectiveBL.getC_BP_Location_ID(shipmentSchedule)).warehouseId(shipmentScheduleEffectiveBL.getWarehouseId(shipmentSchedule)).barcode(repoQuery.getPickingSlotBarcode()).build();
    final IPickingSlotDAO pickingSlotDAO = Services.get(IPickingSlotDAO.class);
    final List<I_M_PickingSlot> pickingSlots = pickingSlotDAO.retrievePickingSlots(pickingSlotQuery);
    return pickingSlots;
}
Also used : I_M_PickingSlot(de.metas.picking.model.I_M_PickingSlot) PickingSlotQuery(de.metas.picking.api.IPickingSlotDAO.PickingSlotQuery) IPickingSlotDAO(de.metas.picking.api.IPickingSlotDAO) I_M_ShipmentSchedule(de.metas.inoutcandidate.model.I_M_ShipmentSchedule) IShipmentScheduleEffectiveBL(de.metas.inoutcandidate.api.IShipmentScheduleEffectiveBL)

Aggregations

I_M_PickingSlot (de.metas.picking.model.I_M_PickingSlot)5 I_M_ShipmentSchedule (de.metas.handlingunits.model.I_M_ShipmentSchedule)2 IShipmentScheduleEffectiveBL (de.metas.inoutcandidate.api.IShipmentScheduleEffectiveBL)2 I_M_ShipmentSchedule (de.metas.inoutcandidate.model.I_M_ShipmentSchedule)2 IPickingSlotDAO (de.metas.picking.api.IPickingSlotDAO)2 PickingSlotQuery (de.metas.picking.api.IPickingSlotDAO.PickingSlotQuery)2 Expectations (mockit.Expectations)2 Test (org.junit.Test)2 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableListMultimap (com.google.common.collect.ImmutableListMultimap)1 ListMultimap (com.google.common.collect.ListMultimap)1 IHUContextFactory (de.metas.handlingunits.IHUContextFactory)1 I_M_HU (de.metas.handlingunits.model.I_M_HU)1 IHUProductStorage (de.metas.handlingunits.storage.IHUProductStorage)1 IShipmentSchedulePA (de.metas.inoutcandidate.api.IShipmentSchedulePA)1 IProcessDefaultParameter (de.metas.process.IProcessDefaultParameter)1 IProcessDefaultParametersProvider (de.metas.process.IProcessDefaultParametersProvider)1 PickedHUEditorRow (de.metas.ui.web.picking.pickingslot.PickingHURowsRepository.PickedHUEditorRow)1 IntegerLookupValue (de.metas.ui.web.window.datatypes.LookupValue.IntegerLookupValue)1 LookupValuesList (de.metas.ui.web.window.datatypes.LookupValuesList)1