aadddrr

GetApprovedSoMlmListForNewSalesSupport

Jul 17th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 21.30 KB | None | 0 0
  1. package org.jleaf.erp.sls.bo.newinquirysomlmforss;
  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.Dto;
  10. import org.jleaf.core.GeneralConstants;
  11. import org.jleaf.core.annotation.Info;
  12. import org.jleaf.core.annotation.InfoIn;
  13. import org.jleaf.core.annotation.InfoOut;
  14. import org.jleaf.core.dao.CriteriaHelper;
  15. import org.jleaf.core.dao.CriteriaHelper.CriteriaHelperEnum;
  16. import org.jleaf.core.dao.QueryBuilder;
  17. import org.jleaf.erp.master.entity.Partner;
  18. import org.jleaf.erp.master.entity.Product;
  19. import org.jleaf.erp.master.entity.ProductCatalog;
  20. import org.jleaf.erp.mlm.entity.Ds;
  21. import org.jleaf.erp.mlm.entity.DsArea;
  22. import org.jleaf.erp.sls.SalesMlmConstantsForPaloma;
  23. import org.jleaf.erp.sls.dao.SalesOrderMlmDao;
  24. import org.jleaf.erp.sls.entity.SalesOrder;
  25. import org.jleaf.erp.sls.entity.SalesOrderBalanceItem;
  26. import org.jleaf.erp.sls.entity.SalesOrderItem;
  27. import org.jleaf.erp.sls.entity.SalesOrderMlm;
  28. import org.jleaf.erp.sls.entity.SalesOrderMlmItem;
  29. import org.jleaf.erp.sls.entity.SoApprovedStatus;
  30. import org.jleaf.erp.sls.entity.SoExt;
  31. import org.jleaf.util.DtoUtil;
  32. import org.slf4j.Logger;
  33. import org.slf4j.LoggerFactory;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35. import org.springframework.stereotype.Service;
  36.  
  37. /**
  38.  * Menambahkan union dengan SO Online
  39.  * modified by Adrian
  40.  * Jul 17, 2018
  41.  */
  42.  
  43. @Service
  44. @InfoIn(value = {
  45.         @Info(name = "tenantLoginId", description = "tenant login id", type = Long.class),
  46.         @Info(name = "partnerId", description = "partner id", type = Long.class, required = false),
  47.         @Info(name = "ouId", description = "ou id", type = Long.class, required = false),
  48.         @Info(name = "startDate", description = "start date", type = String.class, required = false),
  49.         @Info(name = "endDate", description = "end date", type = String.class, required = false),
  50.         @Info(name = "docNo", description = "doc no", type = String.class, required = false),
  51.         @Info(name = "flgPicking", description = "flag Picking", type = String.class, required = false),
  52.         @Info(name = "flgScan", description = "flag Scan", type = String.class, required = false),
  53.         @Info(name = "flgPacking", description = "flag Packing", type = String.class, required = false),
  54.         @Info(name = "flgShipment", description = "flg Shipment", type = String.class, required = false),
  55.         @Info(name = "flgDropship", description = "flg Dropship", type = String.class, required = false),
  56.         @Info(name = "statusSo", description = "status So", type = String.class, required = false),
  57.         @Info(name = "sortById", description = "sort by id", type = Long.class),
  58.         @Info(name = "limit", description = "limit", type = Long.class),
  59.         @Info(name = "offset", description = "offset", type = Long.class)
  60. })
  61. @InfoOut(
  62.         value = { @Info(name = "soMlmList", description = "list so mlm(soId,tenantId,docNo,docDate,partnerId,partnerName,partnerCode,remark,flgPicking,flgScan,flgPacking,flgDelivery,statusDoc, totalHargaKatak,totalHargaKatalogTerkirim, totalHargaMember, totalHargaMemberTerkirim, nilaiKomisi, nilaiKomisiTerkirim,totalPembelian,totalPembelianTerkirim, additionalCost, additionalCostTerkirim, nextRoleForSubmit,autoApprovalTime,autoApprovalName,ssApprovalTime,ssApprovalName,financeApprovalTime,financeApprovalName,lastScanPickingTime,lastScanPickingName, flgSoOnline)", type = List.class) }
  63. )
  64.  
  65. public class GetApprovedSoMlmListForNewSalesSupport extends AbstractBusinessFunction implements BusinessFunction {
  66.    
  67.     private static final Logger log = LoggerFactory.getLogger(GetApprovedSoMlmListForNewSalesSupport.class);
  68.  
  69.     @Autowired
  70.     SalesOrderMlmDao salesOrderMlmDao;
  71.  
  72.     @SuppressWarnings("unchecked")
  73.     public Dto execute(Dto inputDto) throws Exception {
  74.         List<Object[]> result = null;
  75.         //log.info("ini isi input dto di get approved"+inputDto);
  76.        
  77.         String sortField = inputDto.getString("sortField");
  78.         String sortOrder = inputDto.getString("sortOrder");
  79.         String productCodeName = inputDto.getString("productCodeName");
  80.         String productCatalogCodeName = inputDto.getString("productCatalogCodeName");
  81.        
  82.         StringBuilder dynamicQuery = new StringBuilder(200);
  83.         //String dynamicQuery = GeneralConstants.EMPTY_VALUE;
  84.        
  85.         if (sortField.equals(SalesMlmConstantsForPaloma.TOTAL_PEMBELIAN )){
  86.             dynamicQuery.append(" ORDER BY total_pembelian ");
  87.         }else if (sortField.equals(SalesMlmConstantsForPaloma.DOC_NO)){
  88.             dynamicQuery.append(" ORDER BY A.doc_no ");
  89.         }else if (sortField.equals(SalesMlmConstantsForPaloma.DOC_DATE)){
  90.             dynamicQuery.append(" ORDER BY A.doc_date ");
  91.         }else if (sortField.equals(SalesMlmConstantsForPaloma.PARTNER_CODE)){
  92.             dynamicQuery.append(" ORDER BY B.partner_code ");
  93.         }else if (sortField.equals(SalesMlmConstantsForPaloma.PARTNER_NAME)){
  94.             dynamicQuery.append(" ORDER BY B.partner_name ");
  95.         }else if (sortField.equals(SalesMlmConstantsForPaloma.TOTAL_HARGA_MEMBER)){
  96.             dynamicQuery.append(" ORDER BY total_harga_member ");
  97.         }else if (sortField.equals(SalesMlmConstantsForPaloma.NEXT_ROLE_FOR_SUBMIT)){
  98.             dynamicQuery.append(" ORDER BY next_role_for_submit ");
  99.         }else if (sortField.equals(SalesMlmConstantsForPaloma.TOTAL_HARGA_MEMBER_TERKIRIM)){
  100.             dynamicQuery.append(" ORDER BY total_harga_member_terkirim ");
  101.         }else if (sortField.equals(SalesMlmConstantsForPaloma.TOTAL_PEMBELIAN_TERKIRIM)){
  102.             dynamicQuery.append(" ORDER BY total_pembelian_terkirim ");
  103.         }else if (sortField.equals(SalesMlmConstantsForPaloma.DS_AREA)){
  104.             dynamicQuery.append(" ORDER BY F.area_name ");
  105.         }
  106.        
  107.         if (sortOrder.equals(SalesMlmConstantsForPaloma.DECENDING)){
  108.             dynamicQuery.append(" DESC ");
  109.         }else if (sortOrder.equals(SalesMlmConstantsForPaloma.ASCENDING)){
  110.             dynamicQuery.append(" ASC ");
  111.         }
  112.        
  113.         QueryBuilder builder = new QueryBuilder();
  114.         //SO MLM
  115.         builder.add(" ( ")
  116.                 .add(" SELECT A.so_mlm_id, A.tenant_id, A.doc_no, ")
  117.                 .add(" to_char(to_timestamp(A.doc_date, 'YYYYMMDDHH24MISS'),'DD-MM-YYYY') AS docDate, ")
  118.                 .add(" A.partner_id, B.partner_name, B.partner_code, A.remark, A.flg_picking, ")                               
  119.                 .add(" A.flg_scan, A.flg_packing, A.flg_shipment, A.flg_dropship, A.ou_id, A.status_doc, ")
  120.                 .add(" CASE WHEN C.last_print_picking_time != '' THEN  to_char(to_timestamp(C.last_print_picking_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END  AS waktu_cetak_so, ")
  121.                 .add(" C.last_print_picking_user, ")
  122.                 .add(" TRIM(TO_CHAR(D.total_catalog_price_amount, '999G999G999G999G990')) AS total_catalog_price_amount, TRIM(TO_CHAR(D.delivered_total_catalog_price_amount, '999G999G999G999G990')) AS delivered_total_catalog_price_amount, ")
  123.                 .add(" TRIM(TO_CHAR(D.total_member_price_amount, '999G999G999G999G990')) AS total_harga_member, TRIM(TO_CHAR(D.delivered_total_member_price_amount, '999G999G999G999G990')) AS total_harga_member_terkirim, ")
  124.                 .add(" TRIM(TO_CHAR(D.total_commission_amount, '999G999G999G999G990')) AS total_commission_amount, TRIM(TO_CHAR(D.delivered_total_commission_amount, '999G999G999G999G990')) AS delivered_total_commission_amount, ")
  125.                 .add(" TRIM(TO_CHAR(D.total_invoiced_amount, '999G999G999G999G990')) AS total_pembelian, TRIM(TO_CHAR(D.delivered_total_invoiced_amount, '999G999G999G999G990')) AS total_pembelian_terkirim, ")
  126.                 .add(" TRIM(TO_CHAR(D.total_additional_cost, '999G999G999G999G990')) AS total_additional_cost, TRIM(TO_CHAR(D.delivered_total_additional_cost, '999G999G999G999G990')) AS delivered_total_additional_cost, ")
  127.                 .add(" TRIM(TO_CHAR(D.total_member_price_amount, '999G999G999G999G990')) AS total_harga_netto, TRIM(TO_CHAR((D.delivered_total_member_price_amount - D.delivered_total_commission_amount), '999G999G999G999G990')) AS delivered_total_harga_netto, ")
  128.                 .add(" f_get_next_role_for_submit_inquiry_so_mlm_for_paloma(A.tenant_id, A.so_mlm_id) AS next_role_for_submit, ")
  129.                 .add(" CASE WHEN C.last_auto_approve_time != '' THEN to_char(to_timestamp(C.last_auto_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS autoApprovalTime, ")
  130.                 .add(" COALESCE(C.last_auto_approve_user,'') AS autoApprovalName, ")
  131.                 .add(" CASE WHEN C.last_ss_approve_time != '' THEN to_char(to_timestamp(C.last_ss_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS ssApprovalTime, ")
  132.                 .add(" COALESCE(C.last_ss_approve_user,'') AS ssApprovalName, ")
  133.                 .add(" CASE WHEN C.last_fin_approve_time != '' THEN to_char(to_timestamp(C.last_fin_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS financeApprovalTime,")
  134.                 .add(" COALESCE(C.last_fin_approve_user,'') AS financeApprovalName, ")
  135.                 .add(" CASE WHEN C.last_scan_picking_time != '' THEN to_char(to_timestamp(C.last_scan_picking_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END  AS lastScanPickingTime, ")
  136.                 .add(" COALESCE(C.last_scan_picking_user,'') AS lastScanPickingName, ")
  137.                 .add(" A.status_so, A.so_mlm_id, A.version,A.flg_tutup_so, A.workflow_status, F.area_name ")
  138.                 .add(" , :NO AS flgSoOnline ")
  139.                 .add(" FROM ").add(SalesOrderMlm.TABLE_NAME).add(" A ")
  140.                 .add(" INNER JOIN ").add(Partner.TABLE_NAME).add(" B on B.partner_id = A.partner_id ")
  141.                 .add(" LEFT JOIN ").add(SoApprovedStatus.TABLE_NAME).add(" C ON A.so_mlm_id = C.so_mlm_id ")
  142.                 .add(" INNER JOIN sl_so_mlm_totals D ON A.so_mlm_id = D.so_mlm_id ")
  143.                 .add(" INNER JOIN ").add(Ds.TABLE_NAME).add(" E ON B.partner_id = E.partner_id ")
  144.                 .add(" INNER JOIN ").add(DsArea.TABLE_NAME).add(" F ON E.ds_area_id = F.ds_area_id ")
  145.                 .add(" WHERE A.status_so IN ").add(inputDto.getString("statusSo"))
  146.                 .add(" AND A.doc_date BETWEEN :startDate AND :endDate ")
  147.                 .add(" AND A.ou_id = :ouId ")
  148.                 .addIfNotEquals(inputDto.get("tenantLoginId"), GeneralConstants.NULL_REF_VALUE_LONG,  " AND A.tenant_id = "+inputDto.get("tenantLoginId"))
  149.                 .addIfNotNull(inputDto.get("docNo")," AND "+ CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("docNo"), " A.doc_no ", CriteriaHelperEnum.BOTH))
  150.                 .addIfNotNull(inputDto.get("flgDropship")," AND "+ CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("flgDropship"), " A.flg_dropship "))
  151.                 .addIfNotEquals(inputDto.get("partnerId"), GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = "+inputDto.getLong("partnerId"))
  152.                 .add(" AND NOT EXISTS ( SELECT 1 from sl_so_mlm_cicilan_status Y WHERE Y.so_mlm_id=A.so_mlm_id ) ");
  153.                
  154.         if(!productCatalogCodeName.equals(GeneralConstants.EMPTY_VALUE) || !productCodeName.equals(GeneralConstants.EMPTY_VALUE)){
  155.         builder.add(" AND EXISTS ( ")
  156.                 .add(" SELECT 1 FROM ")
  157.                 .add(SalesOrderMlm.TABLE_NAME).add(" D ")
  158.                 .add(" INNER JOIN ").add(SalesOrderMlmItem.TABLE_NAME).add(" E ON E.so_mlm_id = D.so_mlm_id")
  159.                 .add(" INNER JOIN ").add(ProductCatalog.TABLE_NAME).add(" F ON E.product_catalog_id = F.product_catalog_id")
  160.                 .add(" INNER JOIN ").add(Product.TABLE_NAME).add(" G ON F.product_id = G.product_id")
  161.                 .add(" WHERE D.so_mlm_id = A.so_mlm_id ")
  162.                 .addIfNotEmpty(productCatalogCodeName , new StringBuilder().append(" AND (").append(CriteriaHelper.likeExpressionIgnoreCase(productCatalogCodeName, " F.product_catalog_code "))
  163.                         .append(" OR ").append(CriteriaHelper.likeExpressionIgnoreCase(productCatalogCodeName, " F.product_catalog_name ")).append(")").toString())
  164.                 .addIfNotEmpty(productCodeName , new StringBuilder().append(" AND (").append(CriteriaHelper.likeExpressionIgnoreCase(productCodeName, " G.product_code "))
  165.                         .append(" OR ").append(CriteriaHelper.likeExpressionIgnoreCase(productCodeName, " G.product_name ")).append(")").toString())
  166.                 .add(" GROUP BY D.so_mlm_id ")
  167.                 .add(" ) ");
  168.         }
  169.         builder.add(" GROUP BY A.so_mlm_id, A.tenant_id, A.doc_no, A.doc_date, A.partner_id, B.partner_name, B.partner_code, ")
  170.                 .add(" A.remark, A.flg_picking, A.flg_scan, A.flg_packing, A.flg_shipment, A.flg_dropship, A.ou_id, A.status_doc, ")
  171.                 .add(" C.last_print_picking_time, C.last_print_picking_user, C.last_fin_approve_time, C.last_fin_approve_user, ")
  172.                 .add(" C.last_auto_approve_time, C.last_auto_approve_user, C.last_ss_approve_time, C.last_ss_approve_user,")
  173.                 .add(" C.last_scan_picking_time,  C.last_scan_picking_user, D.total_catalog_price_amount, D.delivered_total_catalog_price_amount, ")
  174.                 .add(" D.total_member_price_amount, D.delivered_total_member_price_amount, D.total_commission_amount, D.delivered_total_commission_amount, ")
  175.                 .add(" D.total_invoiced_amount, D.delivered_total_invoiced_amount, D.total_additional_cost, D.delivered_total_additional_cost, F.area_name ")
  176.                 .add(dynamicQuery.toString());
  177.        
  178.         builder.add(" ) UNION ( ");
  179.        
  180.         //SO Online
  181.         builder.add(" WITH harga AS ( ")
  182.                 .add("SELECT C.so_id, ")
  183.                 .add(" SUM(A.qty_so * B.gross_sell_price) AS total_gross_sell_price, ")
  184.                 .add(" SUM(A.qty_dlv_int * B.gross_sell_price) AS total_gross_sell_price_delivered ")
  185.                 .add(" FROM ")
  186.                 .add(SalesOrderBalanceItem.TABLE_NAME)
  187.                 .add(" A INNER JOIN ")
  188.                 .add(SalesOrderItem.TABLE_NAME)
  189.                 .add(" B ON A.tenant_id = B.tenant_id AND A.so_item_id = B.so_item_id ")
  190.                 .add(" INNER JOIN ")
  191.                 .add(SalesOrder.TABLE_NAME)
  192.                 .add(" C ON B.tenant_id = C.tenant_id AND B.so_id = C.so_id ")
  193.                 .add(" INNER JOIN ")
  194.                 .add(SoExt.TABLE_NAME)
  195.                 .add(" D ON C.so_id = D.so_id ")
  196.                 .add(" WHERE C.doc_type_id = :docTypeSoOnline ")
  197.                 .addIfNotEquals(inputDto.get("tenantLoginId"), GeneralConstants.NULL_REF_VALUE_LONG,  " AND A.tenant_id = "+inputDto.get("tenantLoginId"))
  198.                 .addIfNotNull(inputDto.get("docNo")," AND "+ CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("docNo"), " A.doc_no ", CriteriaHelperEnum.BOTH))
  199.                 .addIfNotNull(inputDto.get("flgDropship")," AND "+ CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("flgDropship"), " D.flg_dropship "))
  200.                 .addIfNotEquals(inputDto.get("partnerId"), GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = "+inputDto.getLong("partnerId"))
  201.                 .add(" GROUP BY C.so_id ")
  202.                 .add(" ) ")
  203.                 .add(" SELECT A.so_id, A.tenant_id, A.doc_no, ")
  204.                 .add(" to_char(to_timestamp(A.doc_date, 'YYYYMMDDHH24MISS'),'DD-MM-YYYY') AS docDate, ")
  205.                 .add(" A.partner_id, B.partner_name, B.partner_code, A.remark, D.flg_picking, ")                               
  206.                 .add(" D.flg_scan, D.flg_packing, D.flg_shipment, D.flg_dropship, A.ou_id, A.status_doc, ")
  207.                 .add(" CASE WHEN C.last_print_picking_time != '' THEN  to_char(to_timestamp(C.last_print_picking_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END  AS waktu_cetak_so, ")
  208.                 .add(" C.last_print_picking_user, ")
  209.                 .add(" TRIM(TO_CHAR(E.total_gross_sell_price, '999G999G999G999G990')) AS total_catalog_price_amount, TRIM(TO_CHAR(E.total_gross_sell_price_delivered, '999G999G999G999G990')) AS delivered_total_catalog_price_amount, ")
  210.                 .add(" TRIM(TO_CHAR(E.total_gross_sell_price, '999G999G999G999G990')) AS total_harga_member, TRIM(TO_CHAR(E.total_gross_sell_price_delivered, '999G999G999G999G990')) AS total_harga_member_terkirim, ")
  211.                 .add(" TRIM(TO_CHAR(0, '999G999G999G999G990')) AS total_commission_amount, TRIM(TO_CHAR(0, '999G999G999G999G990')) AS delivered_total_commission_amount, ")
  212.                 .add(" TRIM(TO_CHAR(E.total_gross_sell_price + f_get_so_additional_cost(A.so_id), '999G999G999G999G990')) AS total_pembelian, TRIM(TO_CHAR(E.total_gross_sell_price_delivered + f_get_so_additional_cost(A.so_id), '999G999G999G999G990')) AS total_pembelian_terkirim, ")
  213.                 .add(" TRIM(TO_CHAR(f_get_so_additional_cost(A.so_id), '999G999G999G999G990')) AS total_additional_cost, TRIM(TO_CHAR(f_get_so_additional_cost(A.so_id), '999G999G999G999G990')) AS delivered_total_additional_cost, ")
  214.                 .add(" TRIM(TO_CHAR(E.total_gross_sell_price, '999G999G999G999G990')) AS total_harga_netto, TRIM(TO_CHAR(E.total_gross_sell_price_delivered, '999G999G999G999G990')) AS delivered_total_harga_netto, ")
  215.                 .add(" f_get_next_role_for_submit_inquiry_so_online_for_paloma(A.tenant_id, A.so_mlm_id) AS next_role_for_submit, ")
  216.                 .add(" CASE WHEN C.last_auto_approve_time != '' THEN to_char(to_timestamp(C.last_auto_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS autoApprovalTime, ")
  217.                 .add(" COALESCE(C.last_auto_approve_user,'') AS autoApprovalName, ")
  218.                 .add(" CASE WHEN C.last_ss_approve_time != '' THEN to_char(to_timestamp(C.last_ss_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS ssApprovalTime, ")
  219.                 .add(" COALESCE(C.last_ss_approve_user,'') AS ssApprovalName, ")
  220.                 .add(" CASE WHEN C.last_fin_approve_time != '' THEN to_char(to_timestamp(C.last_fin_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS financeApprovalTime,")
  221.                 .add(" COALESCE(C.last_fin_approve_user,'') AS financeApprovalName, ")
  222.                 .add(" CASE WHEN C.last_scan_picking_time != '' THEN to_char(to_timestamp(C.last_scan_picking_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END  AS lastScanPickingTime, ")
  223.                 .add(" COALESCE(C.last_scan_picking_user,'') AS lastScanPickingName, ")
  224.                 .add(" D.status_so, A.so_id, A.version, D.flg_tutup_so, A.workflow_status, :DASH AS areaName ")
  225.                 .add(" , :YES AS flgSoOnline ")
  226.                 .add(" FROM ").add(SalesOrder.TABLE_NAME).add(" A ")
  227.                 .add(" INNER JOIN ").add(Partner.TABLE_NAME).add(" B on B.partner_id = A.partner_id ")
  228.                 .add(" INNER JOIN sl_so_online_approved_status C ON A.so_id = C.so_id ")
  229.                 .add(" INNER JOIN sl_so_ext D ON A.so_id = D.so_id ")
  230.                 .add(" INNER JOIN harga E ON A.so_id = E.so_id ")
  231.                 .add(" WHERE D.status_so IN ").add(inputDto.getString("statusSo"))
  232.                 .add(" AND A.doc_type_id = :docTypeSoOnline ")
  233.                 .add(" AND A.doc_date BETWEEN :startDate AND :endDate ")
  234.                 .add(" AND A.ou_id = :ouId ")
  235.                 .addIfNotEquals(inputDto.get("tenantLoginId"), GeneralConstants.NULL_REF_VALUE_LONG,  " AND A.tenant_id = "+inputDto.get("tenantLoginId"))
  236.                 .addIfNotNull(inputDto.get("docNo")," AND "+ CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("docNo"), " A.doc_no ", CriteriaHelperEnum.BOTH))
  237.                 .addIfNotNull(inputDto.get("flgDropship")," AND "+ CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("flgDropship"), " D.flg_dropship "))
  238.                 .addIfNotEquals(inputDto.get("partnerId"), GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = "+inputDto.getLong("partnerId"));
  239.                
  240.         if(!productCodeName.equals(GeneralConstants.EMPTY_VALUE)){
  241.             builder.add(" AND EXISTS ( ")
  242.                     .add(" SELECT 1 ")
  243.                     .add(" FROM ").add(SalesOrderItem.TABLE_NAME).add(" G ")
  244.                     .add(" INNER JOIN ").add(Product.TABLE_NAME).add(" H ON G.product_id = H.product_id")
  245.                     .add(" WHERE G.so_id = A.so_id ")
  246.                     .addIfNotEmpty(productCodeName , new StringBuilder().append(" AND (").append(CriteriaHelper.likeExpressionIgnoreCase(productCodeName, " H.product_code "))
  247.                             .append(" OR ").append(CriteriaHelper.likeExpressionIgnoreCase(productCodeName, " H.product_name ")).append(")").toString())
  248.                     .add(" ) ");
  249.         }
  250.        
  251.         builder.add(" GROUP BY A.so_id, A.tenant_id, A.doc_no, A.doc_date, A.partner_id, B.partner_name, B.partner_code, ")
  252.                 .add(" A.remark, D.flg_picking, D.flg_scan, D.flg_packing, D.flg_shipment, D.flg_dropship, A.ou_id, A.status_doc, ")
  253.                 .add(" C.last_print_picking_time, C.last_print_picking_user, C.last_fin_approve_time, C.last_fin_approve_user, ")
  254.                 .add(" C.last_auto_approve_time, C.last_auto_approve_user, C.last_ss_approve_time, C.last_ss_approve_user,")
  255.                 .add(" C.last_scan_picking_time,  C.last_scan_picking_user, E.total_gross_sell_price, E.total_gross_sell_price_delivered ")
  256.                 .add(dynamicQuery.toString());
  257.        
  258.         builder.add(" ) ");
  259.        
  260.        
  261.         if(inputDto.getLong("limit")!=null) builder.add(" LIMIT " + inputDto.getLong("limit"));
  262.         if(inputDto.getLong("offset")!=null) builder.add(" OFFSET " + inputDto.getLong("offset"));
  263.        
  264.         Query query = salesOrderMlmDao.createNativeQuery(builder.toString());
  265.         query.setParameter("startDate", inputDto.get("startDate"));
  266.         query.setParameter("endDate", inputDto.get("endDate"));
  267.         query.setParameter("ouId", inputDto.get("ouId"));
  268.         query.setParameter("docTypeSoOnline", SalesMlmConstantsForPaloma.DOC_TYPE_SALES_ORDER_ONLINE);
  269.         query.setParameter("DASH", SalesMlmConstantsForPaloma.NO_AREA);
  270.         query.setParameter("YES", GeneralConstants.YES);
  271.         query.setParameter("NO", GeneralConstants.NO);
  272.  
  273.         result = query.getResultList();
  274.        
  275.         log.debug(" >> result : " + result );
  276.         log.debug(" >> Assign nilai outputDto << ");
  277.         Dto outputDto = new Dto().putList("soMlmList",
  278.                 DtoUtil.createDtoListFromArray(result,
  279.                         "soId", "tenantId", "docNo",
  280.                         "docDate",
  281.                         "partnerId", "partnerName", "partnerCode", "remark", "flgPicking",
  282.                         "flgScan", "flgPacking", "flgShipment", "flgDropship", "ouId", "statusDoc",
  283.                         "waktuCetakSo",
  284.                         "userCetakSo",
  285.                         "totalHargaKatalog", "totalHargaKatalogTerkirim", "totalHargaMember", "totalHargaMemberTerkirim",
  286.                         "nilaiKomisi", "nilaiKomisiTerkirim", "totalPembelian", "totalPembelianTerkirim", "additionalCost", "additionalCostTerkirim",
  287.                         "totalHargaNetto", "deliveredTotalHargaNetto", "nextRoleForSubmit",
  288.                         "autoApprovalTime", "autoApprovalName", "ssApprovalTime", "ssApprovalName", "financeApprovalTime", "financeApprovalName",
  289.                         "lastScanPickingTime", "lastScanPickingName", "statusSo", "soMlmId", "soVersion", "statusTutupSo", "workflowStatus",
  290.                         "dsAreaName" ));
  291.         // log.debug(" >> isi outputDto << ");
  292.         // log.debug(" >> outputDto : " + outputDto );
  293.        
  294.         return outputDto;
  295.     }
  296.    
  297.     public String getDescription() {
  298.         return "Approved Sales Order Mlm List For NEW Inquiry SO MLM Sales Support";
  299.     }
  300.    
  301. }
Add Comment
Please, Sign In to add comment