Skip to content

Commit

Permalink
Document included tab: provide actions to be displayed in included ta…
Browse files Browse the repository at this point in the history
…b's top lane

#1134
  • Loading branch information
teosarca committed Jan 26, 2019
1 parent 6864798 commit 4aa08e3
Show file tree
Hide file tree
Showing 35 changed files with 312 additions and 157 deletions.
37 changes: 24 additions & 13 deletions src/main/java/de/metas/ui/web/config/WebuiAccountingConfig.java
@@ -1,5 +1,8 @@
package de.metas.ui.web.config;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;

import org.adempiere.ad.table.api.IADTableDAO;
Expand All @@ -8,7 +11,10 @@

import de.metas.acct.doc.AcctDocRegistry;
import de.metas.logging.LogManager;
import de.metas.process.AdProcessId;
import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.document.process.WEBUI_Fact_Acct_Repost;
import de.metas.util.Services;

Expand Down Expand Up @@ -49,26 +55,31 @@ public WebuiAccountingConfig(final AcctDocRegistry acctDocRegistry)
public void registerRepostProcess()
{
final IADProcessDAO adProcessesRepo = Services.get(IADProcessDAO.class);
final int repostProcessId = adProcessesRepo.retriveProcessIdByClassIfUnique(WEBUI_Fact_Acct_Repost.class);
if (repostProcessId <= 0)
final IADTableDAO adTablesRepo = Services.get(IADTableDAO.class);

final AdProcessId repostProcessId = adProcessesRepo.retrieveProcessIdByClassIfUnique(WEBUI_Fact_Acct_Repost.class);
if (repostProcessId == null)
{
logger.warn("No AD_Process_ID found for {}", WEBUI_Fact_Acct_Repost.class);
return;
}

//
// Link Repost process to all accountable documents
acctDocRegistry
.getDocTableNames()
.forEach(docTableName -> adProcessesRepo.registerTableProcess(docTableName, repostProcessId));
final List<String> linkToTableNames = new ArrayList<>();
linkToTableNames.addAll(acctDocRegistry.getDocTableNames());
linkToTableNames.add(WEBUI_Fact_Acct_Repost.TABLENAME_RV_UnPosted);

//
// Link Repost process to RV_UnPosted view
final IADTableDAO adTablesRepo = Services.get(IADTableDAO.class);
final int rvUnPostTableId = adTablesRepo.retrieveTableId(WEBUI_Fact_Acct_Repost.TABLENAME_RV_UnPosted);
if (rvUnPostTableId > 0)
{
adProcessesRepo.registerTableProcess(rvUnPostTableId, repostProcessId);
}
// Link Repost process to all accountable documents
linkToTableNames
.stream()
.map(adTablesRepo::retrieveTableId)
.filter(adTableId -> adTableId > 0)
.forEach(adTableId -> adProcessesRepo.registerTableProcess(RelatedProcessDescriptor.builder()
.processId(repostProcessId)
.tableId(adTableId)
.anyWindow()
.displayPlace(DisplayPlace.ViewQuickActions) // NOTE: atm the process works only for views
.build()));
}
}
Expand Up @@ -139,7 +139,7 @@ protected WebuiHUTransformParametersFiller newParametersFiller()
@ProcessParamLookupValuesProvider(parameterName = PARAM_Action, dependsOn = {}, numericKey = false)
private LookupValuesList getActions()
{
return newParametersFiller().getActions(getProcessInfo().getAD_Process_ID());
return newParametersFiller().getActions(getProcessInfo().getAdProcessId());
}

/**
Expand Down
Expand Up @@ -25,6 +25,7 @@
import de.metas.handlingunits.model.I_M_HU_PI_Version;
import de.metas.handlingunits.model.X_M_HU;
import de.metas.printing.esb.base.util.Check;
import de.metas.process.AdProcessId;
import de.metas.process.IADProcessDAO;
import de.metas.process.IProcessDefaultParametersProvider;
import de.metas.product.ProductId;
Expand Down Expand Up @@ -152,7 +153,7 @@ else if (WEBUI_M_HU_Transform.PARAM_HUPlanningReceiptOwnerPM_LU.equals(parameter
/**
* @return the actions that are available according to which row is currently selected and to also according to whether there are already existing TUs or LUs in the context.
*/
public final LookupValuesList getActions(final int processId)
public final LookupValuesList getActions(final AdProcessId processId)
{
final Set<String> allowedActions = new HashSet<>();

Expand All @@ -173,7 +174,7 @@ else if (huRow.isLU())
}

final IADProcessDAO adProcessDAO = Services.get(IADProcessDAO.class);
final I_AD_Process_Para processParameter = adProcessDAO.retriveProcessParameter(processId, WEBUI_M_HU_Transform.PARAM_Action);
final I_AD_Process_Para processParameter = adProcessDAO.retrieveProcessParameter(processId, WEBUI_M_HU_Transform.PARAM_Action);
final int actionsReferenceId = processParameter.getAD_Reference_Value_ID();
final Collection<ADRefListItem> allActiveActionItems = adReferenceDAO.retrieveListItems(actionsReferenceId);

Expand Down
Expand Up @@ -2,6 +2,7 @@

import de.metas.handlingunits.process.api.HUProcessDescriptor;
import de.metas.process.ProcessPreconditionsResolution;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.process.ProcessId;
import de.metas.ui.web.process.descriptor.ProcessDescriptor;
import de.metas.ui.web.process.descriptor.WebuiRelatedProcessDescriptor;
Expand Down Expand Up @@ -72,7 +73,7 @@ public WebuiRelatedProcessDescriptor toWebuiRelatedProcessDescriptor()
.internalName(processDescriptor.getInternalName())
.processCaption(processDescriptor.getCaption())
.processDescription(processDescriptor.getDescription())
.quickAction(true)
.displayPlace(DisplayPlace.ViewQuickActions)
.preconditionsResolutionSupplier(() -> ProcessPreconditionsResolution.accept())
.build();
}
Expand Down
@@ -1,7 +1,5 @@
package de.metas.ui.web.material.cockpit;

import lombok.NonNull;

import javax.annotation.Nullable;

import org.adempiere.exceptions.AdempiereException;
Expand All @@ -10,8 +8,10 @@
import com.google.common.collect.ImmutableList;

import de.metas.i18n.ITranslatableString;
import de.metas.process.AdProcessId;
import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.document.filter.DocumentFilter;
import de.metas.ui.web.document.filter.DocumentFilterDescriptorsProvider;
import de.metas.ui.web.material.cockpit.filters.MaterialCockpitFilters;
Expand All @@ -31,6 +31,7 @@
import de.metas.ui.web.window.descriptor.factory.standard.DefaultDocumentDescriptorFactory;
import de.metas.util.Check;
import de.metas.util.Services;
import lombok.NonNull;

/*
* #%L
Expand Down Expand Up @@ -136,16 +137,16 @@ public ViewLayout getViewLayout(
private final RelatedProcessDescriptor createProcessDescriptor(@NonNull final Class<?> processClass)
{
final IADProcessDAO adProcessDAO = Services.get(IADProcessDAO.class);
final int processId = adProcessDAO.retrieveProcessIdByClass(processClass);
if (processId <= 0)
final AdProcessId processId = adProcessDAO.retrieveProcessIdByClass(processClass);
if (processId == null)
{
throw new AdempiereException("No processId found for " + processClass);
}

return RelatedProcessDescriptor.builder()
.processId(processId)
.anyTable().anyWindow()
.webuiQuickAction(true)
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}

Expand Down
Expand Up @@ -12,6 +12,7 @@
import de.metas.i18n.ITranslatableString;
import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.document.filter.DocumentFiltersList;
import de.metas.ui.web.exceptions.EntityNotFoundException;
import de.metas.ui.web.order.pricingconditions.process.PricingConditionsView_CopyRowToEditable;
Expand Down Expand Up @@ -221,8 +222,9 @@ private final RelatedProcessDescriptor createProcessDescriptor(@NonNull final Cl
final IADProcessDAO adProcessDAO = Services.get(IADProcessDAO.class);
return RelatedProcessDescriptor.builder()
.processId(adProcessDAO.retrieveProcessIdByClass(processClass))
.anyTable().anyWindow()
.webuiQuickAction(true)
.anyTable()
.anyWindow()
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}

Expand Down
Expand Up @@ -50,7 +50,10 @@ public class ProductsProposalRow implements IViewRow
{
@ViewColumn(captionKey = "M_Product_ID", widgetType = DocumentFieldWidgetType.Lookup, seqNo = 10)
private final LookupValue product;

// TODO ASI column

// Show price with currency
@ViewColumn(captionKey = "Price", widgetType = DocumentFieldWidgetType.Amount, seqNo = 20)
private final Amount price;

Expand All @@ -59,6 +62,7 @@ public class ProductsProposalRow implements IViewRow
@Getter
private final BigDecimal qty;

// TODO: change it to "last shipment days" = now() - last shipment date
@ViewColumn(captionKey = "LastShipmentDate", widgetType = DocumentFieldWidgetType.Amount, seqNo = 40)
private final LocalDate lastShipmentDate;

Expand Down
Expand Up @@ -4,6 +4,7 @@

import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.handlingunits.HUEditorRow;
import de.metas.ui.web.handlingunits.HUEditorViewBuilder;
import de.metas.ui.web.handlingunits.HUEditorViewFactoryTemplate;
Expand Down Expand Up @@ -95,8 +96,8 @@ protected void customizeHUEditorView(@NonNull final HUEditorViewBuilder huViewBu
private RelatedProcessDescriptor createProcessDescriptor(@NonNull final Class<?> processClass)
{
return RelatedProcessDescriptor.builder()
.processId(adProcessDAO.retriveProcessIdByClassIfUnique(processClass))
.webuiQuickAction(true)
.processId(adProcessDAO.retrieveProcessIdByClassIfUnique(processClass))
.displayPlace(DisplayPlace.ViewQuickActions)
.webuiDefaultQuickAction()
.build();
}
Expand Down
Expand Up @@ -13,9 +13,11 @@
import com.google.common.collect.ImmutableList;

import de.metas.i18n.ITranslatableString;
import de.metas.process.AdProcessId;
import de.metas.process.IADProcessDAO;
import de.metas.process.JavaProcess;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.purchasecandidate.PurchaseDemand;
import de.metas.purchasecandidate.PurchaseDemandWithCandidates;
import de.metas.purchasecandidate.PurchaseDemandWithCandidatesService;
Expand Down Expand Up @@ -216,12 +218,12 @@ private final PurchaseRowsSupplier createRowsSupplier(

protected final RelatedProcessDescriptor createProcessDescriptor(@NonNull final Class<?> processClass)
{
final int processId = adProcessRepo.retriveProcessIdByClassIfUnique(processClass);
Preconditions.checkArgument(processId > 0, "No AD_Process_ID found for %s", processClass);
final AdProcessId processId = adProcessRepo.retrieveProcessIdByClassIfUnique(processClass);
Preconditions.checkArgument(processId != null, "No AD_Process_ID found for %s", processClass);

return RelatedProcessDescriptor.builder()
.processId(processId)
.webuiQuickAction(true)
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}

Expand Down
Expand Up @@ -11,6 +11,7 @@
import de.metas.inoutcandidate.api.ShipmentScheduleId;
import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.document.filter.DocumentFilter;
import de.metas.ui.web.document.filter.DocumentFilterDescriptorsProvider;
import de.metas.ui.web.document.filter.ImmutableDocumentFilterDescriptorsProvider;
Expand Down Expand Up @@ -159,8 +160,8 @@ protected void customizeHUEditorView(@NonNull final HUEditorViewBuilder huViewBu
private RelatedProcessDescriptor createProcessDescriptor(@NonNull final Class<?> processClass)
{
return RelatedProcessDescriptor.builder()
.processId(adProcessDAO.retriveProcessIdByClassIfUnique(processClass))
.webuiQuickAction(true)
.processId(adProcessDAO.retrieveProcessIdByClassIfUnique(processClass))
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}

Expand Down
Expand Up @@ -16,8 +16,10 @@
import de.metas.cache.CCache;
import de.metas.inoutcandidate.api.ShipmentScheduleId;
import de.metas.printing.esb.base.util.Check;
import de.metas.process.AdProcessId;
import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.document.filter.DocumentFilterDescriptorsProvider;
import de.metas.ui.web.picking.PickingConstants;
import de.metas.ui.web.picking.pickingslot.PickingSlotRepoQuery.PickingSlotRepoQueryBuilder;
Expand Down Expand Up @@ -217,12 +219,12 @@ private static RelatedProcessDescriptor createProcessDescriptorForPickingSlotVie
{
final IADProcessDAO adProcessDAO = Services.get(IADProcessDAO.class);

final int processId = adProcessDAO.retriveProcessIdByClassIfUnique(processClass);
Preconditions.checkArgument(processId > 0, "No AD_Process_ID found for %s", processClass);
final AdProcessId processId = adProcessDAO.retrieveProcessIdByClassIfUnique(processClass);
Preconditions.checkArgument(processId != null, "No AD_Process_ID found for %s", processClass);

return RelatedProcessDescriptor.builder()
.processId(processId)
.webuiQuickAction(true)
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}
}
Expand Up @@ -6,8 +6,10 @@
import com.google.common.collect.ImmutableList;

import de.metas.money.MoneyService;
import de.metas.process.AdProcessId;
import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.document.filter.DocumentFilterDescriptorsProvider;
import de.metas.ui.web.pickingV2.PickingConstantsV2;
import de.metas.ui.web.pickingV2.packageable.process.PackageablesView_OpenProductsToPick;
Expand Down Expand Up @@ -105,16 +107,16 @@ private Iterable<? extends RelatedProcessDescriptor> getRelatedProcessDescriptor
private final RelatedProcessDescriptor createProcessDescriptor(@NonNull final Class<?> processClass)
{
final IADProcessDAO adProcessDAO = Services.get(IADProcessDAO.class);
final int processId = adProcessDAO.retrieveProcessIdByClass(processClass);
if (processId <= 0)
final AdProcessId processId = adProcessDAO.retrieveProcessIdByClass(processClass);
if (processId == null)
{
throw new AdempiereException("No processId found for " + processClass);
}

return RelatedProcessDescriptor.builder()
.processId(processId)
.anyTable().anyWindow()
.webuiQuickAction(true)
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}

Expand Down
@@ -1,11 +1,12 @@
package de.metas.ui.web.pickingV2.productsToPick;

import org.adempiere.exceptions.AdempiereException;
import org.springframework.beans.factory.annotation.Autowired;

import de.metas.i18n.IMsgBL;
import de.metas.process.AdProcessId;
import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.pickingV2.PickingConstantsV2;
import de.metas.ui.web.pickingV2.packageable.PackageableRow;
import de.metas.ui.web.pickingV2.productsToPick.process.ProductsToPick_4EyesReview_ProcessAll;
Expand Down Expand Up @@ -145,17 +146,13 @@ public ProductsToPickView createView(@NonNull final PackageableRow packageableRo
private final RelatedProcessDescriptor createProcessDescriptor(@NonNull final Class<?> processClass)
{
final IADProcessDAO adProcessDAO = Services.get(IADProcessDAO.class);
final int processId = adProcessDAO.retrieveProcessIdByClass(processClass);
if (processId <= 0)
{
throw new AdempiereException("No processId found for " + processClass);
}
final AdProcessId processId = adProcessDAO.retrieveProcessIdByClass(processClass);

return RelatedProcessDescriptor.builder()
.processId(processId)
.anyTable()
.anyWindow()
.webuiQuickAction(true)
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}
}
Expand Up @@ -10,6 +10,7 @@
import de.metas.process.IADProcessDAO;
import de.metas.process.JavaProcess;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.handlingunits.DefaultHUEditorViewFactory;
import de.metas.ui.web.handlingunits.HUEditorView;
import de.metas.ui.web.handlingunits.HUIdsFilterHelper;
Expand Down Expand Up @@ -165,7 +166,7 @@ private RelatedProcessDescriptor createProcessDescriptor(Class<? extends JavaPro
return RelatedProcessDescriptor.builder()
.processId(adProcessDAO.retrieveProcessIdByClass(processClass))
.anyTable().anyWindow()
.webuiQuickAction(true)
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}

Expand Down
Expand Up @@ -15,6 +15,7 @@
import de.metas.picking.api.PickingSlotQuery.PickingSlotQueryBuilder;
import de.metas.process.IADProcessDAO;
import de.metas.process.RelatedProcessDescriptor;
import de.metas.process.RelatedProcessDescriptor.DisplayPlace;
import de.metas.ui.web.document.filter.DocumentFilterDescriptorsProvider;
import de.metas.ui.web.document.filter.DocumentFiltersList;
import de.metas.ui.web.picking.pickingslot.PickingSlotRow;
Expand Down Expand Up @@ -158,7 +159,7 @@ private RelatedProcessDescriptor createProcessDescriptor(final Class<?> processC
return RelatedProcessDescriptor.builder()
.processId(adProcessDAO.retrieveProcessIdByClass(processClass))
.anyTable().anyWindow()
.webuiQuickAction(true)
.displayPlace(DisplayPlace.ViewQuickActions)
.build();
}

Expand Down

0 comments on commit 4aa08e3

Please sign in to comment.