Advertisement
aadddrr

ValNoProductConsignmentItemDuplicate

May 27th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.36 KB | None | 0 0
  1. package org.jleaf.erp.purch.bo.po;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.persistence.Query;
  6.  
  7. import org.jleaf.core.AbstractBusinessFunction;
  8. import org.jleaf.core.BusinessFunction;
  9. import org.jleaf.core.CoreException;
  10. import org.jleaf.core.Dto;
  11. import org.jleaf.core.GeneralConstants;
  12. import org.jleaf.core.annotation.Info;
  13. import org.jleaf.core.annotation.InfoIn;
  14. import org.jleaf.core.dao.QueryBuilder;
  15. import org.jleaf.erp.master.dao.ProductDao;
  16. import org.jleaf.erp.master.entity.Product;
  17. import org.jleaf.erp.purch.PurchasingExceptionConstantsForCland;
  18. import org.jleaf.erp.purch.entity.PurchaseOrder;
  19. import org.jleaf.erp.purch.entity.PurchaseOrderExt;
  20. import org.jleaf.erp.purch.entity.PurchaseOrderItem;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25.  
  26. /**
  27.  * Memperbaiki pesan exception
  28.  * modified by Adrian
  29.  * May 28, 2018
  30.  */
  31.  
  32. /**
  33.  * Perlu dilakukan validasi untuk produk konsinyasi dalam saat bersamaan tidak
  34.  * boleh ada produk yang duplikat
  35.  *
  36.  * 1. Cek ke tabel pu_po_item untuk PO yang masih DRAFT, product_id tersebut
  37.  * tidak boleh ada 2. Cek ke tabel pu_po_balance_item_consignment tidak boleh
  38.  * ada product_id itu yang status_item = 'R'
  39.  *
  40.  * @author Ali
  41.  *
  42.  */
  43. // @formatter:off
  44. @Service
  45. @InfoIn(value = {
  46.         @Info(name = "currentPoId", description = "current po ID", type = Long.class),
  47.         @Info(name = "productId", description = "product ID to check", type = Long.class) })
  48. // @formatter:on
  49. public class ValNoProductConsignmentItemDuplicate extends
  50.         AbstractBusinessFunction implements BusinessFunction {
  51.  
  52.     private static final Logger log = LoggerFactory
  53.             .getLogger(ValNoProductConsignmentItemDuplicate.class);
  54.     @Autowired
  55.     private ProductDao productDao;
  56.  
  57.     public String getDescription() {
  58.         return "Validation no product consignment item duplicate";
  59.     }
  60.  
  61.     public Dto execute(Dto inputDto) throws Exception {
  62.         Long currentPoId = inputDto.getLong("currentPoId");
  63.         Long productId = inputDto.getLong("productId");
  64.        
  65.         log.debug(">>>>>>>>>> log current PO Id >>>>>>>>>>>>>>" + currentPoId);
  66.         log.debug(">>>>>>>>>> log product Id >>>>>>>>>>>>>>" + productId);
  67.        
  68.  
  69.         // Cek ke tabel pu_po_item untuk PO yang masih DRAFT, product_id
  70.         // tersebut tidak boleh ada
  71.         QueryBuilder builder = new QueryBuilder();
  72.         builder.add("SELECT A.po_item_id, A.po_id, B.doc_no, C.product_code FROM ");
  73.         builder.add(PurchaseOrderItem.TABLE_NAME).add(" A");
  74.         builder.add(" INNER JOIN ");
  75.         builder.add(PurchaseOrder.TABLE_NAME).add(" B ");
  76.         builder.add(" ON A.po_id=B.po_id ");
  77.         builder.add(" INNER JOIN ");
  78.         builder.add(Product.TABLE_NAME).add(" C ");
  79.         builder.add(" ON C.product_id=A.product_id ");
  80.         builder.add(" INNER JOIN ");
  81.         builder.add(PurchaseOrderExt.TABLE_NAME).add(" D ");
  82.         builder.add(" ON D.po_id = B.po_id ");
  83.         builder.add(" WHERE B.status_doc IN ('D','I') AND C.product_id = "
  84.                 + productId);
  85.         builder.addIfNotEmpty(currentPoId, " AND A.po_id <> " + currentPoId);
  86.         builder.add(" AND D.flg_buy_consignment = :YES ");
  87.         builder.add(" AND D.flg_konsinyasi_manual = :NO ");
  88.  
  89.         Query query = productDao.createNativeQuery(builder.toString());
  90.         query.setParameter("YES", GeneralConstants.YES);
  91.         query.setParameter("NO", GeneralConstants.NO);
  92.        
  93.         List<Object[]> list = query.getResultList();
  94.         int countDuplicate = list.size();
  95.  
  96.         log.debug(">>>>>>>>>> isi buildernya >>>>>>>>>>>>>>" + builder.toString());
  97.        
  98.         if (countDuplicate > 0) {
  99.             String productCode = String.valueOf(list.get(0)[3]);
  100.             String docNo = String.valueOf(list.get(0)[2]);
  101.             throw new CoreException(
  102.                     PurchasingExceptionConstantsForCland.PRODUCT_CURRENTLY_USED_IN_ANOTHER_TRANSACTION,
  103.                     productCode,
  104.                     docNo);
  105.         }
  106.  
  107.         // Cek ke tabel pu_po_balance_item_consignment tidak boleh ada
  108.         // product_id itu yang status_item <> 'F'
  109.         builder = new QueryBuilder();
  110.         builder.add("SELECT A.po_item_id, A.po_id, B.doc_no, D.product_code FROM ");
  111.         builder.add(PurchaseOrderItem.TABLE_NAME).add(" A");
  112.         builder.add(" INNER JOIN ");
  113.         builder.add(PurchaseOrder.TABLE_NAME).add(" B ");
  114.         builder.add(" ON A.po_id=B.po_id ");
  115.         builder.add(" INNER JOIN ");
  116.         builder.add(" pu_po_balance_item_consignment C");
  117.         builder.add(" ON A.po_item_id=C.po_item_id ");
  118.         builder.add(" INNER JOIN ");
  119.         builder.add(Product.TABLE_NAME).add(" D ");
  120.         builder.add(" ON D.product_id=A.product_id ");
  121.         builder.add(" INNER JOIN ");
  122.         builder.add(PurchaseOrderExt.TABLE_NAME).add(" E ");
  123.         builder.add(" ON E.po_id = B.po_id ");
  124.         builder.add(" WHERE C.status_item <> 'F' AND D.product_id = " + productId);
  125.         builder.add(" AND E.flg_buy_consignment = :YES ");
  126.         builder.add(" AND E.flg_konsinyasi_manual = :NO ");
  127.  
  128.         query = productDao.createNativeQuery(builder.toString());
  129.         query.setParameter("YES", GeneralConstants.YES);
  130.         query.setParameter("NO", GeneralConstants.NO);
  131.        
  132.         list = query.getResultList();
  133.         countDuplicate = list.size();
  134.  
  135.         log.debug(">>>>>>>>>> isi buildernya yang ke 2 >>>>>>>>>>>>>>" + builder.toString());
  136.        
  137.         if (countDuplicate > 0) {
  138.             String productCode = String.valueOf(list.get(0)[3]);
  139.             String docNo = String.valueOf(list.get(0)[2]);
  140.             throw new CoreException(
  141.                     PurchasingExceptionConstantsForCland.PRODUCT_CURRENTLY_USED_IN_ANOTHER_TRANSACTION,
  142.                     productCode,
  143.                     docNo);
  144.         }
  145.  
  146.         return null;
  147.     }
  148.  
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement