Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.erp.sls.bo.customer;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.List;
- import javax.persistence.Query;
- import org.jleaf.common.entity.User;
- 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.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.master.bo.partner.FindPartnerByIndex;
- import org.jleaf.erp.master.dao.PartnerDao;
- import org.jleaf.erp.master.entity.Partner;
- import org.jleaf.erp.master.entity.PartnerAddress;
- import org.jleaf.erp.master.entity.PartnerCp;
- import org.jleaf.erp.master.entity.PartnerType;
- import org.jleaf.erp.sls.SalesConstants;
- import org.jleaf.erp.sls.dao.SalesmanVisitPlanDao;
- import org.jleaf.erp.sls.entity.Order;
- import org.jleaf.erp.sls.entity.PolicyCustomerGroupBrand;
- import org.jleaf.erp.sls.entity.SalesmanDate;
- import org.jleaf.erp.sls.entity.SalesmanVisitPlan;
- import org.jleaf.erp.sls.entity.UserPartner;
- 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;
- /**
- *
- * @author Ephraim Jehudah, April 09, 2020
- *
- **/
- //@formatter:off
- @Service
- @InfoIn(value = {
- @Info(name = "userLoginId", description = "user Login Id", type = Long.class),
- @Info(name = "tenantLoginId", description = "tenant Login Id", type = Long.class),
- @Info(name = "roleLoginId", description = "roleLoginId", type = Long.class),
- @Info(name = "datetime", description = "datetime", type = String.class),
- @Info(name = "tokoId", description = "toko Id", type = Long.class),
- @Info(name = "apiKey", description = "apiKey", type = String.class),
- })
- @InfoOut(value = {
- @Info(name = "result", description = "result {totalsaldo, totalsaldoduedate, totalsaldonotduedate, totalinvoice, totalinvoiceduedate, totalinvoicenotduedate}", type = Object.class)
- })
- //@formatter:on
- public class FindSummarySaldoHutangByToko extends AbstractBusinessFunction implements BusinessFunction {
- private static final Logger log = LoggerFactory.getLogger(FindSummarySaldoHutangByToko.class);
- @Autowired
- PartnerDao partnerDao;
- @Override
- public String getDescription() {
- return "Find Summary Saldo Hutang By Toko";
- }
- @SuppressWarnings("unchecked")
- @Override
- public Dto execute(Dto inputDto) throws Exception {
- log.info("Input YANG MASUK BF {} -. {} ", inputDto);
- ValidationUtil.valDtoContainsKey(inputDto, "tokoId");
- DateFormat dateFormat = new SimpleDateFormat(DateUtil.FORMAT_DATE);
- Date date = new Date();
- String today = dateFormat.format(date);
- Long tokoId = inputDto.getLong("tokoId");
- Dto outputDto = new Dto();
- Dto summaryDto = new Dto();
- List<Object[]> result = null;
- Double totalSaldo = new Double(0);
- Double totalInvoice = new Double(0);
- Double totalSaldoDueDate = new Double(0);
- Double totalInvoiceDueDate = new Double(0);
- Double totalSaldoNotDueDate = new Double(0);
- Double totalInvoiceNotDueDate = new Double(0);
- //total saldo
- QueryBuilder totalSaldoBuilder = new QueryBuilder();
- totalSaldoBuilder.add("SELECT SUM(amount-payment_amount) AS total_saldo, COUNT(1) AS total_invoice")
- .add(" FROM vw_fi_os_all_invoice_ar")
- .add(" WHERE partner_id = :tokoId");
- log.info("Query totalSaldoBuilder BF {} --> {} " , this.getClass(), totalSaldoBuilder.toString());
- Query totalSaldoQuery = partnerDao.createNativeQuery(totalSaldoBuilder.toString());
- totalSaldoQuery.setParameter("tokoId",tokoId);
- result = totalSaldoQuery.getResultList();
- if(result.size() > 0) {
- totalSaldo = Double.valueOf(result.get(0)[0].toString());
- totalInvoice = Double.valueOf(result.get(0)[1].toString());
- }
- summaryDto.put("totalSaldo", totalSaldo);
- summaryDto.put("totalInvoice", totalInvoice);
- //total saldo belum jatuh tempo
- QueryBuilder totalSaldoNotDueDateBuilder = new QueryBuilder();
- totalSaldoNotDueDateBuilder.add("SELECT SUM(amount-payment_amount) AS total_saldo_not_due_date, COUNT(1) AS total_invoice_not_due_date")
- .add(" FROM vw_fi_os_all_invoice_ar")
- .add(" WHERE partner_id = :tokoId AND due_date > :today");
- log.info("Query totalSaldoNotDueDateBuilder BF {} --> {} " , this.getClass(), totalSaldoNotDueDateBuilder.toString());
- Query totalSaldoNotDueDateQuery = partnerDao.createNativeQuery(totalSaldoNotDueDateBuilder.toString());
- totalSaldoNotDueDateQuery.setParameter("tokoId",tokoId);
- totalSaldoNotDueDateQuery.setParameter("today",today);
- result = totalSaldoNotDueDateQuery.getResultList();
- if(result.size() > 0) {
- totalSaldoNotDueDate = Double.valueOf(result.get(0)[0].toString());
- totalInvoiceNotDueDate = Double.valueOf(result.get(0)[1].toString());
- }
- summaryDto.put("totalSaldoNotDueDate", totalSaldoNotDueDate);
- summaryDto.put("totalInvoiceNotDueDate", totalInvoiceNotDueDate);
- //total saldo sudah jatuh tempo
- QueryBuilder totalSaldoDueDateBuilder = new QueryBuilder();
- totalSaldoDueDateBuilder.add("SELECT SUM(amount-payment_amount) AS total_saldo_due_date, COUNT(1) AS total_invoice_due_date")
- .add(" FROM vw_fi_os_all_invoice_ar")
- .add(" WHERE partner_id = :tokoId AND due_date <= :today");
- log.info("Query totalSaldoDueDateBuilder BF {} --> {} " , this.getClass(), totalSaldoDueDateBuilder.toString());
- Query totalSaldoDueDateQuery = partnerDao.createNativeQuery(totalSaldoDueDateBuilder.toString());
- totalSaldoDueDateQuery.setParameter("tokoId",tokoId);
- totalSaldoDueDateQuery.setParameter("today",today);
- result = totalSaldoDueDateQuery.getResultList();
- if(result.size() > 0) {
- totalSaldoDueDate = Double.valueOf(result.get(0)[0].toString());
- totalInvoiceDueDate = Double.valueOf(result.get(0)[1].toString());
- }
- summaryDto.put("totalSaldoDueDate", totalSaldoDueDate);
- summaryDto.put("totalInvoiceDueDate", totalInvoiceDueDate);
- outputDto.put("summarySaldoHutangToko", summaryDto);
- log.info("Output BF {} --> {} ", this.getClass(), outputDto);
- return outputDto;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement