- Cuando el usuario final crea un pedido, el
invoiceBuilder
es necesario llamar a una clase para crear el documento PDF y actualizar la orden de venta.
Con este fin, la claseSalesOrderProcessor.java
Modificar. El código que se encuentra a continuación debe agregarse al reciboSalesOrderById
método.Paquete:
com.sap.espm.model.function.impl
Rango:
SalesOrderProcessor.java
Método:
getSalesOrderById
try {
Query query = em.createQuery("SELECT soi FROM SalesOrderItem soi where soi.id.salesOrderId= :salesOrderId");
query.setParameter("salesOrderId", salesOrderId);
try {
soiList = query.getResultList();
if (soiList != null && soiList.size() >= 1) {
for (SalesOrderItem salesOrderItem : soiList) {
query = em.createQuery(
"SELECT product FROM Product product where product.productId = :productId");
query.setParameter("productId", salesOrderItem.getProductId());
Product product = (Product) query.getSingleResult();
salesOrderItem.setProduct(product);
}
// if the sales order are fetched successfully, generate the
// pdf report data.
if (CMISSessionHelper.getSession() != null) {
InvoiceBuilder builder = new InvoiceBuilder();
String reportPath = builder.generateInvoice(soiList);
updateSalesOrderHeader(reportPath, soiList, em);
}
}
} catch (NoResultException e) {
throw new ODataApplicationException("No matching Sales Order with Sales Order Id:" + salesOrderId,
Locale.ENGLISH, HttpStatusCodes.BAD_REQUEST);
} catch (ReportGenerationException reportGenerationException) {
//LOGGER.error("Exception while generating the report : " + reportGenerationException.getMessage());
reportGenerationException.printStackTrace();
throw new ODataApplicationException("PDF Report Generation Error for :" + salesOrderId,
Locale.ENGLISH, HttpStatusCodes.INTERNAL_SERVER_ERROR);
} catch(Throwable throwable){
throw new ODataApplicationException("PDF Report Generation Error for :" + salesOrderId,
Locale.ENGLISH, HttpStatusCodes.INTERNAL_SERVER_ERROR);
}
return soiList;
- Agregue las declaraciones de importación como se muestra en la pieza a continuación.
import com.sap.espm.model.documentservice.CMISSessionHelper;
import com.sap.espm.model.documentservice.InvoiceBuilder;
import com.sap.espm.model.documentservice.ReportGenerationException;
- Agregue la función al
SalesOrderHeader
con una ruta al documento PDF de la factura.Paquete:
com.sap.espm.model.function.impl
Rango:
SalesOrderProcessor.java
Método:
updateSalesOrderHeather
/**
* Function Import implementation for updating SalesOrderHeader with report path
*/
private void updateSalesOrderHeader(String reportPath, List<SalesOrderItem> soiList, EntityManager em) {
SalesOrderHeader soh = null;
// update the SalesOrderHeader with the report path
if (soiList != null && soiList.size() >= 1) {
EntityTransaction transaction = em.getTransaction();
try {
transaction.begin();
soh = soiList.get(0).getSalesOrderHeader();
soh..setInvoiceLink(reportPath);
// save the soiList.
em.merge(soh);
}catch (Exception e){
}finally{
transaction.commit();
}
}
}