Advertisement
tercnem

BF inquiry AP

Jul 18th, 2019
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.61 KB | None | 0 0
  1. package org.jleaf.erp.fin.bo.inquiryap;
  2.  
  3. import java.math.BigInteger;
  4. import java.util.List;
  5.  
  6. import javax.persistence.Query;
  7.  
  8. import org.jleaf.core.AbstractBusinessFunction;
  9. import org.jleaf.core.BusinessFunction;
  10. import org.jleaf.core.Dto;
  11. import org.jleaf.core.GeneralConstants;
  12. import org.jleaf.core.annotation.ErrorList;
  13. import org.jleaf.core.annotation.Info;
  14. import org.jleaf.core.annotation.InfoIn;
  15. import org.jleaf.core.annotation.InfoOut;
  16. import org.jleaf.core.dao.QueryBuilder;
  17. import org.jleaf.erp.fin.FinanceConstants;
  18. import org.jleaf.erp.fin.dao.InvoiceApBalanceDao;
  19. import org.jleaf.erp.fin.entity.InvoiceApBalance;
  20. import org.jleaf.erp.fin.entity.InvoiceTaxApBalance;
  21. import org.jleaf.util.ValidationUtil;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26.  
  27. //@formatter:off
  28. @Service
  29. @InfoIn(value = {
  30.     @Info(name = "tenantId", description = "Tenant id", type = Long.class),
  31.     @Info(name = "ouId", description = "OU id", type = Long.class),
  32.     @Info(name = "userId", description = "user id", type = Long.class),
  33.     @Info(name = "roleId", description = "role id", type = Long.class),
  34.     @Info(name = "partnerId", description = "partner id", type = Long.class),
  35.     @Info(name = "dateFrom", description = "date from", type = String.class),
  36.     @Info(name = "dateTo", description = "date to", type = String.class)
  37. })
  38. @InfoOut(value = {
  39.     @Info(name = "totalDocuments", description = "total documents", type = Long.class),
  40.     @Info(name = "totalTaxDocuments", description = "total tax documents", type = Long.class),
  41.     @Info(name = "taxCurrCode", description = "curr code", type = String.class),
  42.     @Info(name = "returnTaxCurrCode", description = "curr code", type = String.class),
  43.     @Info(name = "totalTaxAmount", description = "total tax amount", type = Double.class),
  44.     @Info(name = "totalReturnTaxAmount", description = "total return tax amount", type = Double.class)
  45. })
  46. @ErrorList(errorKeys ={
  47.        
  48. })
  49. //@formatter:off
  50. public class GetSummaryForInquiryAp  extends AbstractBusinessFunction implements BusinessFunction {
  51.  
  52.     private static final Logger log = LoggerFactory.getLogger(GetSummaryForInquiryAp.class);
  53.    
  54.     @Autowired
  55.     private InvoiceApBalanceDao invoiceApBalanceDao;
  56.    
  57.     @Override
  58.     public String getDescription() {
  59.         return "Get summary for inquiry ap";
  60.     }
  61.  
  62.     @Override
  63.     public Dto execute(Dto inputDto) throws Exception {
  64.         ValidationUtil.valDtoContainsKey(inputDto, "tenantId");
  65.         ValidationUtil.valDtoContainsKey(inputDto, "ouId");
  66.         ValidationUtil.valDtoContainsKey(inputDto, "userId");
  67.         ValidationUtil.valDtoContainsKey(inputDto, "roleId");
  68.         ValidationUtil.valDtoContainsKey(inputDto, "partnerId");
  69.         ValidationUtil.valDtoContainsKey(inputDto, "dateFrom");
  70.         ValidationUtil.valDtoContainsKey(inputDto, "dateTo");
  71.        
  72.         Long tenantId = inputDto.getLong("tenantId");
  73.         Long ouId = inputDto.getLong("ouId");
  74.         Long userId = inputDto.getLong("userId");
  75.         Long roleId = inputDto.getLong("roleId");
  76.         Long partnerId = inputDto.getLong("partnerId");
  77.         String dateFrom = inputDto.getString("dateFrom");
  78.         String dateTo = inputDto.getString("dateTo");
  79.        
  80.         String taxCurrCode = GeneralConstants.EMPTY_VALUE;
  81.         String returnTaxCurrCode = GeneralConstants.EMPTY_VALUE;
  82.         Double totalTaxAmount = new Double(0);
  83.         Double totalReturnTaxAmount = new Double(0);
  84.        
  85.         Dto outputDto = new Dto();
  86.        
  87.         QueryBuilder queryBuilderTotalDocuments = new QueryBuilder();
  88.         queryBuilderTotalDocuments.add(" SELECT COUNT(A.invoice_ap_balance_id) AS count ")
  89.                     .add(" FROM ")
  90.                     .add(InvoiceApBalance.TABLE_NAME)
  91.                     .add(" A ")
  92.                     .add(" WHERE A.tenant_id = :tenantId ")
  93.                     .add(" AND A.ou_id = :ouId ")
  94.                     .add(" AND A.doc_date BETWEEN :dateFrom AND :dateTo ")
  95.                     .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
  96.                     .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ");
  97.        
  98.         Query queryTotalDocuments = invoiceApBalanceDao.createNativeQuery(queryBuilderTotalDocuments.toString());
  99.         queryTotalDocuments.setParameter("tenantId", tenantId);
  100.         queryTotalDocuments.setParameter("userId", userId);
  101.         queryTotalDocuments.setParameter("roleId", roleId);
  102.         queryTotalDocuments.setParameter("ouId", ouId);
  103.         if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
  104.             queryTotalDocuments.setParameter("partnerId", partnerId);
  105.         }
  106.         queryTotalDocuments.setParameter("dateFrom", dateFrom);
  107.         queryTotalDocuments.setParameter("dateTo", dateTo);
  108.        
  109.         BigInteger totalDocumentsBigInteger = (BigInteger) queryTotalDocuments.getSingleResult();
  110.  
  111.         log.info("totalDocuments = " + totalDocumentsBigInteger.longValue());
  112.        
  113.         QueryBuilder queryBuilderTotalTaxDocuments = new QueryBuilder();
  114.         queryBuilderTotalTaxDocuments.add(" SELECT COUNT(A.invoice_tax_ap_balance_id) AS count ")
  115.                     .add(" FROM ")
  116.                     .add(InvoiceTaxApBalance.TABLE_NAME)
  117.                     .add(" A ")
  118.                     .add(" INNER JOIN ")
  119.                     .add(InvoiceApBalance.TABLE_NAME)
  120.                     .add(" B ON A.invoice_ap_balance_id = B.invoice_ap_balance_id ")
  121.                     .add(" WHERE A.tenant_id = :tenantId ")
  122.                     .add(" AND A.ou_id = :ouId ")
  123.                     .add(" AND B.doc_date BETWEEN :dateFrom AND :dateTo ")
  124.                     .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
  125.                     .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ");
  126.        
  127.         Query queryTotalTaxDocuments = invoiceApBalanceDao.createNativeQuery(queryBuilderTotalTaxDocuments.toString());
  128.         queryTotalTaxDocuments.setParameter("tenantId", tenantId);
  129.         queryTotalTaxDocuments.setParameter("ouId", ouId);
  130.         queryTotalTaxDocuments.setParameter("userId", userId);
  131.         queryTotalTaxDocuments.setParameter("roleId", roleId);
  132.         if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
  133.             queryTotalTaxDocuments.setParameter("partnerId", partnerId);
  134.         }
  135.         queryTotalTaxDocuments.setParameter("dateFrom", dateFrom);
  136.         queryTotalTaxDocuments.setParameter("dateTo", dateTo);
  137.        
  138.         BigInteger totalTaxDocumentsBigInteger = (BigInteger) queryTotalTaxDocuments.getSingleResult();
  139.        
  140.         log.info("totalTaxDocumentsBigInteger = " + totalTaxDocumentsBigInteger.longValue());
  141.        
  142.         QueryBuilder queryBuilderTotalTaxAmount = new QueryBuilder();
  143.         queryBuilderTotalTaxAmount.add(" SELECT A.tax_curr_code, SUM(A.gov_tax_amount) AS gov_tax_amount ")
  144.                     .add(" FROM ")
  145.                     .add(InvoiceTaxApBalance.TABLE_NAME)
  146.                     .add(" A INNER JOIN ")
  147.                     .add(InvoiceApBalance.TABLE_NAME)
  148.                     .add(" B ON A.invoice_ap_balance_id = B.invoice_ap_balance_id ")
  149.                     .add(" WHERE A.tenant_id = :tenantId ")
  150.                     .add(" AND A.ou_id = :ouId ")
  151.                     .add(" AND B.doc_date BETWEEN :dateFrom AND :dateTo ")
  152.                     .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
  153.                     .add(" AND A.doc_type_id = :FAKTUR_PAJAK_MASUKAN ")
  154.                     .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ")
  155.                     .add(" GROUP BY A.tax_curr_code ");
  156.        
  157.         Query queryTotalTaxAmount = invoiceApBalanceDao.createNativeQuery(queryBuilderTotalTaxAmount.toString());
  158.         queryTotalTaxAmount.setParameter("tenantId", tenantId);
  159.         queryTotalTaxAmount.setParameter("ouId", ouId);
  160.         queryTotalTaxAmount.setParameter("userId", userId);
  161.         queryTotalTaxAmount.setParameter("roleId", roleId);
  162.         if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
  163.             queryTotalTaxAmount.setParameter("partnerId", partnerId);
  164.         }
  165.         queryTotalTaxAmount.setParameter("dateFrom", dateFrom);
  166.         queryTotalTaxAmount.setParameter("dateTo", dateTo);
  167.         queryTotalTaxAmount.setParameter("FAKTUR_PAJAK_MASUKAN", FinanceConstants.DOCUMENT_VAT_IN_INVOICE);
  168.        
  169.         List<Object[]> totalTaxAmountList = queryTotalTaxAmount.getResultList();
  170.        
  171.         if (totalTaxAmountList != null && !totalTaxAmountList.isEmpty()) {
  172.             Object[] totalTaxAmountArr = totalTaxAmountList.get(0);
  173.             taxCurrCode = totalTaxAmountArr[0].toString();
  174.             totalTaxAmount = Double.valueOf(totalTaxAmountArr[1].toString());
  175.            
  176.             log.info("taxCurrCode = " + taxCurrCode);
  177.             log.info("totalTaxAmount = " + totalTaxAmount);
  178.            
  179.         }
  180.        
  181.        
  182.         QueryBuilder queryBuilderTotalReturnTaxAmount = new QueryBuilder();
  183.         queryBuilderTotalReturnTaxAmount.add(" SELECT A.tax_curr_code, SUM(A.gov_tax_amount) AS gov_tax_amount ")
  184.                     .add(" FROM ")
  185.                     .add(InvoiceTaxApBalance.TABLE_NAME)
  186.                     .add(" A INNER JOIN ")
  187.                     .add(InvoiceApBalance.TABLE_NAME)
  188.                     .add(" B ON A.invoice_ap_balance_id = B.invoice_ap_balance_id ")
  189.                     .add(" WHERE A.tenant_id = :tenantId ")
  190.                     .add(" AND A.ou_id = :ouId ")
  191.                     .add(" AND B.doc_date BETWEEN :dateFrom AND :dateTo ")
  192.                     .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
  193.                     .add(" AND A.doc_type_id = :FAKTUR_RETUR_PAJAK_MASUKAN ")
  194.                     .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ")
  195.                     .add(" GROUP BY A.tax_curr_code ");
  196.        
  197.         Query queryTotalReturnTaxAmount = invoiceApBalanceDao.createNativeQuery(queryBuilderTotalReturnTaxAmount.toString());
  198.         queryTotalReturnTaxAmount.setParameter("tenantId", tenantId);
  199.         queryTotalReturnTaxAmount.setParameter("ouId", ouId);
  200.         queryTotalReturnTaxAmount.setParameter("userId", userId);
  201.         queryTotalReturnTaxAmount.setParameter("roleId", roleId);
  202.         if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
  203.             queryTotalReturnTaxAmount.setParameter("partnerId", partnerId);
  204.         }
  205.         queryTotalReturnTaxAmount.setParameter("dateFrom", dateFrom);
  206.         queryTotalReturnTaxAmount.setParameter("dateTo", dateTo);
  207.         queryTotalReturnTaxAmount.setParameter("FAKTUR_RETUR_PAJAK_MASUKAN", FinanceConstants.DOCUMENT_RETURN_VAT_IN);
  208.        
  209.         List<Object[]> totalReturnTaxAmountList = queryTotalReturnTaxAmount.getResultList();
  210.        
  211.         if (totalReturnTaxAmountList != null && !totalReturnTaxAmountList.isEmpty()) {
  212.             Object[] totalReturnTaxAmountArr = totalReturnTaxAmountList.get(0);
  213.             returnTaxCurrCode = totalReturnTaxAmountArr[0].toString();
  214.             totalReturnTaxAmount = Double.valueOf(totalReturnTaxAmountArr[1].toString());
  215.            
  216.             log.info("returnTaxCurrCode = " + returnTaxCurrCode);
  217.             log.info("totalReturnTaxAmount = " + totalReturnTaxAmount);
  218.         }
  219.        
  220.         outputDto.put("taxCurrCode", taxCurrCode);
  221.         outputDto.put("returnTaxCurrCode", returnTaxCurrCode);
  222.         outputDto.put("totalDocuments", totalDocumentsBigInteger.longValue());
  223.         outputDto.put("totalTaxDocuments", totalTaxDocumentsBigInteger.longValue());
  224.         outputDto.put("totalTaxAmount", totalTaxAmount);
  225.         outputDto.put("totalReturnTaxAmount", totalReturnTaxAmount);
  226.        
  227.         return outputDto;
  228.     }
  229.  
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement