1DanielLee9

AddInvoicePayment

May 17th, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.53 KB | None | 0 0
  1. package org.jleaf.erp.sls.bo.tasksales;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import javax.persistence.Query;
  7.  
  8. import org.jleaf.core.BusinessFunction;
  9. import org.jleaf.core.BusinessTransaction;
  10. import org.jleaf.core.DefaultBusinessTransaction;
  11. import org.jleaf.core.Dto;
  12. import org.jleaf.core.dao.QueryBuilder;
  13. import org.jleaf.erp.sls.SalesConstants;
  14. import org.jleaf.erp.sls.dao.AdminProcessVisitPlanDao;
  15. import org.jleaf.erp.sls.entity.AdminProcessVisitPlan;
  16. import org.jleaf.util.DateUtil;
  17. import org.jleaf.util.ValidationUtil;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.beans.factory.annotation.Qualifier;
  22.  
  23. public class AddInvoicePayment extends DefaultBusinessTransaction implements BusinessTransaction{
  24.     private static final Logger log = LoggerFactory.getLogger(AddInvoicePayment.class);
  25.    
  26.     @Autowired
  27.     AdminProcessVisitPlanDao adminProcessVisitPlanDao;
  28.    
  29.     @Autowired
  30.     @Qualifier("findInvoiceVisitPlanById")
  31.     BusinessFunction findInvoiceVisitPlanById;
  32.    
  33.     @Autowired
  34.     @Qualifier("findSalesmanVisitPlanById")
  35.     BusinessFunction findSalesmanVisitPlanById;
  36.    
  37.     @Autowired
  38.     @Qualifier("findPartnerById")
  39.     BusinessFunction findPartnerById;
  40.    
  41.    
  42.     @Override
  43.     public String getDescription() {
  44.         // TODO Auto-generated method stub
  45.         return null;
  46.     }
  47.  
  48.     private Long employeeId(Long userId, Long tenantId){
  49.         //building query
  50.         QueryBuilder builderEmployeeId = new QueryBuilder();
  51.         builderEmployeeId.add("SELECT A.partner_id ")
  52.                             .add(" FROM ts_user_partner A ")
  53.                             .add(" INNER JOIN t_user B on A.user_id = B.user_id ")
  54.                             .add(" WHERE A.user_id = :userLoginId AND A.tenant_id = :tenantLoginId ");
  55.        
  56.         //creating native query
  57.         Query queryEmployeeId =  adminProcessVisitPlanDao.createNativeQuery(builderEmployeeId.toString());     
  58.         queryEmployeeId.setParameter("userLoginId", userId);
  59.         queryEmployeeId.setParameter("tenantLoginId", tenantId);
  60.        
  61.         Long employeeId = Long.valueOf(queryEmployeeId.getSingleResult().toString());
  62.        
  63.         return employeeId;
  64.     }
  65.    
  66.     @SuppressWarnings("unchecked")
  67.     private Dto adminProcessVisitPlan(Dto inputDto){
  68.         //building query
  69.        
  70.         Dto output = new Dto();
  71.         QueryBuilder builderAdminProcessVisitPlanId = new QueryBuilder();
  72.         builderAdminProcessVisitPlanId.add(" SELECT admin_process_visit_plan_id ")
  73.                                          .add(" FROM sl_admin_process_visit_plan ")
  74.                                          .add(" WHERE employee_id = :employeeId AND :visitDate BETWEEN start_date AND end_date ");
  75.        
  76.         //creating native query
  77.         Query queryAdminProcessVisitPlanId = adminProcessVisitPlanDao.createNativeQuery(builderAdminProcessVisitPlanId.toString());
  78.         queryAdminProcessVisitPlanId.setParameter("employeeId",inputDto.getLong("employeeId"));
  79.         queryAdminProcessVisitPlanId.setParameter("visitDate", inputDto.getString("visitDate"));
  80.        
  81.         List<AdminProcessVisitPlan> adminProcessVisitPlanList = queryAdminProcessVisitPlanId.getResultList();
  82.         output = new Dto(adminProcessVisitPlanList.get(0));
  83.        
  84.         return output;
  85.     }
  86.    
  87.     @Override
  88.     public Dto prepare(Dto inputDto, Dto original) throws Exception {
  89.  
  90.         Long tenantLoginId = inputDto.getLong("tenantLoginId");
  91.         Long userLoginId = 1116l;
  92.         String datetime = inputDto.getString("datetime");
  93.         Long employeeId = employeeId(userLoginId, tenantLoginId);
  94.         String visitDate = DateUtil.dateNow();
  95.        
  96.         Dto adminProcessParam = new Dto();
  97.         adminProcessParam.put("employeeId", employeeId);
  98.         adminProcessParam.put("visitDate", visitDate);
  99.         Dto adminProcessDto = adminProcessVisitPlan(adminProcessParam);
  100.         Long adminProcessVisitPlanId = adminProcessDto.getLong("id");      
  101.        
  102.         Long salesmanVisitPlanId = inputDto.getLong("salesmanVisitPlanId");
  103.         Long salesmanVisitRealizationId = inputDto.getLong("salesmanVisitRealizationId");
  104.         Double paymentAmount = inputDto.getDouble("paymentAmount");
  105.         String remark = inputDto.getString("remark");
  106.         List<Dto> invoicePaymentList = inputDto.getList("invoicePaymentList");
  107.         String typePayment = inputDto.getString("typePayment");
  108.         String modePayment = inputDto.getString("modePayment");
  109.         String accountNo = inputDto.getString("accountNo");    
  110.         Dto invoiceVisitPlanDto = new Dto();       
  111.         Dto salesmanVisitPlanDto = findSalesmanVisitPlanById.execute(new Dto().put("is", salesmanVisitPlanId));
  112.         Long customerId = salesmanVisitPlanDto.getLong("customerId");
  113.         List<Dto> invoicePaymentItemList = new ArrayList<Dto>();
  114.        
  115.         Dto partnerDto = findPartnerById.execute(new Dto().put("id", customerId));
  116.         String customerCode = partnerDto.getString("partnerCode");
  117.        
  118.         String docNo = SalesConstants.PREFIX_DOC_NO_INVOICE_PAYMENT.concat("-").concat(customerCode).concat("-").concat(DateUtil.dateTimeNow());
  119.         List<Dto> invoiceBalanceVisitPlanDetailList = new ArrayList<Dto>();
  120.        
  121.         Long registerId = adminProcessDto.getLong("registerId");
  122.        
  123.         for (Dto item : invoicePaymentList) {
  124.             ValidationUtil.valBlankOrNull(item, "invoiceVisitPlanId");
  125.            
  126.             //update invoice visit plan
  127.             invoiceVisitPlanDto = findInvoiceVisitPlanById.execute(new Dto().put("id", item.getString("invoiceVisitPlanId")));
  128.            
  129.             Double outstandingAmount = invoiceVisitPlanDto.getDouble("outstandingAmount")-paymentAmount;
  130.             invoiceVisitPlanDto.put("outstandingAmount", outstandingAmount);
  131.             invoiceVisitPlanDto.put("status", SalesConstants.PAYMENT);
  132.             invoiceVisitPlanDto.put("nominalBayar", invoiceVisitPlanDto.getDouble("nominalBayar")+outstandingAmount);
  133.             invoiceVisitPlanDto.put("remark", item.getString("remark"));
  134.            
  135.             this.prepareUpdateAudit(invoiceVisitPlanDto, userLoginId, datetime);
  136.             invoicePaymentList.add(invoiceVisitPlanDto);
  137.            
  138.             //add payment item
  139.             Dto invoicePaymentItemDto = new Dto();
  140.             if (typePayment.equals("NONCASH")) {
  141.                 invoicePaymentItemDto.put("typePayment", typePayment);
  142.                 invoicePaymentItemDto.put("modePayment", modePayment);
  143.                 invoicePaymentItemDto.put("accountNo", accountNo);
  144.                 invoicePaymentItemDto.put("docNo", docNo);
  145.                 invoicePaymentItemDto.put("docDate", visitDate);
  146.                 invoicePaymentItemDto.put("dueDate", invoiceVisitPlanDto.getString("dueDate"));
  147.                 invoicePaymentItemDto.put("datePayment", visitDate);
  148.                 invoicePaymentItemDto.put("paymentAmount", outstandingAmount);
  149.                 invoicePaymentItemDto.put("remark", remark);
  150.             } else {
  151.                 invoicePaymentItemDto.put("typePayment", "");
  152.                 invoicePaymentItemDto.put("modePayment", "");
  153.                 invoicePaymentItemDto.put("accountNo", "");
  154.                 invoicePaymentItemDto.put("docNo", "");
  155.                 invoicePaymentItemDto.put("docDate", "");
  156.                 invoicePaymentItemDto.put("dueDate", "");
  157.                 invoicePaymentItemDto.put("datePayment", visitDate);
  158.                 invoicePaymentItemDto.put("paymentAmount", outstandingAmount);
  159.                 invoicePaymentItemDto.put("remark", remark);
  160.             }
  161.             this.prepareInsertAudit(invoicePaymentItemDto, userLoginId, datetime);
  162.             invoicePaymentItemList.add(invoicePaymentItemDto);
  163.            
  164.             Dto invoiceBalanceVisitPlanDetailDto = new Dto();          
  165.             invoiceBalanceVisitPlanDetailDto.put("tenantId", tenantLoginId);
  166.             invoiceBalanceVisitPlanDetailDto.put("registerId", registerId);
  167.            
  168.            
  169.            
  170. //          invoicePaymentDto.put("tenantId", tenantLoginId);
  171. //          invoicePaymentDto.put("adminProcessVisitPlanId", adminProcessVisitPlanId);
  172. //          invoicePaymentDto.put("salesmanVisitPlanId", salesmanVisitPlanId);
  173. //          invoicePaymentDto.put("salesmanVisitRealizationId", salesmanVisitRealizationId);
  174.            
  175.            
  176.            
  177.         }
  178.        
  179.        
  180.         return null;
  181.     }
  182.  
  183.     @Override
  184.     public Dto process(Dto inputDto, Dto original) throws Exception {
  185.         // TODO Auto-generated method stub
  186.         return null;
  187.     }
  188. }
Add Comment
Please, Sign In to add comment