Skip to content

Instantly share code, notes, and snippets.

@ksiwonia
Last active December 14, 2015 04:29
Show Gist options
  • Save ksiwonia/5028951 to your computer and use it in GitHub Desktop.
Save ksiwonia/5028951 to your computer and use it in GitHub Desktop.
@Service
public class DeliveryStateServiceMF {
@Autowired
private DataDefinitionService dataDefinitionService;
@Autowired
private MaterialFlowService materialFlowService;
public void createTransfersForTheReceivedProducts(final StateChangeContext stateChangeContext) {
final Entity delivery = stateChangeContext.getOwner();
if (delivery == null) {
return;
}
Entity location = (Entity) delivery.getField(DeliveryFields.LOCATION);
if (location == null) {
return;
}
if (!StringUtils.isEmpty(location.getStringField(LocationFields.EXTERNAL_NUMBER))) {
List<Entity> deliveredProducts = delivery.getHasManyField(DeliveryFields.DELIVERED_PRODUCTS);
DataDefinition transferDD = dataDefinitionService.get(MaterialFlowConstants.PLUGIN_IDENTIFIER,
MaterialFlowConstants.MODEL_TRANSFER);
for (Entity product : deliveredProducts) {
Entity transfer = transferDD.create();
transfer.setField(TransferFields.NUMBER, materialFlowService.generateNumberFromProduct(
(Entity) product.getField(DeliveredProductFields.PRODUCT), MaterialFlowConstants.MODEL_TRANSFER));
transfer.setField(TransferFields.TIME, delivery.getField(DeliveryFields.DELIVERY_DATE));
transfer.setField(TransferFields.PRODUCT, product.getField(DeliveredProductFields.PRODUCT));
transfer.setField(TransferFields.QUANTITY, product.getField(DeliveredProductFields.DELIVERED_QUANTITY));
transfer.setField(TransferFields.LOCATION_TO, delivery.getField(DeliveryFields.LOCATION));
transfer.setField(TransferFields.TYPE, TransferType.TRANSPORT.getStringValue());
transfer.setField(FROM_DELIVERY, delivery);
transfer.getDataDefinition().save(transfer);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment