Advertisement
aadddrr

Untitled

Jun 15th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.04 KB | None | 0 0
  1. /**
  2.  *
  3.  */
  4. package org.jleaf.erp.purch.bo.po;
  5.  
  6. import java.util.List;
  7.  
  8. import javax.persistence.Query;
  9.  
  10. import org.jleaf.common.entity.OU;
  11. import org.jleaf.core.AbstractBusinessFunction;
  12. import org.jleaf.core.BusinessFunction;
  13. import org.jleaf.core.CoreExceptionConstants;
  14. import org.jleaf.core.Dto;
  15. import org.jleaf.core.annotation.ErrorList;
  16. import org.jleaf.core.annotation.Info;
  17. import org.jleaf.core.annotation.InfoIn;
  18. import org.jleaf.core.annotation.InfoOut;
  19. import org.jleaf.core.dao.QueryBuilder;
  20. import org.jleaf.erp.master.entity.OuStructure;
  21. import org.jleaf.erp.master.entity.Partner;
  22. import org.jleaf.erp.purch.PurchasingConstants;
  23. import org.jleaf.erp.purch.dao.PurchaseOrderDao;
  24. import org.jleaf.util.DtoUtil;
  25. import org.jleaf.util.ValidationUtil;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28.  
  29. /**
  30.  * get authorized product not in stock list for purchase order
  31.  *
  32.  * @author david 13 Sep 2012
  33.  *
  34.  */
  35.  
  36. /**
  37.  * Menghilangkan kondisi exists in status_item F atau I
  38.  * modified by Adrian
  39.  * Jun 16, 2017
  40.  */
  41.  
  42. //@formatter:off
  43. @Service("getOutstandingSoListForPo")
  44. @InfoIn(value = {
  45.         @Info(name = "tenantId", description = "tenant id", type = Long.class),
  46.         @Info(name = "ouId", description = "ou id", type = Long.class)
  47. })
  48. @InfoOut(value = {
  49.         @Info(name = "soList", description = "list of SO (docTypeId, soId, soNo, soDate, partnerId, partnerCode, partnerName, extDocNo, extDocDate, remark)", type = List.class)
  50. })
  51. @ErrorList(errorKeys = {
  52.         CoreExceptionConstants.DTO_CANNOT_NULL
  53. })
  54. //@formatter:on
  55. public class GetOutstandingSoListForPoForIndocom extends AbstractBusinessFunction implements BusinessFunction {
  56.  
  57.     @Autowired
  58.     PurchaseOrderDao purchaseOrderDao;
  59.  
  60.     @Override
  61.     public String getDescription() {
  62.         return "get outstanding so list for po";
  63.     }
  64.  
  65.     @SuppressWarnings("unchecked")
  66.     @Override
  67.     public Dto execute(Dto inputDto) throws Exception {
  68.         // validate inputDto have key in @InfoIn
  69.         ValidationUtil.valDtoContainsKey(inputDto, "tenantId");
  70.         ValidationUtil.valDtoContainsKey(inputDto, "ouId");
  71.  
  72.         // prepare list for query result
  73.         List<Object[]> result = null;
  74.        
  75.         QueryBuilder builder = new QueryBuilder();
  76.         builder.add("SELECT A.doc_type_id, A.so_id, A.doc_no, A.doc_date, A.partner_id, E.partner_code, E.partner_name, ")
  77.                 .add(" A.ext_doc_no, A.ext_doc_date, f_get_ou_name(A.ou_id) AS ou_name, A.remark ")
  78.                 .add(" FROM sl_so A INNER JOIN ")
  79.                 .add(OuStructure.TABLE_NAME)
  80.                 .add(" B ON A.ou_id = B.ou_id INNER JOIN ")
  81.                 .add(Partner.TABLE_NAME)
  82.                 .add(" E ON A.partner_id=E.partner_id ")
  83.                 .add(" WHERE a.tenant_id = :tenantId ")
  84.                 .add(" AND B.ou_bu_id = :ouId")
  85.                     .add(" AND EXISTS( SELECT 1 FROM ")
  86.                         .add(PurchasingConstants.TABLE_SO__ITEM)
  87.                         .add(" C INNER JOIN ")
  88.                             .add(PurchasingConstants.TABLE_SO_PO_BALANCE_ITEM)
  89.                             .add(" D ON C.so_item_id = D.so_item_id ")
  90.                         .add(" INNER JOIN ")
  91.                             .add(PurchasingConstants.TABLE_SO_BALANCE_ITEM)
  92.                             .add(" E ON D.so_item_id = E.so_item_id ")
  93.                         .add(" WHERE C.so_id = A.so_id ")
  94.                         .add(" AND A.ou_id = D.ou_id ")
  95.                         .add(" AND C.tenant_id = A.tenant_id ")
  96.                         .add(" AND D.status_item = :RELEASED AND E.status_item = :RELEASED ")
  97.                         .add(" GROUP BY A.so_id )")
  98.                     .add(" AND EXISTS( SELECT 1 FROM ")
  99.                         .add(PurchasingConstants.TABLE_SO__ITEM)
  100.                         .add(" C INNER JOIN ")
  101.                             .add(PurchasingConstants.TABLE_SO_PO_BALANCE_ITEM)
  102.                             .add(" D ON C.so_item_id = D.so_item_id ")
  103.                         .add(" INNER JOIN ")
  104.                             .add(PurchasingConstants.TABLE_SO_BALANCE_ITEM)
  105.                             .add(" E ON D.so_item_id = E.so_item_id ")
  106.                         .add(" WHERE C.so_id = A.so_id ")
  107.                         .add(" AND A.ou_id = D.ou_id ")
  108.                         .add(" AND C.tenant_id = A.tenant_id ")
  109.                         .add(" AND D.qty_po_int > 0 ")
  110.                         .add(" GROUP BY A.so_id ) ")
  111.                 .add(" GROUP BY A.doc_type_id, A.so_id, A.doc_no, A.doc_date, A.partner_id, partner_code, partner_name, A.ext_doc_no, A.ext_doc_date, A.remark ")
  112.                 .add(" ORDER BY A.doc_no ");
  113.        
  114. //      QueryBuilder builder = new QueryBuilder();
  115. //      builder.add("SELECT c.doc_type_id, c.so_id, c.doc_no, c.doc_date, c.partner_id, d.partner_code, d.partner_name, c.ext_doc_no, c.ext_doc_date, f.ou_name ")
  116. //             .add(" FROM sl_so_po_balance_item z ")
  117. //             .add(" INNER JOIN sl_so_balance_item a ON A.so_item_id = z.so_item_id ")
  118. //             .add(" INNER JOIN sl_so_item b ON a.so_item_id = b.so_item_id ")
  119. //             .add(" INNER JOIN sl_so c ON b.so_id = c.so_id ")
  120. //             .add(" INNER JOIN "+Partner.TABLE_NAME+" d ON c.partner_id = d.partner_id ")
  121. //             .add(" INNER JOIN "+OuStructure.TABLE_NAME+" e ON e.ou_id = a.ou_id ")
  122. //             .add(" INNER JOIN "+OU.TABLE_NAME+" f ON a.ou_id=f.ou_id")
  123. //             .add(" WHERE a.tenant_id = :tenantId AND e.ou_bu_id = :ouId ")
  124. //             .add("   AND (a.qty_so_int - a.qty_cancel_int + a.qty_add_int) - (z.qty_po_int + z.qty_po_int_add - z.qty_po_int_cancel ) > 0 ")
  125. //             .add("   AND a.status_item = :RELEASED ")
  126. //             .add("   AND z.status_item = :RELEASED ")
  127. //             .add(" GROUP BY c.doc_type_id, c.so_id, c.doc_no, c.doc_date, c.partner_id, d.partner_code, d.partner_name, c.ext_doc_no, c.ext_doc_date, f.ou_name ")
  128. //             .add(" ORDER BY c.doc_no ASC ");
  129.        
  130.  
  131.         // create native query
  132.         Query q = purchaseOrderDao.createNativeQuery(builder.toString());
  133.  
  134.         // set query parameter (if any)
  135.         q.setParameter("tenantId", inputDto.getLong("tenantId"));
  136.         q.setParameter("ouId", inputDto.getLong("ouId"));
  137.         q.setParameter("RELEASED", PurchasingConstants.RELEASED_TRANSACTION);
  138.         //q.setParameter("FINAL", PurchasingConstants.FINAL_TRANSACTION);
  139.         //q.setParameter("INPROGRESSTRANSACTION", PurchasingConstants.IN_PROGRESS_TRANSACTION);
  140.  
  141.         // get query result
  142.         result = q.getResultList();
  143.  
  144.         // return as Dto using DtoUtil.createDtoListFromArray
  145.         return new Dto().putList("soList",
  146.                 DtoUtil.createDtoListFromArray(result, "docTypeId", "soId", "soNo", "soDate", "partnerId", "partnerCode", "partnerName", "extDocNo", "extDocDate", "ouName", "remark"));
  147.     }
  148.    
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement