Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.erp.fin.bo.inquiryap;
- import java.math.BigInteger;
- import java.util.List;
- import javax.persistence.Query;
- import org.jleaf.core.AbstractBusinessFunction;
- import org.jleaf.core.BusinessFunction;
- import org.jleaf.core.Dto;
- import org.jleaf.core.GeneralConstants;
- import org.jleaf.core.annotation.ErrorList;
- import org.jleaf.core.annotation.Info;
- import org.jleaf.core.annotation.InfoIn;
- import org.jleaf.core.annotation.InfoOut;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.erp.fin.FinanceConstants;
- import org.jleaf.erp.fin.dao.InvoiceApBalanceDao;
- import org.jleaf.erp.fin.entity.InvoiceApBalance;
- import org.jleaf.erp.fin.entity.InvoiceTaxApBalance;
- import org.jleaf.util.ValidationUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- //@formatter:off
- @Service
- @InfoIn(value = {
- @Info(name = "tenantId", description = "Tenant id", type = Long.class),
- @Info(name = "ouId", description = "OU id", type = Long.class),
- @Info(name = "userId", description = "user id", type = Long.class),
- @Info(name = "roleId", description = "role id", type = Long.class),
- @Info(name = "partnerId", description = "partner id", type = Long.class),
- @Info(name = "dateFrom", description = "date from", type = String.class),
- @Info(name = "dateTo", description = "date to", type = String.class)
- })
- @InfoOut(value = {
- @Info(name = "totalDocuments", description = "total documents", type = Long.class),
- @Info(name = "totalTaxDocuments", description = "total tax documents", type = Long.class),
- @Info(name = "taxCurrCode", description = "curr code", type = String.class),
- @Info(name = "returnTaxCurrCode", description = "curr code", type = String.class),
- @Info(name = "totalTaxAmount", description = "total tax amount", type = Double.class),
- @Info(name = "totalReturnTaxAmount", description = "total return tax amount", type = Double.class)
- })
- @ErrorList(errorKeys ={
- })
- //@formatter:off
- public class GetSummaryForInquiryAp extends AbstractBusinessFunction implements BusinessFunction {
- private static final Logger log = LoggerFactory.getLogger(GetSummaryForInquiryAp.class);
- @Autowired
- private InvoiceApBalanceDao invoiceApBalanceDao;
- @Override
- public String getDescription() {
- return "Get summary for inquiry ap";
- }
- @Override
- public Dto execute(Dto inputDto) throws Exception {
- ValidationUtil.valDtoContainsKey(inputDto, "tenantId");
- ValidationUtil.valDtoContainsKey(inputDto, "ouId");
- ValidationUtil.valDtoContainsKey(inputDto, "userId");
- ValidationUtil.valDtoContainsKey(inputDto, "roleId");
- ValidationUtil.valDtoContainsKey(inputDto, "partnerId");
- ValidationUtil.valDtoContainsKey(inputDto, "dateFrom");
- ValidationUtil.valDtoContainsKey(inputDto, "dateTo");
- Long tenantId = inputDto.getLong("tenantId");
- Long ouId = inputDto.getLong("ouId");
- Long userId = inputDto.getLong("userId");
- Long roleId = inputDto.getLong("roleId");
- Long partnerId = inputDto.getLong("partnerId");
- String dateFrom = inputDto.getString("dateFrom");
- String dateTo = inputDto.getString("dateTo");
- String taxCurrCode = GeneralConstants.EMPTY_VALUE;
- String returnTaxCurrCode = GeneralConstants.EMPTY_VALUE;
- Double totalTaxAmount = new Double(0);
- Double totalReturnTaxAmount = new Double(0);
- Dto outputDto = new Dto();
- QueryBuilder queryBuilderTotalDocuments = new QueryBuilder();
- queryBuilderTotalDocuments.add(" SELECT COUNT(A.invoice_ap_balance_id) AS count ")
- .add(" FROM ")
- .add(InvoiceApBalance.TABLE_NAME)
- .add(" A ")
- .add(" WHERE A.tenant_id = :tenantId ")
- .add(" AND A.ou_id = :ouId ")
- .add(" AND A.doc_date BETWEEN :dateFrom AND :dateTo ")
- .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
- .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ");
- Query queryTotalDocuments = invoiceApBalanceDao.createNativeQuery(queryBuilderTotalDocuments.toString());
- queryTotalDocuments.setParameter("tenantId", tenantId);
- queryTotalDocuments.setParameter("userId", userId);
- queryTotalDocuments.setParameter("roleId", roleId);
- queryTotalDocuments.setParameter("ouId", ouId);
- if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
- queryTotalDocuments.setParameter("partnerId", partnerId);
- }
- queryTotalDocuments.setParameter("dateFrom", dateFrom);
- queryTotalDocuments.setParameter("dateTo", dateTo);
- BigInteger totalDocumentsBigInteger = (BigInteger) queryTotalDocuments.getSingleResult();
- log.info("totalDocuments = " + totalDocumentsBigInteger.longValue());
- QueryBuilder queryBuilderTotalTaxDocuments = new QueryBuilder();
- queryBuilderTotalTaxDocuments.add(" SELECT COUNT(A.invoice_tax_ap_balance_id) AS count ")
- .add(" FROM ")
- .add(InvoiceTaxApBalance.TABLE_NAME)
- .add(" A ")
- .add(" INNER JOIN ")
- .add(InvoiceApBalance.TABLE_NAME)
- .add(" B ON A.invoice_ap_balance_id = B.invoice_ap_balance_id ")
- .add(" WHERE A.tenant_id = :tenantId ")
- .add(" AND A.ou_id = :ouId ")
- .add(" AND B.doc_date BETWEEN :dateFrom AND :dateTo ")
- .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
- .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ");
- Query queryTotalTaxDocuments = invoiceApBalanceDao.createNativeQuery(queryBuilderTotalTaxDocuments.toString());
- queryTotalTaxDocuments.setParameter("tenantId", tenantId);
- queryTotalTaxDocuments.setParameter("ouId", ouId);
- queryTotalTaxDocuments.setParameter("userId", userId);
- queryTotalTaxDocuments.setParameter("roleId", roleId);
- if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
- queryTotalTaxDocuments.setParameter("partnerId", partnerId);
- }
- queryTotalTaxDocuments.setParameter("dateFrom", dateFrom);
- queryTotalTaxDocuments.setParameter("dateTo", dateTo);
- BigInteger totalTaxDocumentsBigInteger = (BigInteger) queryTotalTaxDocuments.getSingleResult();
- log.info("totalTaxDocumentsBigInteger = " + totalTaxDocumentsBigInteger.longValue());
- QueryBuilder queryBuilderTotalTaxAmount = new QueryBuilder();
- queryBuilderTotalTaxAmount.add(" SELECT A.tax_curr_code, SUM(A.gov_tax_amount) AS gov_tax_amount ")
- .add(" FROM ")
- .add(InvoiceTaxApBalance.TABLE_NAME)
- .add(" A INNER JOIN ")
- .add(InvoiceApBalance.TABLE_NAME)
- .add(" B ON A.invoice_ap_balance_id = B.invoice_ap_balance_id ")
- .add(" WHERE A.tenant_id = :tenantId ")
- .add(" AND A.ou_id = :ouId ")
- .add(" AND B.doc_date BETWEEN :dateFrom AND :dateTo ")
- .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
- .add(" AND A.doc_type_id = :FAKTUR_PAJAK_MASUKAN ")
- .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ")
- .add(" GROUP BY A.tax_curr_code ");
- Query queryTotalTaxAmount = invoiceApBalanceDao.createNativeQuery(queryBuilderTotalTaxAmount.toString());
- queryTotalTaxAmount.setParameter("tenantId", tenantId);
- queryTotalTaxAmount.setParameter("ouId", ouId);
- queryTotalTaxAmount.setParameter("userId", userId);
- queryTotalTaxAmount.setParameter("roleId", roleId);
- if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
- queryTotalTaxAmount.setParameter("partnerId", partnerId);
- }
- queryTotalTaxAmount.setParameter("dateFrom", dateFrom);
- queryTotalTaxAmount.setParameter("dateTo", dateTo);
- queryTotalTaxAmount.setParameter("FAKTUR_PAJAK_MASUKAN", FinanceConstants.DOCUMENT_VAT_IN_INVOICE);
- List<Object[]> totalTaxAmountList = queryTotalTaxAmount.getResultList();
- if (totalTaxAmountList != null && !totalTaxAmountList.isEmpty()) {
- Object[] totalTaxAmountArr = totalTaxAmountList.get(0);
- taxCurrCode = totalTaxAmountArr[0].toString();
- totalTaxAmount = Double.valueOf(totalTaxAmountArr[1].toString());
- log.info("taxCurrCode = " + taxCurrCode);
- log.info("totalTaxAmount = " + totalTaxAmount);
- }
- QueryBuilder queryBuilderTotalReturnTaxAmount = new QueryBuilder();
- queryBuilderTotalReturnTaxAmount.add(" SELECT A.tax_curr_code, SUM(A.gov_tax_amount) AS gov_tax_amount ")
- .add(" FROM ")
- .add(InvoiceTaxApBalance.TABLE_NAME)
- .add(" A INNER JOIN ")
- .add(InvoiceApBalance.TABLE_NAME)
- .add(" B ON A.invoice_ap_balance_id = B.invoice_ap_balance_id ")
- .add(" WHERE A.tenant_id = :tenantId ")
- .add(" AND A.ou_id = :ouId ")
- .add(" AND B.doc_date BETWEEN :dateFrom AND :dateTo ")
- .addIfNotEquals(partnerId, GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = :partnerId ")
- .add(" AND A.doc_type_id = :FAKTUR_RETUR_PAJAK_MASUKAN ")
- .add(" AND f_authorize_user_role_policy_partner(:tenantId, :userId, :roleId, A.partner_id) = 1 ")
- .add(" GROUP BY A.tax_curr_code ");
- Query queryTotalReturnTaxAmount = invoiceApBalanceDao.createNativeQuery(queryBuilderTotalReturnTaxAmount.toString());
- queryTotalReturnTaxAmount.setParameter("tenantId", tenantId);
- queryTotalReturnTaxAmount.setParameter("ouId", ouId);
- queryTotalReturnTaxAmount.setParameter("userId", userId);
- queryTotalReturnTaxAmount.setParameter("roleId", roleId);
- if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(partnerId)) {
- queryTotalReturnTaxAmount.setParameter("partnerId", partnerId);
- }
- queryTotalReturnTaxAmount.setParameter("dateFrom", dateFrom);
- queryTotalReturnTaxAmount.setParameter("dateTo", dateTo);
- queryTotalReturnTaxAmount.setParameter("FAKTUR_RETUR_PAJAK_MASUKAN", FinanceConstants.DOCUMENT_RETURN_VAT_IN);
- List<Object[]> totalReturnTaxAmountList = queryTotalReturnTaxAmount.getResultList();
- if (totalReturnTaxAmountList != null && !totalReturnTaxAmountList.isEmpty()) {
- Object[] totalReturnTaxAmountArr = totalReturnTaxAmountList.get(0);
- returnTaxCurrCode = totalReturnTaxAmountArr[0].toString();
- totalReturnTaxAmount = Double.valueOf(totalReturnTaxAmountArr[1].toString());
- log.info("returnTaxCurrCode = " + returnTaxCurrCode);
- log.info("totalReturnTaxAmount = " + totalReturnTaxAmount);
- }
- outputDto.put("taxCurrCode", taxCurrCode);
- outputDto.put("returnTaxCurrCode", returnTaxCurrCode);
- outputDto.put("totalDocuments", totalDocumentsBigInteger.longValue());
- outputDto.put("totalTaxDocuments", totalTaxDocumentsBigInteger.longValue());
- outputDto.put("totalTaxAmount", totalTaxAmount);
- outputDto.put("totalReturnTaxAmount", totalReturnTaxAmount);
- return outputDto;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement