Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.erp.fin.bo.handoverinvoicear;
- 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.CriteriaHelper;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.erp.fin.dao.HandoverInvoiceArDao;
- import org.jleaf.erp.fin.entity.InvoiceArBalanceHandover;
- import org.jleaf.erp.master.MasterConstants;
- import org.jleaf.util.DateUtil;
- import org.jleaf.util.DtoUtil;
- 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;
- /**
- * Get List InvoiceAr For Handover Invoice Ar
- * @author H.Kevin, Tue Jan 21 13:28:54 WIB 2020
- */
- @Service
- @InfoIn(value = {
- @Info(name = "tenantId", description = "Tenant Id", type = Long.class, required = true),
- @Info(name = "ouId", description = "Ou Id", type = Long.class, required = true),
- @Info(name = "customerCodeName", description = "customer Code Name", type = String.class, required = true),
- @Info(name = "dueDateTypeCode", description = "Code of Due Date Type", type = String.class, required = true),
- @Info(name = "limit", description = "limit", type = Long.class, required = false),
- @Info(name = "offset", description = "offset", type = Long.class, required = false)
- })
- @InfoOut(value = {
- @Info(name = "invoiceArList", description = "List invoiceAr(id, tenantId, ouId, invoiceId, docTypeId, docTypeDesc, docNo, docDate, partnerId,partnerCode, partnerName, dueDate, currCode, invoiceAmount, paymentAmount, osAmount, version)",
- type = List.class, required = true)
- })
- @ErrorList(errorKeys = { })
- public class GetInvoiceArListForHandoverInvoiceAr extends AbstractBusinessFunction implements BusinessFunction {
- private static final Logger log = LoggerFactory.getLogger(GetInvoiceArListForHandoverInvoiceAr.class);
- @Autowired
- HandoverInvoiceArDao handoverInvoiceArDao;
- //LIMIT OFFSET BELUMM
- @Override
- public String getDescription () {
- return "Get Invoice Ar List for handover invoice";
- }
- @SuppressWarnings("unchecked")
- @Override
- public Dto execute(Dto inputDto) throws Exception {
- ValidationUtil.valDtoContainsKey(inputDto, "tenantId");
- ValidationUtil.valDtoContainsKey(inputDto, "ouId");
- ValidationUtil.valDtoContainsKey(inputDto, "customerCodeName");
- ValidationUtil.valDtoContainsKey(inputDto, "dueDateTypeCode");
- List<Object[]> result = null;
- Long tenantId = inputDto.getLong("tenantId");
- Long ouId = inputDto.getLong("ouId");
- String customerCodeName = ((inputDto.get("customerCodeName")) == null ? GeneralConstants.EMPTY_VALUE : inputDto.get("customerCodeName").toString());
- String dueDateTypeCode = inputDto.getString("dueDateTypeCode");
- Long limit = inputDto.getLong("limit");
- Long offset = inputDto.getLong("offset");
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT A.invoice_ar_balance_handover_id AS id, A.tenant_id, B.ou_id, A.invoice_id, ");
- builder.add(" A.doc_type_id, f_get_doc_desc(A.doc_type_id) AS doc_type_desc, B.doc_no, B.doc_date, B.partner_id, ");
- builder.add(" f_get_partner_code(B.partner_id) AS partner_code, f_get_partner_name(B.partner_id) AS partner_name, ");
- builder.add(" B.due_date, B.curr_code, B.amount AS invoice_amount, B.payment_amount, ");
- builder.add(" (B.amount - B.payment_amount) AS outstanding_amount, A.version, A.flg_handover, A.flg_handover_back ");
- builder.add(" FROM ").add(InvoiceArBalanceHandover.TABLE_NAME).add(" A ");
- builder.add(" INNER JOIN vw_fi_os_debt_invoice_ar B ON A.invoice_id = B.id AND A.doc_type_id = B.doc_type_id ");
- // update 20210105, sasa-230 dokumen dgn status handover back y juga bisa muncul
- builder.add(" WHERE (A.flg_handover =:NO OR (A.flg_handover = :YES AND A.flg_handover_back = :YES ))");
- builder.add(" AND A.tenant_id = :tenantId ");
- builder.add(" AND B.ou_id = :ouId ");
- builder.addIfNotEmpty(customerCodeName, new StringBuilder()
- .append(" AND ( " )
- .append(CriteriaHelper.likeExpressionIgnoreCase(customerCodeName, " f_get_partner_code(B.partner_id) "))
- .append(" OR ")
- .append(CriteriaHelper.likeExpressionIgnoreCase(customerCodeName, " f_get_partner_name(B.partner_id) "))
- .append(" ) ").toString() );
- builder.addIfElseEquals(dueDateTypeCode, MasterConstants.DUE_DATE_TYPE_NOT_YET_DUE,
- " AND B.due_date > :dueDateNow ", "");
- builder.addIfElseEquals(dueDateTypeCode, MasterConstants.DUE_DATE_TYPE_CURRENT,
- " AND B.due_date = :dueDateNow ", "");
- builder.addIfElseEquals(dueDateTypeCode, MasterConstants.DUE_DATE_TYPE_OVERDUE,
- " AND B.due_date < :dueDateNow ", "");
- builder.add(" ORDER BY B.doc_date ASC, B.doc_no ASC ");
- builder.addIfNotNull(limit, " LIMIT :limit ");
- builder.addIfNotNull(offset, " OFFSET :offset ");
- Query query = handoverInvoiceArDao.createNativeQuery(builder.toString());
- query.setParameter("tenantId", tenantId);
- query.setParameter("ouId", ouId);
- query.setParameter("NO", GeneralConstants.NO);
- query.setParameter("YES", GeneralConstants.YES);
- if (!GeneralConstants.EMPTY_VALUE.equals(dueDateTypeCode)) {
- query.setParameter("dueDateNow", DateUtil.dateNow());
- }
- if (limit!=null && offset!=null) {
- query.setParameter("limit", limit.intValue());
- query.setParameter("offset", offset.intValue());
- }
- //log.debug("builder nyahhh >>" +builder+"\n\n");
- //log.debug("query nyahhh >>" +query+"\n\n");
- result = query.getResultList();
- return new Dto().put("invoiceArList", DtoUtil.createDtoListFromArray(result,
- "id", "tenantId", "ouId", "invoiceId", "docTypeId", "docTypeDesc", "docNo", "docDate",
- "partnerId","partnerCode", "partnerName", "dueDate", "currCode",
- "invoiceAmount", "paymentAmount", "osAmount", "version","flgHandover", "flgHandoverBack"));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment