Advertisement
tercnem

GetHistoryInvoiceListForInquiryAp

Jul 18th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.29 KB | None | 0 0
  1. package org.jleaf.erp.fin.bo.inquiryap;
  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.ErrorList;
  12. import org.jleaf.core.annotation.Info;
  13. import org.jleaf.core.annotation.InfoIn;
  14. import org.jleaf.core.annotation.InfoOut;
  15. import org.jleaf.core.dao.QueryBuilder;
  16. import org.jleaf.erp.fin.FinanceConstants;
  17. import org.jleaf.erp.fin.dao.InvoiceApBalanceDao;
  18. import org.jleaf.erp.fin.entity.InvoiceApBalance;
  19. import org.jleaf.util.DtoUtil;
  20. import org.jleaf.util.ValidationUtil;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23.  
  24. //@formatter:off
  25. @Service
  26. @InfoIn(value = {
  27.     @Info(name = "tenantId", description = "Tenant id", type = Long.class),
  28.     @Info(name = "ouId", description = "OU id", type = Long.class),
  29.     @Info(name = "userId", description = "user id", type = Long.class),
  30.     @Info(name = "roleId", description = "role id", type = Long.class),
  31.     @Info(name = "partnerId", description = "partner id", type = Long.class),
  32.     @Info(name = "dateFrom", description = "date from", type = String.class),
  33.     @Info(name = "dateTo", description = "date to", type = String.class)
  34. })
  35. @InfoOut(value = {
  36.     @Info(name = "invoiceList", description = "outstanding invoice list (invoiceApBalanceId, docTypeId, invoiceApId, docDesc, docNo, docDate, partnerName, poNo, poDate, extDocNo, extDocDate, currCode, amount, outstandingAmount, dueDate, flgPayment)", type = List.class)
  37. })
  38. @ErrorList(errorKeys ={
  39.        
  40. })
  41. //@formatter:off
  42. public class GetHistoryInvoiceListForInquiryAp  extends AbstractBusinessFunction implements BusinessFunction {
  43.  
  44.     @Autowired
  45.     private InvoiceApBalanceDao invoiceApBalanceDao;
  46.    
  47.     @Override
  48.     public String getDescription() {
  49.         return "Get history invoice list for inquiry AP";
  50.     }
  51.  
  52.     @SuppressWarnings("unchecked")
  53.     @Override
  54.     public Dto execute(Dto inputDto) throws Exception {
  55.         ValidationUtil.valDtoContainsKey(inputDto, "tenantId");
  56.         ValidationUtil.valDtoContainsKey(inputDto, "ouId");
  57.         ValidationUtil.valDtoContainsKey(inputDto, "userId");
  58.         ValidationUtil.valDtoContainsKey(inputDto, "roleId");
  59.         ValidationUtil.valDtoContainsKey(inputDto, "partnerId");
  60.         ValidationUtil.valDtoContainsKey(inputDto, "dateFrom");
  61.         ValidationUtil.valDtoContainsKey(inputDto, "dateTo");
  62.        
  63.         Long tenantId = inputDto.getLong("tenantId");
  64.         Long ouId = inputDto.getLong("ouId");
  65.         Long userId = inputDto.getLong("userId");
  66.         Long roleId = inputDto.getLong("roleId");
  67.         Long partnerId = inputDto.getLong("partnerId");
  68.         String dateFrom = inputDto.getString("dateFrom");
  69.         String dateTo = inputDto.getString("dateTo");
  70.        
  71.         QueryBuilder queryBuilder = new QueryBuilder();
  72.         queryBuilder.add(" SELECT A.invoice_ap_balance_id, A.doc_type_id, A.invoice_ap_id, f_get_doc_desc(A.doc_type_id) AS doc_desc, A.doc_no, A.doc_date, f_get_partner_name(A.partner_id) AS partner_name, COALESCE(B.doc_no, :SPACE) AS po_no, COALESCE(B.doc_date, :SPACE) AS po_date, A.ext_doc_no, A.ext_doc_date, A.curr_code, A.amount, (A.amount - A.payment_amount) AS outstanding_amount, A.due_date, A.flg_payment ")
  73.                     .add(" FROM ")
  74.                     .add(InvoiceApBalance.TABLE_NAME)
  75.                     .add(" A ")
  76.                     .add(" LEFT OUTER JOIN ")
  77.                     .add(" pu_po B ON A.ref_doc_type_id = B.doc_type_id AND A.ref_id = B.po_id ")
  78.                     .add(" WHERE A.tenant_id = :tenantId ")
  79.                     .add(" AND A.ou_id = :ouId ")
  80.                     .add(" AND A.doc_date BETWEEN :dateFrom AND :dateTo ")
  81.                     .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
  82.                     .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ")
  83.                     .add(" AND NOT EXISTS ( ")
  84.                     .add("      SELECT  1 ")
  85.                     .add("      FROM fi_payment_order_invoice Z ")
  86.                     .add("      INNER JOIN cb_trx_cashbank_balance X ON Z.payment_order_id =  X.payment_id ")
  87.                     .add("          AND X.doc_type_id = :docTypePaymentOrderAp ")
  88.                     .add("      WHERE   A.doc_type_id = Z.ref_doc_type_id ")
  89.                     .add("          AND A.invoice_ap_balance_id = Z.ref_id  ")
  90.                     .add("          AND X.flg_payment = :VOID ")
  91.                     .add(" ) ")
  92.                     .add(" ORDER BY A.doc_no ASC, A.doc_date ASC, A.curr_code ASC, outstanding_amount DESC ");
  93.        
  94.         Query query = invoiceApBalanceDao.createNativeQuery(queryBuilder.toString());
  95.         query.setParameter("tenantId", tenantId);
  96.         query.setParameter("ouId", ouId);
  97.         query.setParameter("userId", userId);
  98.         query.setParameter("roleId", roleId);
  99.         query.setParameter("VOID", FinanceConstants.VOID_TRANSACTION);
  100.         query.setParameter("docTypePaymentOrderAp", FinanceConstants.DOCUMENT_AP_PAYMENT_ORDER);
  101.         if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
  102.             query.setParameter("partnerId", partnerId);
  103.         }
  104.         query.setParameter("dateFrom", dateFrom);
  105.         query.setParameter("dateTo", dateTo);
  106.         query.setParameter("SPACE", GeneralConstants.SPACE_VALUE);
  107.  
  108.         List<Object[]> list = query.getResultList();
  109.        
  110.         return new Dto().put("invoiceList", DtoUtil.createDtoListFromArray(list, "invoiceApBalanceId", "docTypeId", "invoiceApId", "docDesc", "docNo", "docDate", "partnerName", "poNo", "poDate", "extDocNo", "extDocDate", "currCode", "amount", "outstandingAmount", "dueDate", "flgPayment"));
  111.     }
  112.  
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement