private void createOrderProcess( NewInvoiceDTO newInvoice, InvoiceDTO invoice, BillingProcessDTO process, Integer origin) throws SessionInternalError { LOG.debug("Generating order process records..."); // update the orders involved, now that their old data is not needed // anymore for (int f = 0; f < newInvoice.getOrders().size(); f++) { OrderDTO order = (OrderDTO) newInvoice.getOrders().get(f); LOG.debug(" ... order " + order.getId()); // this will help later List<PeriodOfTime> periodsList = newInvoice.getPeriods().get(f); Date startOfBillingPeriod = (Date) periodsList.get(0).getStart(); Date endOfBillingPeriod = periodsList.get(periodsList.size() - 1).getEnd(); Integer periods = (Integer) newInvoice.getPeriods().get(f).size(); // We don't update orders if this is just a review if (newInvoice.getIsReview().intValue() == 0) { // update the to_process if applicable updateStatusFinished(order, startOfBillingPeriod, endOfBillingPeriod); // update this order process field updateNextBillableDay(order, endOfBillingPeriod); } // create the period and update the order-invoice relationship try { OrderProcessDAS das = new OrderProcessDAS(); OrderProcessDTO orderProcess = new OrderProcessDTO(); orderProcess.setPeriodStart(startOfBillingPeriod); orderProcess.setPeriodEnd(endOfBillingPeriod); orderProcess.setIsReview(newInvoice.getIsReview()); orderProcess.setPurchaseOrder(order); InvoiceDAS invDas = new InvoiceDAS(); orderProcess.setInvoice(invDas.find(invoice.getId())); BillingProcessDAS proDas = new BillingProcessDAS(); orderProcess.setBillingProcess(process != null ? proDas.find(process.getId()) : null); orderProcess.setPeriodsIncluded(periods); orderProcess.setOrigin(origin); orderProcess = das.save(orderProcess); LOG.debug( "created order process id " + orderProcess.getId() + " for order " + order.getId()); } catch (Exception e) { throw new SessionInternalError(e); } } }