Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.erp.sls.bo.tasksales;
- import java.util.ArrayList;
- import java.util.List;
- import javax.persistence.Query;
- import org.jleaf.core.BusinessFunction;
- import org.jleaf.core.BusinessTransaction;
- import org.jleaf.core.DefaultBusinessTransaction;
- import org.jleaf.core.Dto;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.erp.sls.SalesConstants;
- import org.jleaf.erp.sls.dao.AdminProcessVisitPlanDao;
- import org.jleaf.erp.sls.entity.AdminProcessVisitPlan;
- import org.jleaf.util.DateUtil;
- import org.jleaf.util.ValidationUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- public class AddInvoicePayment extends DefaultBusinessTransaction implements BusinessTransaction{
- private static final Logger log = LoggerFactory.getLogger(AddInvoicePayment.class);
- @Autowired
- AdminProcessVisitPlanDao adminProcessVisitPlanDao;
- @Autowired
- @Qualifier("findInvoiceVisitPlanById")
- BusinessFunction findInvoiceVisitPlanById;
- @Autowired
- @Qualifier("findSalesmanVisitPlanById")
- BusinessFunction findSalesmanVisitPlanById;
- @Autowired
- @Qualifier("findPartnerById")
- BusinessFunction findPartnerById;
- @Override
- public String getDescription() {
- // TODO Auto-generated method stub
- return null;
- }
- private Long employeeId(Long userId, Long tenantId){
- //building query
- QueryBuilder builderEmployeeId = new QueryBuilder();
- builderEmployeeId.add("SELECT A.partner_id ")
- .add(" FROM ts_user_partner A ")
- .add(" INNER JOIN t_user B on A.user_id = B.user_id ")
- .add(" WHERE A.user_id = :userLoginId AND A.tenant_id = :tenantLoginId ");
- //creating native query
- Query queryEmployeeId = adminProcessVisitPlanDao.createNativeQuery(builderEmployeeId.toString());
- queryEmployeeId.setParameter("userLoginId", userId);
- queryEmployeeId.setParameter("tenantLoginId", tenantId);
- Long employeeId = Long.valueOf(queryEmployeeId.getSingleResult().toString());
- return employeeId;
- }
- @SuppressWarnings("unchecked")
- private Dto adminProcessVisitPlan(Dto inputDto){
- //building query
- Dto output = new Dto();
- QueryBuilder builderAdminProcessVisitPlanId = new QueryBuilder();
- builderAdminProcessVisitPlanId.add(" SELECT admin_process_visit_plan_id ")
- .add(" FROM sl_admin_process_visit_plan ")
- .add(" WHERE employee_id = :employeeId AND :visitDate BETWEEN start_date AND end_date ");
- //creating native query
- Query queryAdminProcessVisitPlanId = adminProcessVisitPlanDao.createNativeQuery(builderAdminProcessVisitPlanId.toString());
- queryAdminProcessVisitPlanId.setParameter("employeeId",inputDto.getLong("employeeId"));
- queryAdminProcessVisitPlanId.setParameter("visitDate", inputDto.getString("visitDate"));
- List<AdminProcessVisitPlan> adminProcessVisitPlanList = queryAdminProcessVisitPlanId.getResultList();
- output = new Dto(adminProcessVisitPlanList.get(0));
- return output;
- }
- @Override
- public Dto prepare(Dto inputDto, Dto original) throws Exception {
- Long tenantLoginId = inputDto.getLong("tenantLoginId");
- Long userLoginId = 1116l;
- String datetime = inputDto.getString("datetime");
- Long employeeId = employeeId(userLoginId, tenantLoginId);
- String visitDate = DateUtil.dateNow();
- Dto adminProcessParam = new Dto();
- adminProcessParam.put("employeeId", employeeId);
- adminProcessParam.put("visitDate", visitDate);
- Dto adminProcessDto = adminProcessVisitPlan(adminProcessParam);
- Long adminProcessVisitPlanId = adminProcessDto.getLong("id");
- Long salesmanVisitPlanId = inputDto.getLong("salesmanVisitPlanId");
- Long salesmanVisitRealizationId = inputDto.getLong("salesmanVisitRealizationId");
- Double paymentAmount = inputDto.getDouble("paymentAmount");
- String remark = inputDto.getString("remark");
- List<Dto> invoicePaymentList = inputDto.getList("invoicePaymentList");
- String typePayment = inputDto.getString("typePayment");
- String modePayment = inputDto.getString("modePayment");
- String accountNo = inputDto.getString("accountNo");
- Dto invoiceVisitPlanDto = new Dto();
- Dto salesmanVisitPlanDto = findSalesmanVisitPlanById.execute(new Dto().put("is", salesmanVisitPlanId));
- Long customerId = salesmanVisitPlanDto.getLong("customerId");
- List<Dto> invoicePaymentItemList = new ArrayList<Dto>();
- Dto partnerDto = findPartnerById.execute(new Dto().put("id", customerId));
- String customerCode = partnerDto.getString("partnerCode");
- String docNo = SalesConstants.PREFIX_DOC_NO_INVOICE_PAYMENT.concat("-").concat(customerCode).concat("-").concat(DateUtil.dateTimeNow());
- List<Dto> invoiceBalanceVisitPlanDetailList = new ArrayList<Dto>();
- Long registerId = adminProcessDto.getLong("registerId");
- for (Dto item : invoicePaymentList) {
- ValidationUtil.valBlankOrNull(item, "invoiceVisitPlanId");
- //update invoice visit plan
- invoiceVisitPlanDto = findInvoiceVisitPlanById.execute(new Dto().put("id", item.getString("invoiceVisitPlanId")));
- Double outstandingAmount = invoiceVisitPlanDto.getDouble("outstandingAmount")-paymentAmount;
- invoiceVisitPlanDto.put("outstandingAmount", outstandingAmount);
- invoiceVisitPlanDto.put("status", SalesConstants.PAYMENT);
- invoiceVisitPlanDto.put("nominalBayar", invoiceVisitPlanDto.getDouble("nominalBayar")+outstandingAmount);
- invoiceVisitPlanDto.put("remark", item.getString("remark"));
- this.prepareUpdateAudit(invoiceVisitPlanDto, userLoginId, datetime);
- invoicePaymentList.add(invoiceVisitPlanDto);
- //add payment item
- Dto invoicePaymentItemDto = new Dto();
- if (typePayment.equals("NONCASH")) {
- invoicePaymentItemDto.put("typePayment", typePayment);
- invoicePaymentItemDto.put("modePayment", modePayment);
- invoicePaymentItemDto.put("accountNo", accountNo);
- invoicePaymentItemDto.put("docNo", docNo);
- invoicePaymentItemDto.put("docDate", visitDate);
- invoicePaymentItemDto.put("dueDate", invoiceVisitPlanDto.getString("dueDate"));
- invoicePaymentItemDto.put("datePayment", visitDate);
- invoicePaymentItemDto.put("paymentAmount", outstandingAmount);
- invoicePaymentItemDto.put("remark", remark);
- } else {
- invoicePaymentItemDto.put("typePayment", "");
- invoicePaymentItemDto.put("modePayment", "");
- invoicePaymentItemDto.put("accountNo", "");
- invoicePaymentItemDto.put("docNo", "");
- invoicePaymentItemDto.put("docDate", "");
- invoicePaymentItemDto.put("dueDate", "");
- invoicePaymentItemDto.put("datePayment", visitDate);
- invoicePaymentItemDto.put("paymentAmount", outstandingAmount);
- invoicePaymentItemDto.put("remark", remark);
- }
- this.prepareInsertAudit(invoicePaymentItemDto, userLoginId, datetime);
- invoicePaymentItemList.add(invoicePaymentItemDto);
- Dto invoiceBalanceVisitPlanDetailDto = new Dto();
- invoiceBalanceVisitPlanDetailDto.put("tenantId", tenantLoginId);
- invoiceBalanceVisitPlanDetailDto.put("registerId", registerId);
- // invoicePaymentDto.put("tenantId", tenantLoginId);
- // invoicePaymentDto.put("adminProcessVisitPlanId", adminProcessVisitPlanId);
- // invoicePaymentDto.put("salesmanVisitPlanId", salesmanVisitPlanId);
- // invoicePaymentDto.put("salesmanVisitRealizationId", salesmanVisitRealizationId);
- }
- return null;
- }
- @Override
- public Dto process(Dto inputDto, Dto original) throws Exception {
- // TODO Auto-generated method stub
- return null;
- }
- }
Add Comment
Please, Sign In to add comment