Saltar al contenido

Utilice el servicio de documentos en su aplicación Java

  1. 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 clase SalesOrderProcessor.java Modificar. El código que se encuentra a continuación debe agregarse al recibo SalesOrderById 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;
  1. 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;

Importar

  1. 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();
   	 }
    }
}

Gerente de entidad

Hecho

Inicie sesión para responder la pregunta