LegalEntity customer = order.getCustomer();
if (customer == null)
throw new IllegalStateException("order.getCustomer() returned null!");
PersistenceManager pm = getPersistenceManager();
Trader trader = Trader.getTrader(pm);
OrganisationLegalEntity mandator = trader.getMandator();
if (mandator.equals(customer) && (vendor instanceof OrganisationLegalEntity)) {
tradeSide = TradeSide.customerCrossOrganisation;
// TODO: Implement foreign stuff
throw new UnsupportedOperationException("NYI");
}
else {
if (mandator.equals(vendor))
tradeSide = TradeSide.vendor;
else if (mandator.equals(customer))
tradeSide = TradeSide.customerLocal;
else
throw new IllegalStateException("mandator is neither customer nor vendor! order=" + order + " mandator=" + mandator);
offerIDPrefix = getOfferIDPrefix(user, offerIDPrefix);
RecurredOffer recurredOffer = new RecurredOffer(recurringOffer,
user, order,
offerIDPrefix, IDGenerator.nextID(Offer.class, offerIDPrefix));
new OfferLocal(recurredOffer); // OfferLocal registers itself in Offer
recurredOffer = getPersistenceManager().makePersistent(recurredOffer);
trader.validateOffer(recurredOffer);
// RecurredOffer has the same workflow definition as other offers,
// thus we persist a workflow from the assignment to Offer.class
ProcessDefinitionAssignment processDefinitionAssignment = (ProcessDefinitionAssignment) getPersistenceManager().getObjectById(
ProcessDefinitionAssignmentID.create(Offer.class, tradeSide));