public void checkIfExistsFinalRecord(final StateChangeContext stateChangeContext) { final Entity productionTracking = stateChangeContext.getOwner(); final Entity order = productionTracking.getBelongsToField(ProductionTrackingFields.ORDER); final String typeOfProductionRecording = order.getStringField(OrderFieldsPC.TYPE_OF_PRODUCTION_RECORDING); final SearchCriteriaBuilder searchBuilder = productionTracking.getDataDefinition().find(); searchBuilder.add( SearchRestrictions.eq( ProductionTrackingFields.STATE, ProductionTrackingStateStringValues.ACCEPTED)); searchBuilder.add(SearchRestrictions.belongsTo(ProductionTrackingFields.ORDER, order)); searchBuilder.add(SearchRestrictions.eq(ProductionTrackingFields.LAST_TRACKING, true)); if (productionCountingService.isTypeOfProductionRecordingForEach(typeOfProductionRecording)) { searchBuilder.add( SearchRestrictions.belongsTo( ProductionTrackingFields.TECHNOLOGY_OPERATION_COMPONENT, productionTracking.getBelongsToField( ProductionTrackingFields.TECHNOLOGY_OPERATION_COMPONENT))); } if (searchBuilder.list().getTotalNumberOfEntities() != 0) { stateChangeContext.addValidationError( "productionCounting.productionTracking.messages.error.finalExists"); } }
public void closeOrder(final StateChangeContext stateChangeContext) { final Entity productionTracking = stateChangeContext.getOwner(); final Entity order = productionTracking.getBelongsToField(ORDER); if (!orderClosingHelper.orderShouldBeClosed(productionTracking)) { return; } if (order.getStringField(STATE).equals(COMPLETED.getStringValue())) { stateChangeContext.addMessage( "productionCounting.order.orderIsAlreadyClosed", StateMessageType.INFO, false); return; } final StateChangeContext orderStateChangeContext = stateChangeContextBuilder.build( orderStateChangeAspect.getChangeEntityDescriber(), order, OrderState.COMPLETED.getStringValue()); orderStateChangeAspect.changeState(orderStateChangeContext); Entity orderFromDB = order.getDataDefinition().get(orderStateChangeContext.getOwner().getId()); if (orderFromDB.getStringField(STATE).equals(COMPLETED.getStringValue())) { stateChangeContext.addMessage( "productionCounting.order.orderClosed", StateMessageType.INFO, false); } else if (StateChangeStatus.PAUSED.equals(orderStateChangeContext.getStatus())) { stateChangeContext.addMessage( "productionCounting.order.orderWillBeClosedAfterExtSync", StateMessageType.INFO, false); } else { stateChangeContext.addMessage( "productionCounting.order.orderCannotBeClosed", StateMessageType.FAILURE, false); List<ErrorMessage> errors = Lists.newArrayList(); if (!orderFromDB.getErrors().isEmpty()) { errors.addAll(order.getErrors().values()); } if (!orderFromDB.getGlobalErrors().isEmpty()) { errors.addAll(order.getGlobalErrors()); } if (!errors.isEmpty()) { StringBuilder errorMessages = new StringBuilder(); for (ErrorMessage errorMessage : errors) { String translatedErrorMessage = translationService.translate( errorMessage.getMessage(), Locale.getDefault(), errorMessage.getVars()); errorMessages.append(translatedErrorMessage); errorMessages.append(", "); } stateChangeContext.addValidationError( "orders.order.orderStates.error", errorMessages.toString()); } } }
private void checkIfRecordOperationProductComponentsWereFilled( final StateChangeContext stateChangeContext) { final Entity productionTracking = stateChangeContext.getOwner(); if (!checkIfUsedQuantitiesWereFilled( productionTracking, ProductionTrackingFields.TRACKING_OPERATION_PRODUCT_IN_COMPONENTS) && !checkIfUsedQuantitiesWereFilled( productionTracking, ProductionTrackingFields.TRACKING_OPERATION_PRODUCT_OUT_COMPONENTS)) { stateChangeContext.addValidationError( "productionCounting.productionTracking.messages.error.recordOperationProductComponentsNotFilled"); } }